Updated Closure Compiler to v20160911, so now we have a version that supports ECMAScript 6, but I'm not going to go bonkers on ES6 features just yet; the first feature I'm going to use is support for octal and binary constants (of the form 0onnnn and 0bnnnn)

This commit is contained in:
Jeff 2016-09-24 16:03:57 -07:00 committed by Jeff Parsons
commit b28166f493
16 changed files with 3222 additions and 3222 deletions

View file

@ -7,7 +7,7 @@ function la(a){if(ja)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){u(""+("An un
function A(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;b=this.id.indexOf(".");0>b?this.bb=this.id:(this.pb=this.id.substr(0,b),this.bb=this.id.substr(b+1));this[a]=c;this.C={ready:!1,Ba:!1,eb:!1,M:!1,error:!1};this.ab=null;this.C.error=!1;this.H={};this.u=null;this.la=d||0;B.push(this)}var na=void 0,oa={};
if(window){na||(na=window.location.search.substr(1));for(var pa,qa=/\+/g,ra=/([^&=]+)=?([^&]*)/g;pa=ra.exec(na);)oa[decodeURIComponent(pa[1].replace(qa," "))]=decodeURIComponent(pa[2].replace(qa," "))}function sa(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
function C(a){var b;b||(b=A);a.prototype=sa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var D=window.PCjs.Machines||(window.PCjs.Machines={}),B=window.PCjs.Components||(window.PCjs.Components=[])}else D={},B=[];function ta(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<B.length;c++)if(B[c].id===a)return B[c]}return null}
function E(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}function F(a,b){for(var c=G(b.parentNode,"c1pjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,g=0;g<e.length;g++){var h=e[g];if(1===h.nodeType){var k=h.getAttribute("class");if(k)for(var l=k.split(" "),m=0;m<l.length;m++)switch(k=l[m],k){case "c1pjs-binding":(k=E(h))&&k.binding&&a.T(k.type,k.binding,h,k.value),m=l.length}}}}
function E(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}function F(a,b){for(var c=G(b.parentNode,"c1pjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,g=0;g<e.length;g++){var h=e[g];if(1===h.nodeType){var l=h.getAttribute("class");if(l)for(var k=l.split(" "),m=0;m<k.length;m++)switch(l=k[m],l){case "c1pjs-binding":(l=E(h))&&l.binding&&a.T(l.type,l.binding,h,l.value),m=k.length}}}}
function G(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
A.prototype={constructor:A,parent:null,toString:function(){return this.name?this.name:this.id||this.type},T:function(a,b,c){switch(b){case "clear":return this.H[b]||(this.H[b]=c,c.onclick=function(a){return function(){a.H.print&&(a.H.print.value="")}}(this)),!0;case "print":return this.H[b]||(this.gb=this.H[b]=c,c.value="",this.l=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
this.Ya=function(a){this.l(a,this.bb)}),!0;default:return!1}},log:function(){},l:function(){},status:function(a){this.l(this.bb+": "+a)},Ya:function(a,b,c){c=c||this.type;b||u((c?c+": ":"")+a)},X:function(a){this.C.error||(this.C.ready=!1!==a,this.C.ready&&(a=this.ab,this.ab=null,a&&a()))}};function H(a,b){if(a.u){a===a.u?b|=0:b=b||a.la;var c=a.u.la&b;return!!b&&c===b||!!(c&a.u.Ne)}return!1}
@ -26,7 +26,7 @@ function Ca(a,b,c){for(var d=0;d<a.P.length;d++)b>=a.P[d][0]&&b<=a.P[d][1]&&a.P[
function M(a,b,c){void 0!==b&&(a.speed=b,a.H.setSpeed&&(a.H.setSpeed.innerHTML=a.Ra[2<=b?0:b+1]),a.l("running at "+a.Ra[b].toLowerCase()+" speed "+a.ib[b]),c&&a.ca());a.U=0;a.Na=ea();Ea(a)}f.hb=function(){};f.ca=function(){};function O(a,b,c,d){void 0!==a.H[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.H[b].innerHTML=c.slice(c.length-d).toUpperCase())}
function Fa(a){O(a,"A",a.h,2);O(a,"X",a.w,2);O(a,"Y",a.F,2);var b=Ga(a);O(a,"C",b&1?1:0);O(a,"Z",b&2?1:0);O(a,"I",b&4?1:0);O(a,"D",b&8?1:0);O(a,"B",b&16?1:0);O(a,"V",b&64?1:0);O(a,"N",b&128?1:0);O(a,"S",a.G,4);O(a,"PC",a.f,4);a.H.speed&&a.ta&&(a.H.speed.innerHTML=a.ta.toFixed(1)+"Mhz")}
function Ea(a,b){var c=30;c<a.Ia&&(c=a.Ia);c<a.Ha&&(c=a.Ha);var d=1;b&&a.speed>a.Qa&&a.ta&&(d=a.ta);d>a.La&&2>a.speed&&(d=a.La);a.jb=Math.round(1E3/30);a.ja=Math.floor(1E6/c*d);a.ra=Math.floor(1E6/30*d);a.Wa=Math.floor(1E6/a.Ia*d);a.Va=Math.floor(1E6/a.Ha*d);b||(a.R=a.ra,a.Z=a.Wa,a.V=a.Va);a.Aa=0}
function Ha(a){var b=ea(),c=a.jb;a.$&&(c=Math.round(c*a.$/a.ra));c=c-(b-a.kb);if(b=b-a.Na)a.ta=Math.round(a.U/(100*b))/10,864E5<=b&&M(a);0>c?c=0:1==a.speed?a.ta<=a.La&&(c=0):2==a.speed&&(c=0);a.Aa+=a.$;return c}
function Ha(a){var b=ea(),c=a.jb;a.$&&(c=Math.round(c*a.$/a.ra));c-=b-a.kb;if(b-=a.Na)a.ta=Math.round(a.U/(100*b))/10,864E5<=b&&M(a);0>c?c=0:1==a.speed?a.ta<=a.La&&(c=0):2==a.speed&&(c=0);a.Aa+=a.$;return c}
f.va=function(){if(I(this,!0)){this.C.na||(M(this),this.J&&this.J.start(),this.C.na=!0,this.H.run&&(this.H.run.innerHTML="Halt"),this.ca());1E6<=this.Aa&&Ea(this,!0);this.$=0;this.kb=ea();try{do{this.step(this.ja);var a=this.L-this.D;this.U+=a;this.$+=a;this.L=this.D=0;this.Z-=this.ja;0>=this.Z&&(this.Z+=this.Wa,this.hb());this.V-=this.ja;0>=this.V&&(this.V+=this.Va,Fa(this));this.R-=this.ja;if(0>=this.R){this.R+=this.ra;break}}while(this.C.na)}catch(b){this.aa();this.update();I(this,!1);ua(this,
b.stack||b.message);return}setTimeout(function(a){return function(){a.va()}}(this),Ha(this))}else this.update(),this.J&&this.J.stop(this.Na,this.U)};
f.step=function(a){var b=!0;this.b=this.g=-1;var c;if(c=a&&this.u)c=this.u,c=0<c.sa.length||0<c.wa.length||0<c.ya.length;this.L=this.D=a;do{a=this.a[this.f];var d;if(d=c){d=this.u;var e=a,g=!1;Ia(d,this.f,d.sa,"exec")?g=!0:(d.L++,d.B[e][1]++,d.xa[d.Ka++]=d.s.f,d.Ka>=d.xa.length&&(d.Ka=0));d=!!g}if(d){b=void 0;this.aa();break}this.f++;this.o[a].call(this);if(0<=this.b){this.b>=this.oa&&this.b<=this.pa&&Ca(this,this.b,this.f);if(d=c)d=this.u,e=!1,Ia(d,this.b,d.wa,"read")&&(e=!0),d=!!e;if(d){b=!1;this.aa();
@ -81,7 +81,7 @@ R.prototype.ba=function(a,b,c,d){this.a=a;this.v=b;a=c-b+1;this.g||(this.g=a);a!
function Na(a,b,c,d){if(d)a.l('Error loading ROM "'+b+'" ('+d+")");else{if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),g=e.bytes;g?a.b=g:a.b=e}catch(h){a.l('Error processing ROM "'+b+'": '+h.message);return}else for(b=c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),c=0;c<b.length;c++)a.b[c]=parseInt(b[c],16);Oa(a)}}
function Oa(a){if(!K(a))if(!a.o)a.X();else if(a.b&&a.a){var b=a.b.length;if(b!=a.g)ua(a,"ROM image size ("+r(b)+") does not match component-specified size ("+r(a.g)+")");else{for(var c=0;c<b;c++)a.a[a.v+c]=a.b[c];a.X()}}}x(function(){for(var a=G(document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new R(d);F(d,c)}});function Pa(a){A.call(this,"C1PRAM",a)}C(Pa);Pa.prototype.ba=function(a){this.a=a;this.X()};
x(function(){for(var a=G(document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Pa(d);F(d,c)}});
function Qa(a){A.call(this,"C1PKeyboard",a);this.C.M=!1;this.Ha=a.model;this.da=8;this.fb=10;this.Wa=13;this.ea=27;this.Na=this.da;this.Va=this.fb;this.Ia=this.Wa;this.$=this.ea;this.L=241;this.Z=224;this.Ra=3;this.Sa=15;this.K=1;this.D=[];this.D["break"]=this.Z;this.D.esc=this.$;this.D["ctrl-c"]=this.Ra;this.D["ctrl-o"]=this.Sa;this.b=[];this.b[49]=30464;this.b[33]=30704;this.b[50]=30208;this.b[34]=30448;this.b[51]=29952;this.b[35]=30192;this.b[52]=29696;this.b[36]=29936;this.b[53]=29440;this.b[37]=
function Qa(a){A.call(this,"C1PKeyboard",a);this.C.M=!1;this.Ha=a.model;this.da=8;this.fb=10;this.Wa=13;this.ea=27;this.Na=this.da;this.Va=this.fb;this.Ia=this.Wa;this.$=this.ea;this.L=241;this.Z=224;this.Ra=3;this.Sa=15;this.K=1;this.D={};this.D["break"]=this.Z;this.D.esc=this.$;this.D["ctrl-c"]=this.Ra;this.D["ctrl-o"]=this.Sa;this.b=[];this.b[49]=30464;this.b[33]=30704;this.b[50]=30208;this.b[34]=30448;this.b[51]=29952;this.b[35]=30192;this.b[52]=29696;this.b[36]=29936;this.b[53]=29440;this.b[37]=
29680;this.b[54]=29184;this.b[38]=29424;this.b[55]=28928;this.b[39]=29168;this.b[56]=26368;this.b[40]=26608;this.b[57]=26112;this.b[41]=26352;this.b[48]=25856;this.b[58]=25600;this.b[42]=25840;this.b[45]=25344;this.b[61]=25584;this.b[46]=22272;this.b[62]=22512;this.b[108]=22016;this.b[76]=22256;this.b[92]=22256;this.b[111]=21760;this.b[79]=22E3;this.b[this.Na]=22E3;this.b[this.Va]=21504;this.b[this.Ia]=21248;this.b[119]=18176;this.b[87]=18416;this.b[101]=17920;this.b[69]=18160;this.b[114]=17664;this.b[82]=
17904;this.b[116]=17408;this.b[84]=17648;this.b[121]=17152;this.b[89]=17392;this.b[117]=16896;this.b[85]=17136;this.b[105]=16640;this.b[73]=16880;this.b[115]=14080;this.b[83]=14320;this.b[100]=13824;this.b[68]=14064;this.b[102]=13568;this.b[70]=13808;this.b[103]=13312;this.b[71]=13552;this.b[104]=13056;this.b[72]=13296;this.b[106]=12800;this.b[74]=13040;this.b[107]=12544;this.b[75]=12784;this.b[91]=12784;this.b[120]=9984;this.b[88]=10224;this.b[99]=9728;this.b[67]=9968;this.b[118]=9472;this.b[86]=
9712;this.b[98]=9216;this.b[66]=9456;this.b[110]=8960;this.b[78]=9200;this.b[94]=9200;this.b[109]=8704;this.b[77]=8944;this.b[93]=8944;this.b[44]=8448;this.b[60]=8688;this.b[113]=5888;this.b[81]=6128;this.b[97]=5632;this.b[65]=5872;this.b[122]=5376;this.b[90]=5616;this.b[32]=5120;this.b[47]=4864;this.b[63]=5104;this.b[59]=4608;this.b[43]=4848;this.b[112]=4352;this.b[80]=4592;this.b[64]=4592;this.b[this.L]=1536;this.b[this.$]=1280;this.b[240]=512;this.b[242]=256;this.b[244]=0;this.reset()}C(Qa);
@ -92,16 +92,16 @@ f.ia=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.u=L(b,"debugger"))};
function U(a,b,c){a.B=b;Va(a,c||300)}function Va(a,b){if(0<a.B.length){var c=a.B.charCodeAt(0);10==c&&(c=13);65<=c&&90>=c&&(c+=32);a.B=a.B.substr(1);Sa(a,c)}0<a.B.length&&setTimeout(function(a){return function(){Va(a,b)}}(a),b)}
function Ra(a,b,c){var d,e=!c;b=b.keyCode;c&&(a.Aa=b);16==b?(a.g&=-5,c&&(a.g|=4),b+=224,e=!1):18==b?(a.g&=-3,c&&(a.g|=2),b+=224,e=!1):b==a.L-224?(a.g&=-65,c&&(a.g|=64),b+=224,e=!1):20==b?(c=!c,a.g&=~a.K,c&&(a.g|=a.K),b+=224,e=!1):91==b?(a.g&=-9,c&&(a.g|=8),e=!1,d=!0):d=9==b?e=!1:b==a.ea||b==a.da?c?!Sa(a,b):!1:!0;e&&(a.g&=-9,a.U||b!=a.Aa||Ua(a));void 0===d&&(d=!T(a,b,c,2));a.u&&H(a.u,a.u.za)&&a.u.message("key"+(c?"Down":"Up")+"("+q(b)+"): "+(d?"pass":"consume"));return d}
function Sa(a,b){var c=!1;b==a.Z?a.J&&(a.J.reset(!0),c=!0):(a.U&&65<=b&&90>=b&&(b+=32),Ua(a,b),T(a,b,!0,0)&&(a.s.speed==a.s.cb?T(a,b,!1,1):(c=!1,a.v[b]&&(clearTimeout(a.v[b]),c=!0),c=Ta(a,c),a.v[a.A=b]=setTimeout(function(a){return function(){T(a,b,!1,3)}}(a),c),a.u&&H(a.u,a.u.za)&&a.u.message("keyPressSimulate("+q(b)+"): setTimeout()")),c=!0));a.u&&H(a.u,a.u.za)&&a.u.message("keyPressSimulate("+q(b)+"): "+(c?"true":"false"));return c}
function T(a,b,c,d){var e=!1;c||(a.v[b]=null,a.A==b&&(a.A=0));var g=0,h=a.b[b];void 0===h&&(1<=b&&26>=b&&(b+=64,g=a.L),h=a.b[b]);void 0!==h&&(b=h>>12,e=h>>8&15,g||(g=h&255),c?(a.o[b]|=1<<e,a.o[0]=g==a.L?a.o[0]|64:240==g?a.o[0]|4:242==g?a.o[0]|2:a.o[0]&-71):(a.o[b]&=~(1<<e),a.o[0]&=-71,a.o[0]|=a.g&70),c=0==d&&!a.P.length,a.P.push(a.o.slice()),Wa(a,c),e=!0);return e}f.S=function(){};f.W=function(a){this.oa=this.s.S(a)^this.R;this.V++;Wa(this,!1,a)};
function T(a,b,c,d){var e=!1;c||(a.v[b]=null,a.A==b&&(a.A=0));var g=0,h=a.b[b];void 0===h&&(1<=b&&26>=b&&(b+=64,g=a.L),h=a.b[b]);void 0!==h&&(b=h>>12,e=h>>8&15,g||(g=h&255),c?(a.o[b]|=1<<e,a.o[0]=g==a.L?a.o[0]|64:240==g?a.o[0]|4:242==g?a.o[0]|2:a.o[0]&-71):(a.o[b]&=~(1<<e),a.o[0]&=-71,a.o[0]|=a.g&70),c=!d&&!a.P.length,a.P.push(a.o.slice()),Wa(a,c),e=!0);return e}f.S=function(){};f.W=function(a){this.oa=this.s.S(a)^this.R;this.V++;Wa(this,!1,a)};
function Wa(a,b,c){var d=Ka(a.s);b||(a.s.speed==a.s.cb?b=void 0!==c&&32<=a.V:(b=d-a.qa,b=0>b||8192<=b));b&&(b=a.P.shift(),void 0!==b&&(a.ja=b),a.V=0,a.qa=d);for(b=d=0;8>b;b++)a.oa&1<<b&&(d|=a.ja[b]);d^=a.R;if(void 0!==c)a.a[c]=d;else if(c=a.ra,d!=a.pa)for(;c<a.kb;c++)a.a[c]=d;a.pa=d}x(function(){for(var a=G(document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Qa(d);F(d,c)}});
function Xa(a,b,c,d){A.call(this,"C1PVideo",a);this.ja=a.model;this.$=a.charCols;this.da=a.charRows;this.pa=a.screenWidth;this.qa=a.screenHeight;this.B=a.charWidth;this.D=a.charHeight;Ya(this);this.A=b;this.P=c;this.o=d;b=["","moz","ms","webkit"];a=a.smoothing;(c=oa.smoothing)&&(a="true"==c);if(null!=a)for(c=0;c<b.length;c++)if(d=(d=b[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.P[d]){this.P[d]=a;break}}C(Xa);f=Xa.prototype;
f.reset=function(a){this.Ma(this.ja);if(this.a)for(var b=this.K;b<this.R;b++)this.a[b]=a?Math.floor(256*Math.random()):32};f.T=function(a,b,c){switch(b){case "refresh":return this.H[b]=c,c.onclick=function(a){return function(){Za(a);za(a)}}(this),!0}return!1};f.ba=function(a,b,c,d){this.a=a;this.K=b;this.oa=c-b+1;this.R=this.K+this.oa;d&&(this.s=d,Aa(d,56832,56832,this,this.S),N(d,56832,56832,this,this.W));this.reset(!0)};
function Ya(a,b,c,d,e){a.J=void 0!==b?b:a.$;a.ra=void 0!==c?c:a.da;a.g=a.J*a.ra;a.R=a.K+a.g;a.Z=void 0!==d?d:0;a.ea=void 0!==e?e:c;a.U=Math.floor(a.pa/a.J);a.V=Math.floor(a.qa/a.ea)}f.ca=function(){this.A.focus()};f.Ma=function(a){this.N=a;600==this.N?(Ya(this,this.$,this.da,3,25),1024==this.g&&this.s&&(this.v=this.R+this.g-1,N(this.s,this.v,this.v,this,this.Jb))):(this.l("updated video model: "+this.N),Ya(this,64,32));Za(this);za(this)};
f.ia=function(a,b){if(a&&!this.C.M&&K(this)){if(this.C.M=!0,this.u=L(b,"debugger"),this.b=L(b,"keyboard"))this.b.T("canvas","keyDown",this.A),this.b.T("canvas","keyPress",this.A),this.b.T("canvas","keyUp",this.A)}else!a&&this.C.M&&(this.C.M=!1)};f.X=function(){this.B||(this.B=Math.floor(this.o.width/16));this.D||(this.D=Math.floor(this.o.height/16));A.prototype.X.call(this)};
f.S=function(a,b){var c=this.s.S(a);void 0!==b&&this.u&&S(this.u,this,a,b,this.u.Za);this.s.W(a,c&127|(Math.floor(Ka(this.s)/8333)&1?128:0))};f.W=function(a,b){void 0!==b&&this.u&&S(this.u,this,a,b,this.u.Za)};
f.Jb=function(a,b){if(void 0!==b){this.u&&S(this.u,this,a,b,this.u.Za,!0);this.Ma(540);this.b&&this.b.Ma(542);var c=this.s,d=c.K,e=[],g=Ba(d,this.v,this.v,this,this.Jb);if(0<=g){e.push(d[g][0]);e.push(d[g][1]);d.splice(g,1);for(var h=65536,k=0,g=0;g<d.length;g++)h>d[g][0]&&(h=d[g][0]),k<d[g][1]&&(k=d[g][1]);e.push(h);e.push(k)}4==e.length&&(c.da=e[2],c.ea=e[3])}};function Za(a){a.L=Array(a.g);for(var b=0;b<=a.g;b++)a.L[b]=-1}
f.Jb=function(a,b){if(void 0!==b){this.u&&S(this.u,this,a,b,this.u.Za,!0);this.Ma(540);this.b&&this.b.Ma(542);var c=this.s,d=c.K,e=[],g=Ba(d,this.v,this.v,this,this.Jb);if(0<=g){e.push(d[g][0]);e.push(d[g][1]);d.splice(g,1);for(var h=65536,l=0,g=0;g<d.length;g++)h>d[g][0]&&(h=d[g][0]),l<d[g][1]&&(l=d[g][1]);e.push(h);e.push(l)}4==e.length&&(c.da=e[2],c.ea=e[3])}};function Za(a){a.L=Array(a.g);for(var b=0;b<=a.g;b++)a.L[b]=-1}
function za(a){var b=0;if(a.C.M)for(;b<a.g;){var c=a.a[a.K+b];if(a.L[b]!=c){var d=Math.floor(b/a.J);if(d>=a.Z&&(d-=a.Z,d<a.ea)){var e=c*a.B;a.P.drawImage(a.o,e%a.o.width,Math.floor(e/a.o.width)*a.D,a.B,a.D,b%a.J*a.U,d*a.V,a.U,a.V)}a.L[b]=c}b++}}
x(function(){for(var a=G(document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=E(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","c1pjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.setAttribute("contenteditable","true");e.setAttribute("autocapitalize","off");e.setAttribute("autocorrect","off");e.style.backgroundColor=d.screenColor;
x(function(){for(var a=G(document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=E(c),e=document.createElement("canvas");if(!e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","c1pjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.setAttribute("contenteditable","true");e.setAttribute("autocapitalize","off");e.setAttribute("autocorrect","off");e.style.backgroundColor=d.screenColor;
e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(e.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight));c.appendChild(e);var g=new Image,h=e.getContext("2d"),e=new Xa(d,e,h,g);g.onload=function(a){return function(){a.X()}}(e,d.charSet);g.src=d.charSet;F(e,c)}});
function $a(a){A.call(this,"C1PSerialPort",a);this.C.M=!1;this.D=a.demo;this.reset(!0)}C($a);f=$a.prototype;f.reset=function(a){if(a||2!=this.o){this.v=-1;this.A=0;this.g="";if(this.D){a=1;if(this.pb){var b=this.pb.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.g='10 PRINT "HELLO OSI #'+a+'"\n'}this.B=!0;this.o=0}};f.start=function(){this.b&&this.D&&(U(this.b," C\n\n",3E3),setTimeout(function(a){return function(){a.o=1;U(a.b,"LOAD\n")}}(this),12E3));this.D=!1};
f.T=function(a,b,c){var d=this;switch(b){case "listSerial":return this.H[b]=c,!0;case "loadSerial":return this.H[b]=c,c.onclick=function(){d.H.listSerial&&t(d.H.listSerial.value,function(a,b,c){ab(d,a,b,c)})},!0;case "mountSerial":return!v("Mobi")&&window&&"FileReader"in window?(this.H[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){ab(d,
@ -109,17 +109,17 @@ b.name,c.result.toString(),0)};c.readAsText(b);return!1}):c.parentNode.removeChi
function ab(a,b,c,d){if(c){a.A=0;a.g=c;a.B=!0;a.o=0;if(-1!==b.indexOf(".json",b.length-5))try{d="";var e=eval("("+c+")").bytes;for(c=0;c<e.length;c++)d+=String.fromCharCode(e[c]);a.g=d;a.B=!1}catch(g){a.l('Error processing file "'+b+'": '+g.message);return}a.J&&a.b&&a.s.C.na?(a.l("auto-loading "+b),a.s.ca(),"."!=a.g.charAt(0)?(a.o=1,U(a.b,"NEW\nLOAD\n")):(a.o=2,a.J.reset(!0),U(a.b,"ML"))):a.l(b+" ready to load")}else a.l('Error loading file "'+b+'" ('+d+")")}
f.S=function(a,b){void 0!==b&&(a&1?bb(this):this.g&&!this.A&&bb(this))};f.W=function(a,b){void 0!==b&&this.u&&S(this.u,this,a,b,this.u.Ob,!0)};function bb(a){if(void 0!==a.g){a.v=-1;if(a.A<a.g.length){var b=a.g.charCodeAt(a.A++)&255;a.B&&10==b&&(b=13);a.v=b}else a.g="",a.A=0,1==a.o&&a.b&&U(a.b," \nRUN\n"),a.o=0;for(b=a.N+0;b<a.K;b+=2)a.a[b]=0<=a.v?1:0;for(b=a.N+1;b<a.K;b+=2)a.a[b]=0<=a.v?a.v:0}}
x(function(){for(var a=G(document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new $a(d);F(d,c)}});function cb(a){A.call(this,"C1PDiskController",a);this.C.M=!1;this.reset(!0)}C(cb);f=cb.prototype;f.reset=function(a){db(this);this.b=-1;a&&(this.g=[],this.g[0]={Oe:0,qb:40,Pb:!0,Ea:20,ma:0,Da:-1,Ua:[]})};
function db(a){a.K={I:64,read:function(){},update:function(a){return function(c){void 0!==c&&(this.I=c);a.B.I&4||V(a,0,this)}}(a)};a.o={I:255,read:function(){this.update()},update:function(a){return function(c){void 0===c?c=a.o.I:eb(a,c,a.A.I);c=(c|190)&-2;if(0<=a.b&&a.g[a.b].Ua.length){var d=a.g[a.b];d.Pb&&(c&=-33);d.ma||(c&=-3);10>=--d.Ea&&(0<d.Ea?(c&=-129,fb(a)):(d.Ea=100,0<=a.b&&(a.g[a.b].Da=0,gb(a))))}this.I=c;a.B.I&4&&V(a,0,this)}}(a)};a.B={I:0,read:function(){},update:function(a){return function(c){void 0!==
c&&(this.I=c&-193);V(a,1,this);a.o.update();a.K.update()}}(a)};a.L={I:255,read:function(){},update:function(a){return function(c){void 0!==c&&(this.I=c);a.D.I&4||V(a,2,this)}}(a)};a.A={I:255,read:function(){},update:function(a){return function(c){void 0===c?c=a.A.I:eb(a,a.o.I,c);if(0<=a.b&&a.b<a.g.length){var d=a.g[a.b];d.Ua.length&&a.A.I&8&&!(c&8)&&(c&4?d.ma--:d.ma++,a.u&&H(a.u,a.u.Ga)&&a.u.message("stepping "+(c&4?"down":"up")+" to track "+d.ma),d.ma>=d.qb&&(d.ma=d.qb),0>d.ma&&(d.ma=0),d.Ea=20,
a.o.update(a.o.I|128),fb(a))}this.I=c;a.D.I&4&&V(a,2,this)}}(a)};a.D={I:0,read:function(){},update:function(a){return function(c){void 0!==c&&(this.I=c&-193);V(a,3,this);a.A.update();a.L.update()}}(a)};a.P={I:0,read:function(){},update:function(a){return function(c){void 0!==c&&(3==(c&3)&&(a.v.I=14),this.I=c);a.v.update()}}(a)};a.v={I:14,read:function(){},update:function(a){return function(c){void 0===c&&(c=a.v.I);c&=-2;0<=a.b&&0<=a.g[a.b].Da&&(c|=1);this.I=c;V(a,16,this)}}(a)};a.N={I:0,read:function(a){return function(){gb(a)}}(a),
update:function(a){return function(c){void 0!==c&&(this.I=c);V(a,17,this)}}(a)};a.R={I:0,read:function(){},update:function(){return function(){}}(a)}}f.T=function(a,b,c){switch(b){case "listDisk":return this.H[b]=c,!0;case "loadDisk":return this.H[b]=c,c.onclick=function(a){return function(){if(a.H.listDisk){var b=a.H.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.l("loading "+aa(b)+"...");t(c,function(b,c,e){hb(a,b,c,e)})}}}(this),!0}return!1};
function db(a){a.K={I:64,read:function(){},update:function(a){return function(b){void 0!==b&&(this.I=b);a.B.I&4||V(a,0,this)}}(a)};a.o={I:255,read:function(){this.update()},update:function(a){return function(b){void 0===b?b=a.o.I:eb(a,b,a.A.I);b=(b|190)&-2;if(0<=a.b&&a.g[a.b].Ua.length){var c=a.g[a.b];c.Pb&&(b&=-33);c.ma||(b&=-3);10>=--c.Ea&&(0<c.Ea?(b&=-129,fb(a)):(c.Ea=100,0<=a.b&&(a.g[a.b].Da=0,gb(a))))}this.I=b;a.B.I&4&&V(a,0,this)}}(a)};a.B={I:0,read:function(){},update:function(a){return function(b){void 0!==
b&&(this.I=b&-193);V(a,1,this);a.o.update();a.K.update()}}(a)};a.L={I:255,read:function(){},update:function(a){return function(b){void 0!==b&&(this.I=b);a.D.I&4||V(a,2,this)}}(a)};a.A={I:255,read:function(){},update:function(a){return function(b){void 0===b?b=a.A.I:eb(a,a.o.I,b);if(0<=a.b&&a.b<a.g.length){var c=a.g[a.b];c.Ua.length&&a.A.I&8&&!(b&8)&&(b&4?c.ma--:c.ma++,a.u&&H(a.u,a.u.Ga)&&a.u.message("stepping "+(b&4?"down":"up")+" to track "+c.ma),c.ma>=c.qb&&(c.ma=c.qb),0>c.ma&&(c.ma=0),c.Ea=20,
a.o.update(a.o.I|128),fb(a))}this.I=b;a.D.I&4&&V(a,2,this)}}(a)};a.D={I:0,read:function(){},update:function(a){return function(b){void 0!==b&&(this.I=b&-193);V(a,3,this);a.A.update();a.L.update()}}(a)};a.P={I:0,read:function(){},update:function(a){return function(b){void 0!==b&&(3==(b&3)&&(a.v.I=14),this.I=b);a.v.update()}}(a)};a.v={I:14,read:function(){},update:function(a){return function(b){void 0===b&&(b=a.v.I);b&=-2;0<=a.b&&0<=a.g[a.b].Da&&(b|=1);this.I=b;V(a,16,this)}}(a)};a.N={I:0,read:function(a){return function(){gb(a)}}(a),
update:function(a){return function(b){void 0!==b&&(this.I=b);V(a,17,this)}}(a)};a.R={I:0,read:function(){},update:function(){return function(){}}(a)}}f.T=function(a,b,c){switch(b){case "listDisk":return this.H[b]=c,!0;case "loadDisk":return this.H[b]=c,c.onclick=function(a){return function(){if(a.H.listDisk){var b=a.H.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.l("loading "+aa(b)+"...");t(c,function(b,c,d){hb(a,b,c,d)})}}}(this),!0}return!1};
f.ba=function(a,b,c,d){this.a=a;this.J=b;if(this.s=d)Aa(d,b,c,this,this.S),N(d,b,c,this,this.W);this.X()};f.ia=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.u=L(b,"debugger"))};
function hb(a,b,c,d){if(d)a.l("disk load error ("+d+")");else{d=[];a.l("mounting "+b+"...");try{if(d=eval("("+c+")"),d.length)if(d[0].length){var e=d[0];if(void 0===e[0].trackNum)a.l("data error: "+e[0]);else if(a.g[0]){for(c=0;c<e.length;c++){var g,h=e[c],k=h.sectors;if(void 0===(g=h.trackNum)||void 0===k)throw Error("track "+c+" missing data");g!=c&&u("track "+g+" out of order (expected "+c+")");d=[];var l,m,n;if(g){ib(d,h,"trackSig");jb(d,h);W(d,h,"trackType");for(var y=0;y<k.length;y++){l=k[y];
m=l.sectorData;W(d,l,"sectorSig");W(d,l,"sectorNum");W(d,l,"sectorPages");for(n=0;n<m.length;n++)d.push(m[n]);ib(d,l,"sectorEndSig")}}else for(l=k[0],m=l.sectorData,W(d,h,"trackLoad",2),W(d,l,"sectorPages"),n=0;n<m.length;n++)d.push(m[n]);e[g].Ib=d;a.u&&H(a.u,a.u.Ga)&&a.u.message("track "+g+": "+d.length+" bytes")}a.g[0].Ua=e;a.l("mount of "+b+" complete")}else a.l("no available drives")}else a.l("no tracks: "+b);else a.l("no data: "+b)}catch(Bb){a.l("disk data error: "+Bb.message)}}}
function hb(a,b,c,d){if(d)a.l("disk load error ("+d+")");else{d=[];a.l("mounting "+b+"...");try{if(d=eval("("+c+")"),d.length)if(d[0].length){var e=d[0];if(void 0===e[0].trackNum)a.l("data error: "+e[0]);else if(a.g[0]){for(c=0;c<e.length;c++){var g,h=e[c],l=h.sectors;if(void 0===(g=h.trackNum)||void 0===l)throw Error("track "+c+" missing data");g!=c&&u("track "+g+" out of order (expected "+c+")");d=[];var k,m,n;if(g){ib(d,h,"trackSig");jb(d,h);W(d,h,"trackType");for(var y=0;y<l.length;y++){k=l[y];
m=k.sectorData;W(d,k,"sectorSig");W(d,k,"sectorNum");W(d,k,"sectorPages");for(n=0;n<m.length;n++)d.push(m[n]);ib(d,k,"sectorEndSig")}}else for(k=l[0],m=k.sectorData,W(d,h,"trackLoad",2),W(d,k,"sectorPages"),n=0;n<m.length;n++)d.push(m[n]);e[g].Ib=d;a.u&&H(a.u,a.u.Ga)&&a.u.message("track "+g+": "+d.length+" bytes")}a.g[0].Ua=e;a.l("mount of "+b+" complete")}else a.l("no available drives")}else a.l("no tracks: "+b);else a.l("no data: "+b)}catch(Bb){a.l("disk data error: "+Bb.message)}}}
function jb(a,b){var c=b.trackNum;if(void 0===c)throw Error("missing bcd value: trackNum");a.push(Math.floor(c/10)<<4|c%10)}function W(a,b,c,d){b=b[c];if(void 0===b)throw Error("missing binary value: "+c);2==d&&a.push(b>>8&255);a.push(b&255)}function ib(a,b,c){b=b[c];if(void 0===b)throw Error("missing signature: "+c);for(c=0;c<b.length;c++)a.push(b.charCodeAt(c))}
function kb(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case 0:a=a.B.I&4?a.o:a.K;break;case 1:a=a.B;break;case 2:a=a.D.I&4?a.A:a.L;break;case 3:a=a.D;break;case 16:a=c?a.P:a.v;break;case 17:a=a.N;break;default:a=a.R}return a}f.S=function(a,b){if(void 0!==b){var c=kb(this,a-this.J,!1);this.u&&S(this.u,this,a,b,this.u.Ga,!1,c.Hb);c.read()}};
f.W=function(a,b){if(void 0!==b){var c=this.s.S(a),d=kb(this,a-this.J,!0);if(this.u&&H(this.u,this.u.Ga|this.u.ob)&&(S(this.u,this,a,b,this.u.Ga,!0,d.Hb),d.Mb))for(var e=128,g=d.I^c;g&&e;)g&e&&this.u.message(" changed "+d.Hb+"."+d.Mb[e]+" to "+(c&e?"1":"0")),e>>=1;d.update(c)}};function eb(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&32||(d|=2),a.o.I&64||(d|=1));a.b!=d&&(a.b=d,a.v.update())}function fb(a){0<=a.b&&(a.g[a.b].Da=-1,a.N.update(255),a.v.update())}
function gb(a){var b=null;if(0<=a.b){var b=a.g[a.b],c=b.Ua[b.ma];void 0!==c&&(0<=b.Da&&b.Da<c.Ib.length?(b.Ea=100,b=c.Ib[b.Da++],a.N.update(b),a.v.update()):(b.Ea=10,fb(a)))}}function V(a,b,c){a.s.W(b+a.J,c.I)}x(function(){for(var a=G(document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new cb(d);F(d,c)}});
function gb(a){var b;if(0<=a.b){b=a.g[a.b];var c=b.Ua[b.ma];void 0!==c&&(0<=b.Da&&b.Da<c.Ib.length?(b.Ea=100,b=c.Ib[b.Da++],a.N.update(b),a.v.update()):(b.Ea=10,fb(a)))}}function V(a,b,c){a.s.W(b+a.J,c.I)}x(function(){for(var a=G(document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new cb(d);F(d,c)}});
function lb(a){A.call(this,"C1PDebugger",a);this.u=this;this.L=-1;this.ua=0;this.mb=null;this.Xa=!1;this.ha=0;this.sa=[];this.wa=[];this.ya=[];this.Ka=0;this.xa=[];this.B=[];this.ob=1;this.za=16;this.Za=32;this.Ga=64;this.Ob=128;this.la=this.Z=0;this.Ta={port:1,kbd:16,video:32,disk:64,serial:128};this.Pa=28;this.$a=56;this.Ja="ADC AND ASL BCC BCS BEQ BIT BMI BNE BPL BRK BVC BVS CLC CLD CLI CLV CMP CPX CPY DEC DEX DEY EOR INC INX INY JMP JSR LDA LDX LDY LSR NOP ORA PHA PHP PLA PLP ROL ROR RTI RTS SBC SEC SED SEI STA STX STY TAX TAY TSX TXA TXS TYA SIM .DB".split(" ");
this.V=["HLT","MSG"];mb(this,!0);this.ga=[[10],[34,1,this.D],[this.$a,1],[],[],[34,1,this.b],[2,1,this.b],[],[36],[34,1,this.v],[2,0,this.P],[],[],[34,2,this.O],[2,2,this.O],[],[9,1,this.fa],[34,1,this.J],[],[],[],[34,1,this.g],[2,1,this.g],[],[13],[34,2,this.A],[],[],[],[34,2,this.o],[2,2,this.o],[],[this.Pa,2,this.Oa],[1,1,this.D],[],[],[6,1,this.b],[1,1,this.b],[39,1,this.b],[],[38],[1,1,this.v],[39,0,this.P],[],[6,2,this.O],[1,2,this.O],[39,2,this.O],[],[7,1,this.fa],[1,1,this.J],[],[],[],[1,
1,this.g],[39,1,this.g],[],[44],[1,2,this.A],[],[],[],[1,2,this.o],[39,2,this.o],[],[41],[23,1,this.D],[],[],[],[23,1,this.b],[32,1,this.b],[],[35],[23,1,this.v],[32,0,this.P],[],[27,2,this.Oa],[23,2,this.O],[32,2,this.O],[],[11,1,this.fa],[23,1,this.J],[],[],[],[23,1,this.g],[32,1,this.g],[],[15],[23,2,this.A],[],[],[],[23,2,this.o],[32,2,this.o],[],[42],[0,1,this.D],[],[],[],[0,1,this.b],[40,1,this.b],[],[37],[0,1,this.v],[40,0,this.P],[],[27,2,this.nb],[0,2,this.O],[40,2,this.O],[],[12,1,this.fa],
@ -134,34 +134,34 @@ f.va=function(){if(!ob(this))return!1;this.s.va();return!0};f.step=function(a){i
f.reset=function(){var a;this.xa.length||(this.xa=Array(1E3));for(a=0;a<this.xa.length;a++)this.xa[a]=-1;this.B.length||(this.B=Array(256));for(a=0;a<this.B.length;a++)this.B[a]=[a,0];this.L&&this.update();this.L=0};f.start=function(){this.Ca||this.l("running")};f.stop=function(a,b){if(!this.Ca&&(this.l("stopped"),b)){var c=ea();this.l(c-a+"ms ("+b+" cycles)")}this.update();this.ca();this.Ca||(this.L=0);rb(this,this.s.f)};function sb(a,b){return a+(b<<24>>24)}
f.S=function(a){var b;a>=this.N&&a<this.Fa&&(Ca(this.s,a),b=this.a[this.N+a],b&=255);return b};f.W=function(a,b){a<this.N||a>=this.Fa?this.l("invalid address: "+r(a)):(this.a[this.N+a]=b&255,Da(this.s,a),this.s.update())};function tb(a,b){X(a.sa,b,void 0)||a.sa.push(b);return!0}function X(a,b,c){for(var d=!1,e=0;e<a.length;e++)if(a[e]==b){c&&a.splice(e,1);d=!0;break}return d}function ub(a,b){void 0!==b&&(rb(a,a.K),tb(a,b)&&(a.K=b))}
function rb(a,b){void 0!==a.K&&b==a.K&&X(a.sa,a.K,!0)&&(a.K=void 0);a.Ca=!1}function Ia(a,b,c,d){for(var e=!1,g=0;g<c.length;g++)if(c[g]==b){b!=a.K&&a.l("breakpoint hit: "+r(b)+" ("+d+")");e=!0;break}return e}
function vb(a,b,c){var d=p(b,4),e=a.S(b++),g=a.ga[e],h=void 0===e?0:e,k=[],l=void 0===g[1]?0:g[1];do{d+=" "+p(h,2);if(!l--)break;h=a.S(b++);if(void 0===h)break;k.push(h)}while(1);void 0===g[0]&&(g=[57,1,a.v],k.push(e));var d=(d+" ").substr(0,15),d=d+a.Ja[g[0]],m=null;if(void 0!==g[2]){l=g[2];m=a.ka[l];if(1==g[1]&&l==a.fa)m=m.replace(/nnnn/,p(sb(b,h=k.pop()),4));else for(;k.length;)m=m.replace(/nn/,p(h=k.pop(),2));l==a.v&&1==g[1]&&32<=h&&128>h&&(m+=" ;'"+String.fromCharCode(h)+"'")}if(e==a.s.$a&&
(h<a.V.length&&(m=a.V[h]),h==a.s.Kb)){l=0;for(m='"';h=a.S(b++);)16>l?m+=String.fromCharCode(h):16==l&&(m+="\u2026"),l++;m+='"'}m&&(d+=" "+m);c&&(d=(d+" ").substr(0,30),d+=";"+c.toString());a.$=b;return d}
function vb(a,b,c){var d=p(b,4),e=a.S(b++),g=void 0===e?0:e,h=a.ga[g],l=[],k=void 0===h[1]?0:h[1];do{d+=" "+p(g,2);if(!k--)break;g=a.S(b++);if(void 0===g)break;l.push(g)}while(1);void 0===h[0]&&(h=[57,1,a.v],l.push(e));var d=(d+" ").substr(0,15),d=d+a.Ja[h[0]],m=null;if(void 0!==h[2]){k=h[2];m=a.ka[k];if(1==h[1]&&k==a.fa)m=m.replace(/nnnn/,p(sb(b,g=l.pop()),4));else for(;l.length;)m=m.replace(/nn/,p(g=l.pop(),2));k==a.v&&1==h[1]&&32<=g&&128>g&&(m+=" ;'"+String.fromCharCode(g)+"'")}if(e==a.s.$a&&
(g<a.V.length&&(m=a.V[g]),g==a.s.Kb)){k=0;for(m='"';g=a.S(b++);)16>k?m+=String.fromCharCode(g):16==k&&(m+="\u2026"),k++;m+='"'}m&&(d+=" "+m);c&&(d=(d+" ").substr(0,30),d+=";"+c.toString());a.$=b;return d}
function Y(a,b){var c=a.ua;if(void 0!==b){var d=16;"$"==b.charAt(0)?b=b.substr(1):"0x"==b.substr(0,2)?b=b.substr(2):"."==b.charAt(b.length-1)&&(d=10,b=b.substr(0,b.length-1));c=parseInt(b,d);isNaN(c)&&(a.l("invalid base-"+d+" address: "+b),c=void 0)}void 0!==c&&(c<a.N||c>=a.Fa)&&(a.l("address out of range: "+p(c)),c=void 0);return c}
function wb(a,b){if("?"==b)a.l("\nfrequency commands:"),a.l("clear\tclear all frequency counts");else{var c=0,d;if(a.B)if("clear"==b){for(d=0;d<a.B.length;d++)a.B[d]=[d,0];a.l("frequency data cleared");c++}else if(void 0!==b)a.l("unknown frequency command: "+b),c++;else{var e=a.B.slice();e.sort(function(a,b){return b[1]-a[1]});for(d=0;d<e.length;d++){var g=e[d][0],h=e[d][1];h&&(a.l(a.Ja[a.ga[g][0]]+" ("+q(g)+"): "+h+" times"),c++)}}c||a.l("no frequency data available")}}
function pb(a,b,c,d){var e=Y(a,b);if(void 0!==e){void 0===d&&(d=1);b=a.Fa;if(void 0!==c){b=Y(a,c);if(void 0===b||b<e)return;if(256<b-e){a.l("range too large");return}b++;d=-1}for(e!=a.ua&&a.l();d--&&e<b;)c=vb(a,e,J(a,!1)||a.Ca?a.L:0),a.l(c),a.ua=e=a.$}}
function qb(a,b){if(b&&"?"==b[1])a.l("\nregister commands:"),a.l("r to display all"),a.l("r [target=value] to modify"),a.l("supported targets:"),a.l("A,X,Y,S,PC and flags C,Z,D,V,N");else{var c=!0;if(void 0!==b&&1<b.length){var c=!1,d=b[1],e=null,g=d.indexOf("=");if(0<g)e=d.substr(g+1),d=d.substr(0,g);else if(2<b.length)e=b[2];else{a.l("missing value for "+b[1]);return}g=parseInt(e,16);if(isNaN(g)){a.l("invalid value: "+e);return}switch(d.toUpperCase()){case "A":a.s.h=g&255;break;case "X":a.s.w=g&
255;break;case "Y":a.s.F=g&255;break;case "C":a.s.c=g?256:0;break;case "Z":a.s.j=g?0:1;break;case "D":g?La(a.s):Ma(a.s);break;case "V":g?(d=a.s,d.v=0,d.A=128):(d=a.s,d.v=0,d.A=0);break;case "N":a.s.i=g?128:0;break;case "S":if(256!=(g&-256)){a.l("invalid stack pointer: "+e);return}a.s.G=g;break;case "PC":c=!0;a.s.f=g&65535;a.ua=a.s.f;break;default:a.l("unknown register: "+d);return}a.s.update()}a.l("A="+p(a.s.h,2)+" X="+p(a.s.w,2)+" Y="+p(a.s.F,2)+" P="+p(Ga(a.s),2)+" S="+p(a.s.G,4)+" PC="+p(a.s.f,
4));c&&pb(a,p(a.ua=a.s.f,4))}}function xb(a,b){var c=void 0===b?1:parseInt(b,10),d=1==c?0:1;fa(c,function(a){return function(){return I(a,!0)&&a.step(d)}}(a),function(a){return function(){I(a,!1)}}(a))}
function nb(a,b){b.length||(a.Xa?(a.l("ended assemble @"+p(a.ha,4)),a.ua=a.ha,a.Xa=!1):a.mb&&(b=a.mb));if(K(a)&&!J(a,!0)&&0<b.length){a.Xa?b="a "+p(a.ha,4)+" "+b:1<b.length&&1!=b.indexOf(" ")&&(b=b.charAt(0).toLowerCase()+" "+b.substr(1));var c=b.split(" ");a.mb=c[0];switch(c[0].toLowerCase()){case "a":var d=Y(a,c[1]);if(void 0!==d)if(a.ha=d,void 0===c[2])a.l("begin assemble @"+r(a.ha)),a.Xa=!0,a.s.update();else{var e,g=c[2],h=c[3],c=a.ha,d=[];if(void 0!==g){var k,g=g.toUpperCase();"?"==g.charAt(g.length-
1)&&(h="?",g=g.substr(0,g.length-1));for(k=0;k<a.Ja.length&&g!=a.Ja[k];k++);k==a.Ja.length&&(a.l("unknown operation: "+g),k=-1);var l="",m;if(0<=k&&void 0!==h)if(l=h.toUpperCase(),"?"==l){for(h=m=0;h<a.ga.length;h++)a.ga[h][0]===k&&(m||a.l("supported opcodes:"),a.l(" "+p(h,2)+": "+g+(void 0!==a.ga[h][2]?" "+a.ka[a.ga[h][2]]:"")),m++);k=-1}else if(m=l.match(a.Me),null!==m&&m[0]==l){for(h=1;h<m.length;h++)if(m[h]==l)if(void 0===e)e=h-1;else{a.l("too many operand matches (both "+a.ka[e]+" and "+
a.ka[h-1]+")");k=-1;break}e==a.Oa&&0>a.Nb.indexOf(k)&&(e=a.O);e==a.nb&&27!=k&&(e=a.O)}else a.l("unknown operand: "+l),k=-1;if(0<=k){m=-1;for(h=0;h<a.ga.length;h++)if(a.ga[h][0]===k&&a.ga[h][2]===e)if(0>m)m=h;else{a.l("too many instruction matches (both "+q(m)+" and "+q(h)+")");m=-2;break}if(0<=m){if(d.push(m),void 0!==e)if(g=a.ga[m][1],l=l.match(/[0-9A-F]+/),null!==l)for(l=parseInt(l[0],16),1==g&&e==a.fa&&(l-=c+2,-128>l||127<l)&&(a.l("branch out of range ("+l+")"),d=[],g=0),h=0;h<g;h++)d.push(l&255),
l>>>=8;else g&&a.l("instruction missing "+g+" bytes")}else a.l("unknown instruction: "+g+" "+l+"")}}e=d;if(e.length){for(c=0;c<e.length;c++)a.W(a.ha+c,e[c]);a.l(vb(a,a.ha));a.ha+=e.length}}break;case "b":e=c[1];c=c[2];if(void 0===e||"?"==e)a.l("\nbreakpoint commands:"),a.l("bp [a]\tset exec breakpoint at [a]"),a.l("br [a]\tset read breakpoint at [a]"),a.l("bw [a]\tset write breakpoint at [a]"),a.l("bc [a]\tclear breakpoint at [a]"),a.l("bl\tlist all breakpoints");else if(void 0===c&&1<e.length&&(c=
e.substr(1),e=e.substr(0,1)),"l"==e){e=0;d=a.sa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (exec)"),e++;d=a.wa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (read)"),e++;d=a.ya;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (write)"),e++;e||a.l("no breakpoints")}else void 0===c?a.l("missing breakpoint address"):"c"==e&&"*"==c?(a.sa=[],a.wa=[],a.ya=[],a.l("all breakpoints cleared")):(c=Y(a,c),void 0!==c&&("p"==e?tb(a,c)?a.l("breakpoint enabled: "+r(c)+" (exec)"):
a.l("breakpoint not set: "+r(c)):"c"==e?X(a.sa,c,!0)?a.l("breakpoint cleared: "+r(c)+" (exec)"):X(a.wa,c,!0)?a.l("breakpoint cleared: "+r(c)+" (read)"):X(a.ya,c,!0)?a.l("breakpoint cleared: "+r(c)+" (write)"):a.l("breakpoint missing: "+r(c)):"r"==e?(X(a.wa,c,void 0)||a.wa.push(c),a.l("breakpoint enabled: "+r(c)+" (read)")):"w"==e?(X(a.ya,c,void 0)||a.ya.push(c),a.l("breakpoint enabled: "+r(c)+" (write)")):a.l("unknown breakpoint command: "+e)));break;case "d":e=c[1];d=c[2];if("?"==e)a.l("\ndump commands:"),
a.l("d [a] [#] dump # lines of memory");else if(e=Y(a,e),void 0!==e){c=0;void 0!==d&&("l"==d.charAt(0)&&(d=d.substr(1)),c=parseInt(d,10));c||(c=1);for(d=0;d<c;d++){l=g="";h=e;for(k=0;8>k&&e<a.Fa;k++)m=a.S(e),void 0===m&&(m=0),g+=p(m,2)+" ",l+=32<=m&&128>m?String.fromCharCode(m):".",e++;a.l(p(h,4)+" "+g+l)}a.ua=e}break;case "e":e=c[1];if(void 0===e)a.l("missing address");else if(e=Y(a,e),void 0!==e)for(d=2;d<c.length;d++)g=parseInt(c[d],16),a.W(e++,g);break;case "f":wb(a,c[1]);break;case "g":e=
c[1];void 0!==e&&ub(a,Y(a,e));a.va()||a.s.ca();break;case "h":a.aa();break;case "o":if(void 0===c[1]||"?"==c[1])a.l("\noption commands:"),a.l("max\trun at maximum speed"),a.l("fast\trun faster (up to "+a.s.La+"Mhz)"),a.l("slow\trun at normal speed (1Mhz)"),a.l("classic\tuse classic operand syntax"),a.l("modern\tuse modern operand syntax"),a.l("msg\tenable message categories");else switch(e=c[1],e){case "slow":M(a.s,a.s.Qa);break;case "fast":M(a.s,a.s.Lb);break;case "max":M(a.s,a.s.cb);break;case "classic":mb(a,
!0);a.l("classic syntax enabled");break;case "modern":mb(a,!1);a.l("modern syntax enabled");break;case "msg":e=0;void 0!==c[2]&&("all"==c[2]?e=255:void 0!==a.Ta[c[2]]&&(e=a.Ta[c[2]]),e&&("on"==c[3]?a.la|=e:"off"==c[3]&&(a.la&=~e)));for(d in a.Ta)if(void 0===c[2]||"all"==c[2]||c[2]==d)e=a.Ta[d],a.l(d+" messages: "+(a.la&e?"on":"off"));break;default:a.l("unknown option: "+e)}break;case "p":l=c[1];e=10;c=a.Ka;d=a.xa;if(void 0!==d){g=void 0===l?a.Rb:parseInt(l,10);void 0===g&&(g=10);g>d.length&&(a.l("note: only "+
d.length+" available"),g=d.length);void 0!==l&&(a.lb=0,a.l(g+" instructions earlier:"));l=a.lb?a.lb:1;c-=g;for(0>c&&(c=d.length-1);e&&c!=a.Ka;){h=d[c];if(0>h)break;a.l(vb(a,h,l++));++c==d.length&&(c=0);e--;g--}a.Rb=g;a.lb=l}10==e&&a.l("no history available");break;case "r":qb(a,c);break;case "s":a.S(a.s.f)==a.s.Pa?(ub(a,a.s.f+3),a.Ca=!0,a.va()||a.s.ca()):xb(a);break;case "t":xb(a,c[1]);break;case "u":pb(a,c[1],c[2],8);break;case "?":case "help":a.l("\ncommands:\n?\thelp\na [#]\tassemble\nb [#]\tbreakpoint\nd [#]\tdump memory\ne [#]\tedit memory\nf\tdump frequencies\ng [#]\trun to [#]\nh\thalt\no\toptions\np [#]\tdump history\nr\tdump/edit registers\ns\tstep over instruction\nt [#]\tstep instruction(s)\nu [#]\tunassemble");
function qb(a,b){if(b&&"?"==b[1])a.l("\nregister commands:"),a.l("r to display all"),a.l("r [target=value] to modify"),a.l("supported targets:"),a.l("A,X,Y,S,PC and flags C,Z,D,V,N");else{var c=!0;if(b&&1<b.length){var c=!1,d=b[1],e,g=d.indexOf("=");if(0<g)e=d.substr(g+1),d=d.substr(0,g);else if(2<b.length)e=b[2];else{a.l("missing value for "+b[1]);return}g=parseInt(e,16);if(isNaN(g)){a.l("invalid value: "+e);return}switch(d.toUpperCase()){case "A":a.s.h=g&255;break;case "X":a.s.w=g&255;break;case "Y":a.s.F=
g&255;break;case "C":a.s.c=g?256:0;break;case "Z":a.s.j=g?0:1;break;case "D":g?La(a.s):Ma(a.s);break;case "V":g?(d=a.s,d.v=0,d.A=128):(d=a.s,d.v=0,d.A=0);break;case "N":a.s.i=g?128:0;break;case "S":if(256!=(g&-256)){a.l("invalid stack pointer: "+e);return}a.s.G=g;break;case "PC":c=!0;a.s.f=g&65535;a.ua=a.s.f;break;default:a.l("unknown register: "+d);return}a.s.update()}a.l("A="+p(a.s.h,2)+" X="+p(a.s.w,2)+" Y="+p(a.s.F,2)+" P="+p(Ga(a.s),2)+" S="+p(a.s.G,4)+" PC="+p(a.s.f,4));c&&pb(a,p(a.ua=a.s.f,
4))}}function xb(a,b){var c=void 0===b?1:parseInt(b,10),d=1==c?0:1;fa(c,function(a){return function(){return I(a,!0)&&a.step(d)}}(a),function(a){return function(){I(a,!1)}}(a))}
function nb(a,b){b.length||(a.Xa?(a.l("ended assemble @"+p(a.ha,4)),a.ua=a.ha,a.Xa=!1):a.mb&&(b=a.mb));if(K(a)&&!J(a,!0)&&0<b.length){a.Xa?b="a "+p(a.ha,4)+" "+b:1<b.length&&1!=b.indexOf(" ")&&(b=b.charAt(0).toLowerCase()+" "+b.substr(1));var c=b.split(" ");a.mb=c[0];switch(c[0].toLowerCase()){case "a":var d=Y(a,c[1]);if(void 0!==d)if(a.ha=d,void 0===c[2])a.l("begin assemble @"+r(a.ha)),a.Xa=!0,a.s.update();else{var e,g=c[2],h=c[3],c=a.ha,d=[];if(void 0!==g){var l,g=g.toUpperCase();"?"==g.charAt(g.length-
1)&&(h="?",g=g.substr(0,g.length-1));for(l=0;l<a.Ja.length&&g!=a.Ja[l];l++);l==a.Ja.length&&(a.l("unknown operation: "+g),l=-1);var k="",m;if(0<=l&&void 0!==h)if(k=h.toUpperCase(),"?"==k){for(h=m=0;h<a.ga.length;h++)a.ga[h][0]===l&&(m||a.l("supported opcodes:"),a.l(" "+p(h,2)+": "+g+(void 0!==a.ga[h][2]?" "+a.ka[a.ga[h][2]]:"")),m++);l=-1}else if((m=k.match(a.Me))&&m[0]==k){for(h=1;h<m.length;h++)if(m[h]==k)if(void 0===e)e=h-1;else{a.l("too many operand matches (both "+a.ka[e]+" and "+a.ka[h-
1]+")");l=-1;break}e==a.Oa&&0>a.Nb.indexOf(l)&&(e=a.O);e==a.nb&&27!=l&&(e=a.O)}else a.l("unknown operand: "+k),l=-1;if(0<=l){m=-1;for(h=0;h<a.ga.length;h++)if(a.ga[h][0]===l&&a.ga[h][2]===e)if(0>m)m=h;else{a.l("too many instruction matches (both "+q(m)+" and "+q(h)+")");m=-2;break}if(0<=m){if(d.push(m),void 0!==e)if(g=a.ga[m][1],k=k.match(/[0-9A-F]+/))for(k=parseInt(k[0],16),1==g&&e==a.fa&&(k-=c+2,-128>k||127<k)&&(a.l("branch out of range ("+k+")"),d=[],g=0),h=0;h<g;h++)d.push(k&255),k>>>=8;else g&&
a.l("instruction missing "+g+" bytes")}else a.l("unknown instruction: "+g+" "+k+"")}}e=d;if(e.length){for(c=0;c<e.length;c++)a.W(a.ha+c,e[c]);a.l(vb(a,a.ha));a.ha+=e.length}}break;case "b":e=c[1];c=c[2];if(void 0===e||"?"==e)a.l("\nbreakpoint commands:"),a.l("bp [a]\tset exec breakpoint at [a]"),a.l("br [a]\tset read breakpoint at [a]"),a.l("bw [a]\tset write breakpoint at [a]"),a.l("bc [a]\tclear breakpoint at [a]"),a.l("bl\tlist all breakpoints");else if(void 0===c&&1<e.length&&(c=e.substr(1),e=
e.substr(0,1)),"l"==e){e=0;d=a.sa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (exec)"),e++;d=a.wa;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (read)"),e++;d=a.ya;for(c=0;c<d.length;c++)a.l("breakpoint enabled: "+r(d[c])+" (write)"),e++;e||a.l("no breakpoints")}else void 0===c?a.l("missing breakpoint address"):"c"==e&&"*"==c?(a.sa=[],a.wa=[],a.ya=[],a.l("all breakpoints cleared")):(c=Y(a,c),void 0!==c&&("p"==e?tb(a,c)?a.l("breakpoint enabled: "+r(c)+" (exec)"):a.l("breakpoint not set: "+
r(c)):"c"==e?X(a.sa,c,!0)?a.l("breakpoint cleared: "+r(c)+" (exec)"):X(a.wa,c,!0)?a.l("breakpoint cleared: "+r(c)+" (read)"):X(a.ya,c,!0)?a.l("breakpoint cleared: "+r(c)+" (write)"):a.l("breakpoint missing: "+r(c)):"r"==e?(X(a.wa,c,void 0)||a.wa.push(c),a.l("breakpoint enabled: "+r(c)+" (read)")):"w"==e?(X(a.ya,c,void 0)||a.ya.push(c),a.l("breakpoint enabled: "+r(c)+" (write)")):a.l("unknown breakpoint command: "+e)));break;case "d":e=c[1];d=c[2];if("?"==e)a.l("\ndump commands:"),a.l("d [a] [#] dump # lines of memory");
else if(e=Y(a,e),void 0!==e){c=0;void 0!==d&&("l"==d.charAt(0)&&(d=d.substr(1)),c=parseInt(d,10));c||(c=1);for(d=0;d<c;d++){k=g="";h=e;for(l=0;8>l&&e<a.Fa;l++)m=a.S(e),void 0===m&&(m=0),g+=p(m,2)+" ",k+=32<=m&&128>m?String.fromCharCode(m):".",e++;a.l(p(h,4)+" "+g+k)}a.ua=e}break;case "e":e=c[1];if(void 0===e)a.l("missing address");else if(e=Y(a,e),void 0!==e)for(d=2;d<c.length;d++)g=parseInt(c[d],16),a.W(e++,g);break;case "f":wb(a,c[1]);break;case "g":e=c[1];void 0!==e&&ub(a,Y(a,e));a.va()||a.s.ca();
break;case "h":a.aa();break;case "o":if(void 0===c[1]||"?"==c[1])a.l("\noption commands:"),a.l("max\trun at maximum speed"),a.l("fast\trun faster (up to "+a.s.La+"Mhz)"),a.l("slow\trun at normal speed (1Mhz)"),a.l("classic\tuse classic operand syntax"),a.l("modern\tuse modern operand syntax"),a.l("msg\tenable message categories");else switch(e=c[1],e){case "slow":M(a.s,a.s.Qa);break;case "fast":M(a.s,a.s.Lb);break;case "max":M(a.s,a.s.cb);break;case "classic":mb(a,!0);a.l("classic syntax enabled");
break;case "modern":mb(a,!1);a.l("modern syntax enabled");break;case "msg":e=0;void 0!==c[2]&&("all"==c[2]?e=255:void 0!==a.Ta[c[2]]&&(e=a.Ta[c[2]]),e&&("on"==c[3]?a.la|=e:"off"==c[3]&&(a.la&=~e)));for(d in a.Ta)if(void 0===c[2]||"all"==c[2]||c[2]==d)e=a.Ta[d],a.l(d+" messages: "+(a.la&e?"on":"off"));break;default:a.l("unknown option: "+e)}break;case "p":k=c[1];e=10;c=a.Ka;if(d=a.xa){g=void 0===k?a.Rb:parseInt(k,10);void 0===g&&(g=10);g>d.length&&(a.l("note: only "+d.length+" available"),g=d.length);
void 0!==k&&(a.lb=0,a.l(g+" instructions earlier:"));k=a.lb?a.lb:1;c-=g;for(0>c&&(c=d.length-1);e&&c!=a.Ka;){h=d[c];if(0>h)break;a.l(vb(a,h,k++));++c==d.length&&(c=0);e--;g--}a.Rb=g;a.lb=k}10==e&&a.l("no history available");break;case "r":qb(a,c);break;case "s":a.S(a.s.f)==a.s.Pa?(ub(a,a.s.f+3),a.Ca=!0,a.va()||a.s.ca()):xb(a);break;case "t":xb(a,c[1]);break;case "u":pb(a,c[1],c[2],8);break;case "?":case "help":a.l("\ncommands:\n?\thelp\na [#]\tassemble\nb [#]\tbreakpoint\nd [#]\tdump memory\ne [#]\tedit memory\nf\tdump frequencies\ng [#]\trun to [#]\nh\thalt\no\toptions\np [#]\tdump history\nr\tdump/edit registers\ns\tstep over instruction\nt [#]\tstep instruction(s)\nu [#]\tunassemble");
a.l("note: frequency and history commands operate only when breakpoints are set");break;default:a.l("unknown command: "+b)}}}x(function(){for(var a=G(document,"c1pjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new lb(d);F(d,c)}});function Z(a,b){A.call(this,"C1PComputer",a);this.Y=b}C(Z);Z.prototype.reset=function(a){var b=null,c;for(c in this.Y)for(var d=0;d<this.Y[c].length;d++){var e=this.Y[c][d];e&&e.reset&&(e.reset(),"cpu"==c&&(b=e))}b&&(b.update(),a&&b.va())};
Z.prototype.start=function(){for(var a in this.Y)if("cpu"!=a)for(var b=0;b<this.Y[a].length;b++){var c=this.Y[a][b];c&&c.start&&c.start()}};Z.prototype.stop=function(a,b){for(var c in this.Y)if("cpu"!=c)for(var d=0;d<this.Y[c].length;d++){var e=this.Y[c][d];e&&e.stop&&e.stop(a,b)}};Z.prototype.T=function(a,b,c){switch(b){case "reset":return this.H[b]=c,c.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function L(a,b){return a.Y[b]?a.Y[b][0]:null}
function yb(a){var b=null,c;for(c in a.Y)for(var d=0;d<a.Y[c].length;d++){var e=a.Y[c][d];if(e){if(!K(e)){K(e,function(a){return function(){yb(a)}}(a));return}"cpu"==c?b=e:e.ia&&e.ia(!0,a)}}a.X();a.l("C1Pjs v1.30.0\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>");b&&b.ia(!0,a)}
x(function(){for(var a=G(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=E(c),e,g={},h,k=0,l=0,m=0;m<d.modules.length;m++){var n=d.modules[m];if(!m){if("cpu"!=n.type)break;k=n.start;l=n.end;h=Array(l+1-k);for(e=k;e<h.length;e++)h[e]=0}if(e=ta(n.refID,d.id)){var y=n.type;void 0===g[y]&&(g[y]=[]);g[y].push(e);e.ba&&void 0!==n.start&&e.ba(h,n.start,n.end,g.cpu[0])}else{u('no component for <module refid="'+n.refID+'">');return}}if(void 0===h){u('<module type="cpu"> definition must appear first in the <computer> specification');
break}if(e=ta("debugger",d.id))g["debugger"]=[e],e.ba&&e.ba(h,k,l,g.cpu[0]);k=new Z(d,g);if(l=ta("panel",d.id))if(g.panel=[l],l.gb){e=d.id;d=void 0;g=[];e&&(e=0<(d=e.indexOf("."))?e.substr(0,d+1):"");for(d=0;d<B.length;d++)m=B[d],e&&m.id.indexOf(e)||g.push(m);d=g;for(g=0;g<d.length;g++)e=d[g],e!=l&&(e.Ya=l.Ya,e.l=l.l,e.gb=l.gb)}F(k,c);yb(k)}});var zb=0;function Ab(a,b,c,d,e,g){e("Loading "+a+"...");t(a,function(h,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),g(k,null)):Cb(k,a,b,c,d,e,g)})}
function Cb(a,b,c,d,e,g,h){function k(a,g){if(g)h(g,null);else{if(c){D[c]&&b&&(D[c][b]=a);var k=b;k&&0>k.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(k=window.location.pathname+k);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+k+'"}';"object"==typeof resources&&(k=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(k?' url="'+k+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,
"$1C1Pjs$2"),a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1c1pjs$2"));k=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(k=new window.ActiveXObject("Microsoft.XMLDOM"),k.async=!1,k.loadXML(a)):k=(new window.DOMParser).parseFromString(a,"text/xml")}catch(y){k=null,a=y.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,k)}}a?e?Db(a,g,k):k(a,null):h("no data"+(b?" for file: "+
x(function(){for(var a=G(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=E(c),e,g={},h,l=0,k=0,m=0;m<d.modules.length;m++){var n=d.modules[m];if(!m){if("cpu"!=n.type)break;l=n.start;k=n.end;h=Array(k+1-l);for(e=l;e<h.length;e++)h[e]=0}if(e=ta(n.refID,d.id)){var y=n.type;void 0===g[y]&&(g[y]=[]);g[y].push(e);e.ba&&void 0!==n.start&&e.ba(h,n.start,n.end,g.cpu[0])}else{u('no component for <module refid="'+n.refID+'">');return}}if(!h){u('<module type="cpu"> definition must appear first in the <computer> specification');
break}if(e=ta("debugger",d.id))g["debugger"]=[e],e.ba&&e.ba(h,l,k,g.cpu[0]);l=new Z(d,g);if(k=ta("panel",d.id))if(g.panel=[k],k.gb){e=d.id;d=void 0;g=[];e&&(e=0<(d=e.indexOf("."))?e.substr(0,d+1):"");for(d=0;d<B.length;d++)m=B[d],e&&m.id.indexOf(e)||g.push(m);d=g;for(g=0;g<d.length;g++)e=d[g],e!=k&&(e.Ya=k.Ya,e.l=k.l,e.gb=k.gb)}F(l,c);yb(l)}});var zb=0;function Ab(a,b,c,d,e,g){e("Loading "+a+"...");t(a,function(h,l,k){k?(l||(l="unable to load "+a+" ("+k+")"),g(l,null)):Cb(l,a,b,c,d,e,g)})}
function Cb(a,b,c,d,e,g,h){function l(a,g){if(g)h(g,null);else{if(c){D[c]&&b&&(D[c][b]=a);var k=b;k&&0>k.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(k=window.location.pathname+k);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+k+'"}';"object"==typeof resources&&(k=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(k?' url="'+k+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,
"$1C1Pjs$2"),a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1c1pjs$2"));k=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(k=new window.ActiveXObject("Microsoft.XMLDOM"),k.async=!1,k.loadXML(a)):k=(new window.DOMParser).parseFromString(a,"text/xml")}catch(y){k=null,a=y.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,k)}}a?e?Db(a,g,l):l(a,null):h("no data"+(b?" for file: "+
b:""),null)}
function Db(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");t(e,function(g,h,k){if(k||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+k+")");else{if(g=d[3])if(k=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=k[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(g);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);k[0]!=l&&(h=h.replace(k[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,"");
function Db(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");t(e,function(g,h,l){if(l||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+l+")");else{if(g=d[3])if(l=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=l[0],m,n=/( [a-z]+=)(['"])(.*?)\2/g;m=n.exec(g);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);l[0]!=k&&(h=h.replace(l[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,"");
a=a.replace(d[0],h);Db(a,b,c)}})}else c(a,null)}
function Eb(a,b,c){function d(a){if(void 0===h){var b=g&&G(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=da(a))}function e(a){d("Error: "+a);k&&(--zb||z(!0));k=!1}var g,h,k=!0;zb++;D[a]={};try{if(g=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var m=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css";n.styleSheet?n.styleSheet.cssText=l:n.appendChild(document.createTextNode(l));m.appendChild(n)}c||(c=
"/versions/c1pjs/1.30.0/components.xsl");l=function(h,k){k?Ab(c,null,null,!1,d,function(h,l){if(l)if(D[a]&&c&&(D[a][c]=h),d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=k.transformNode(l);m?(g.outerHTML=m,--zb||z(!0)):e("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(l),(m=m.transformToFragment(k,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--zb||z(!0)):e("invalid machine element: "+
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(h)}):e(h)};"<"!=b.charAt(0)?Ab(b,a,void 0,!0,d,l):Cb(b,null,a,void 0,!1,d,l)}else e("missing machine element: "+a)}catch(y){e(y.message)}return k}window.embedC1P=function(a,b,c){z(!1);return Eb(a,b,c)};window.enableEvents=z;window.sendEvent=ma;})();
function Eb(a,b,c){function d(a){if(void 0===h){var b=g&&G(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=da(a))}function e(a){d("Error: "+a);l&&(--zb||z(!0));l=!1}var g,h,l=!0;zb++;D[a]={};try{if(g=document.getElementById(a)){var k;if("object"==typeof resources&&(k=resources.css)){var m=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css";n.styleSheet?n.styleSheet.cssText=k:n.appendChild(document.createTextNode(k));m.appendChild(n)}c||(c=
"/versions/c1pjs/1.30.0/components.xsl");k=function(h,k){k?Ab(c,null,null,!1,d,function(h,l){if(l)if(D[a]&&c&&(D[a][c]=h),d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=k.transformNode(l);m?(g.outerHTML=m,--zb||z(!0)):e("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(l),(m=m.transformToFragment(k,document))?g.parentNode?(g.parentNode.replaceChild(m,g),--zb||z(!0)):e("invalid machine element: "+
a):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e(h)}):e(h)};"<"!=b.charAt(0)?Ab(b,a,void 0,!0,d,k):Cb(b,null,a,void 0,!1,d,k)}else e("missing machine element: "+a)}catch(y){e(y.message)}return l}window.embedC1P=function(a,b,c){z(!1);return Eb(a,b,c)};window.enableEvents=z;window.sendEvent=ma;})();

View file

@ -23,7 +23,7 @@ e.$=function(a,b){if(a&&!this.u.H){this.I=b;var c=L(b,"video");c&&(this.za=funct
function wa(a,b,c,d,f){for(var g=0;g<a.length;g++)if(a[g][0]==b&&a[g][1]==c&&a[g][2]==d&&a[g][3]==f)return g;return-1}function ta(a,b,c){void 0!==b&&(a.speed=b,a.A.setSpeed&&(a.A.setSpeed.innerHTML=a.ra[2<=b?0:b+1]),a.F("running at "+a.ra[b].toLowerCase()+" speed "+a.ab[b]),c&&a.da());a.S=0;a.Ca=q();xa(a)}e.za=function(){};e.da=function(){};function P(a,b,c,d){void 0!==a.A[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.A[b].innerHTML=c.slice(c.length-d).toUpperCase())}
function ya(a){P(a,"A",a.g,2);P(a,"X",a.m,2);P(a,"Y",a.o,2);var b=za(a);P(a,"C",b&1?1:0);P(a,"Z",b&2?1:0);P(a,"I",b&4?1:0);P(a,"D",b&8?1:0);P(a,"B",b&16?1:0);P(a,"V",b&64?1:0);P(a,"N",b&128?1:0);P(a,"S",a.s,4);P(a,"PC",a.c,4);a.A.speed&&a.ba&&(a.A.speed.innerHTML=a.ba.toFixed(1)+"Mhz")}
function xa(a,b){var c=30;c<a.oa&&(c=a.oa);c<a.na&&(c=a.na);var d=1;b&&a.speed>a.ia&&a.ba&&(d=a.ba);d>a.ea&&2>a.speed&&(d=a.ea);a.bb=Math.round(1E3/30);a.fa=Math.floor(1E6/c*d);a.la=Math.floor(1E6/30*d);a.Ea=Math.floor(1E6/a.oa*d);a.Da=Math.floor(1E6/a.na*d);b||(a.P=a.la,a.U=a.Ea,a.T=a.Da);a.ma=0}function Aa(a){1E6<=a.ma&&xa(a,!0);a.V=0;a.cb=q()}
function Ba(a){var b=q(),c=a.bb;a.V&&(c=Math.round(c*a.V/a.la));c=c-(b-a.cb);if(b=b-a.Ca)a.ba=Math.round(a.S/(100*b))/10,864E5<=b&&ta(a);0>c?c=0:1==a.speed?a.ba<=a.ea&&(c=0):2==a.speed&&(c=0);a.ma+=a.V;return c}
function Ba(a){var b=q(),c=a.bb;a.V&&(c=Math.round(c*a.V/a.la));c-=b-a.cb;if(b-=a.Ca)a.ba=Math.round(a.S/(100*b))/10,864E5<=b&&ta(a);0>c?c=0:1==a.speed?a.ba<=a.ea&&(c=0):2==a.speed&&(c=0);a.ma+=a.V;return c}
function N(a){if(oa(a,!0)){a.u.Z||(ta(a),a.I&&a.I.start(),a.u.Z=!0,a.A.run&&(a.A.run.innerHTML="Halt"),a.da());Aa(a);try{do{a.step(a.fa);var b=a.L-a.G;a.S+=b;a.V+=b;a.L=a.G=0;a.U-=a.fa;0>=a.U&&(a.U+=a.Ea,a.za());a.T-=a.fa;0>=a.T&&(a.T+=a.Da,ya(a));a.P-=a.fa;if(0>=a.P){a.P+=a.la;break}}while(a.u.Z)}catch(c){M(a);a.update();oa(a,!1);pa(a,c.stack||c.message);return}setTimeout(function(a){return function(){N(a)}}(a),Ba(a))}else a.update(),a.I&&a.I.stop(a.Ca,a.S)}
e.step=function(a){this.b=this.j=-1;this.L=this.G=a;do{a=this.a[this.c];this.c++;this.v[a].call(this);if(0<=this.b){if(this.b>=this.ja&&this.b<=this.ka)for(var b=this.b,c=this.c,d=0;d<this.O.length;d++)b>=this.O[d][0]&&b<=this.O[d][1]&&this.O[d][3].call(this.O[d][2],b,c);this.b=-1}else if(0<=this.j){if(this.j>=this.Y&&this.j<=this.ca)for(b=this.j,c=this.c,d=0;d<this.K.length;d++)b>=this.K[d][0]&&b<=this.K[d][1]&&this.K[d][3].call(this.K[d][2],b,c);this.j=-1}this.G-=this.$a[a]}while(0<this.G);return!0};
function M(a){a.u.pa&&(a.u.xa=!0);a.L-=a.G;a.G=0;a.u.Z&&(a.u.Z=!1,a.A.run&&(a.A.run.innerHTML="Run"))}e.update=function(){this.za();ya(this)};function Ca(a){return a.u.Z?a.S+a.L-a.G:0}e.W=function(a){return this.a[a]};e.R=function(a,b){this.a[a]=b};function za(a){var b=a.f&256?1:0,b=b|(a.i&255?0:2),b=b|((a.w&255^a.C^a.w>>1)&128?64:0),b=b|(a.h&128?128:0);return a.B&60|b}
@ -78,7 +78,7 @@ S.prototype.X=function(a,b,c,d){this.a=a;this.h=b;a=c-b+1;this.c||(this.c=a);a!=
function Da(a,b,c,d){if(d)a.F('Error loading ROM "'+b+'" ('+d+")");else{if("["==c.charAt(0)||"{"==c.charAt(0))try{var f=eval("("+c+")"),g=f.bytes;g?a.b=g:a.b=f}catch(k){a.F('Error processing ROM "'+b+'": '+k.message);return}else for(b=c.replace(/\n/gm," ").replace(/ +$/,"").split(" "),a.b=Array(b.length),c=0;c<b.length;c++)a.b[c]=parseInt(b[c],16);Ea(a)}}
function Ea(a){if(!J(a))if(!a.g)a.N();else if(a.b&&a.a){var b=a.b.length;if(b!=a.c)pa(a,"ROM image size ("+p(b,4,!0)+") does not match component-specified size ("+p(a.c,4,!0)+")");else{for(var c=0;c<b;c++)a.a[a.h+c]=a.b[c];a.N()}}}y(function(){for(var a=I(document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new S(d);H(d,c)}});function Fa(a){B.call(this,"C1PRAM",a)}D(Fa);Fa.prototype.X=function(a){this.a=a;this.N()};
y(function(){for(var a=I(document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Fa(d);H(d,c)}});
function Ga(a){B.call(this,"C1PKeyboard",a);this.u.H=!1;this.ea=a.model;this.L=8;this.na=10;this.ma=13;this.O=27;this.ka=this.L;this.la=this.na;this.fa=this.ma;this.K=this.O;this.v=241;this.G=224;this.ia=3;this.ja=15;this.s=1;this.m=[];this.m["break"]=this.G;this.m.esc=this.K;this.m["ctrl-c"]=this.ia;this.m["ctrl-o"]=this.ja;this.b=[];this.b[49]=30464;this.b[33]=30704;this.b[50]=30208;this.b[34]=30448;this.b[51]=29952;this.b[35]=30192;this.b[52]=29696;this.b[36]=29936;this.b[53]=29440;this.b[37]=
function Ga(a){B.call(this,"C1PKeyboard",a);this.u.H=!1;this.ea=a.model;this.L=8;this.na=10;this.ma=13;this.O=27;this.ka=this.L;this.la=this.na;this.fa=this.ma;this.K=this.O;this.v=241;this.G=224;this.ia=3;this.ja=15;this.s=1;this.m={};this.m["break"]=this.G;this.m.esc=this.K;this.m["ctrl-c"]=this.ia;this.m["ctrl-o"]=this.ja;this.b=[];this.b[49]=30464;this.b[33]=30704;this.b[50]=30208;this.b[34]=30448;this.b[51]=29952;this.b[35]=30192;this.b[52]=29696;this.b[36]=29936;this.b[53]=29440;this.b[37]=
29680;this.b[54]=29184;this.b[38]=29424;this.b[55]=28928;this.b[39]=29168;this.b[56]=26368;this.b[40]=26608;this.b[57]=26112;this.b[41]=26352;this.b[48]=25856;this.b[58]=25600;this.b[42]=25840;this.b[45]=25344;this.b[61]=25584;this.b[46]=22272;this.b[62]=22512;this.b[108]=22016;this.b[76]=22256;this.b[92]=22256;this.b[111]=21760;this.b[79]=22E3;this.b[this.ka]=22E3;this.b[this.la]=21504;this.b[this.fa]=21248;this.b[119]=18176;this.b[87]=18416;this.b[101]=17920;this.b[69]=18160;this.b[114]=17664;this.b[82]=
17904;this.b[116]=17408;this.b[84]=17648;this.b[121]=17152;this.b[89]=17392;this.b[117]=16896;this.b[85]=17136;this.b[105]=16640;this.b[73]=16880;this.b[115]=14080;this.b[83]=14320;this.b[100]=13824;this.b[68]=14064;this.b[102]=13568;this.b[70]=13808;this.b[103]=13312;this.b[71]=13552;this.b[104]=13056;this.b[72]=13296;this.b[106]=12800;this.b[74]=13040;this.b[107]=12544;this.b[75]=12784;this.b[91]=12784;this.b[120]=9984;this.b[88]=10224;this.b[99]=9728;this.b[67]=9968;this.b[118]=9472;this.b[86]=
9712;this.b[98]=9216;this.b[66]=9456;this.b[110]=8960;this.b[78]=9200;this.b[94]=9200;this.b[109]=8704;this.b[77]=8944;this.b[93]=8944;this.b[44]=8448;this.b[60]=8688;this.b[113]=5888;this.b[81]=6128;this.b[97]=5632;this.b[65]=5872;this.b[122]=5376;this.b[90]=5616;this.b[32]=5120;this.b[47]=4864;this.b[63]=5104;this.b[59]=4608;this.b[43]=4848;this.b[112]=4352;this.b[80]=4592;this.b[64]=4592;this.b[this.v]=1536;this.b[this.K]=1280;this.b[240]=512;this.b[242]=256;this.b[244]=0;this.reset()}D(Ga);
@ -88,7 +88,7 @@ a.I.reset(!0)}}(this),!0;default:if(void 0!==this.m[b])return this.A[b]=c,c.oncl
e.N=function(){this.U=(this.ra=v("iOS"))||v("Android");B.prototype.N.call(this)};function Ia(a,b){var c=b?100:250;a.f&&a.f.ba&&(c/=a.f.ba);return c}function Ja(a,b){!a.i||void 0!==b&&b==a.i||(clearTimeout(a.h[a.i]),U(a,a.i,!1,4))}function V(a,b,c){a.j=b;Ka(a,c||300)}function Ka(a,b){if(0<a.j.length){var c=a.j.charCodeAt(0);10==c&&(c=13);65<=c&&90>=c&&(c+=32);a.j=a.j.substr(1);T(a,c)}0<a.j.length&&setTimeout(function(a){return function(){Ka(a,b)}}(a),b)}
function Ha(a,b,c){var d,f=!c;b=b.keyCode;c&&(a.ca=b);16==b?(a.c&=-5,c&&(a.c|=4),b+=224,f=!1):18==b?(a.c&=-3,c&&(a.c|=2),b+=224,f=!1):b==a.v-224?(a.c&=-65,c&&(a.c|=64),b+=224,f=!1):20==b?(c=!c,a.c&=~a.s,c&&(a.c|=a.s),b+=224,f=!1):91==b?(a.c&=-9,c&&(a.c|=8),f=!1,d=!0):d=9==b?f=!1:b==a.O||b==a.L?c?!T(a,b):!1:!0;f&&(a.c&=-9,a.U||b!=a.ca||Ja(a));void 0===d&&(d=!U(a,b,c,2));return d}
function T(a,b){var c=!1;b==a.G?a.I&&(a.I.reset(!0),c=!0):(a.U&&65<=b&&90>=b&&(b+=32),Ja(a,b),U(a,b,!0,0)&&(a.f.speed==a.f.Aa?U(a,b,!1,1):(c=!1,a.h[b]&&(clearTimeout(a.h[b]),c=!0),c=Ia(a,c),a.h[a.i=b]=setTimeout(function(a){return function(){U(a,b,!1,3)}}(a),c)),c=!0));return c}
function U(a,b,c,d){var f=!1;c||(a.h[b]=null,a.i==b&&(a.i=0));var g=0,k=a.b[b];void 0===k&&(1<=b&&26>=b&&(b+=64,g=a.v),k=a.b[b]);void 0!==k&&(b=k>>12,f=k>>8&15,g||(g=k&255),c?(a.g[b]|=1<<f,a.g[0]=g==a.v?a.g[0]|64:240==g?a.g[0]|4:242==g?a.g[0]|2:a.g[0]&-71):(a.g[b]&=~(1<<f),a.g[0]&=-71,a.g[0]|=a.c&70),c=0==d&&!a.w.length,a.w.push(a.g.slice()),La(a,c),f=!0);return f}e.W=function(){};e.R=function(a){this.S=this.f.W(a)^this.B;this.C++;La(this,!1,a)};
function U(a,b,c,d){var f=!1;c||(a.h[b]=null,a.i==b&&(a.i=0));var g=0,k=a.b[b];void 0===k&&(1<=b&&26>=b&&(b+=64,g=a.v),k=a.b[b]);void 0!==k&&(b=k>>12,f=k>>8&15,g||(g=k&255),c?(a.g[b]|=1<<f,a.g[0]=g==a.v?a.g[0]|64:240==g?a.g[0]|4:242==g?a.g[0]|2:a.g[0]&-71):(a.g[b]&=~(1<<f),a.g[0]&=-71,a.g[0]|=a.c&70),c=!d&&!a.w.length,a.w.push(a.g.slice()),La(a,c),f=!0);return f}e.W=function(){};e.R=function(a){this.S=this.f.W(a)^this.B;this.C++;La(this,!1,a)};
function La(a,b,c){var d=Ca(a.f);b||(a.f.speed==a.f.Aa?b=void 0!==c&&32<=a.C:(b=d-a.V,b=0>b||8192<=b));b&&(b=a.w.shift(),void 0!==b&&(a.P=b),a.C=0,a.V=d);for(b=d=0;8>b;b++)a.S&1<<b&&(d|=a.P[b]);d^=a.B;if(void 0!==c)a.a[c]=d;else if(c=a.Y,d!=a.T)for(;c<a.ta;c++)a.a[c]=d;a.T=d}y(function(){for(var a=I(document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Ga(d);H(d,c)}});
function Ma(a,b,c,d){B.call(this,"C1PVideo",a);this.S=a.model;this.L=a.charCols;this.O=a.charRows;this.U=a.screenWidth;this.V=a.screenHeight;this.j=a.charWidth;this.m=a.charHeight;Na(this);this.i=b;this.B=c;this.g=d;b=["","moz","ms","webkit"];a=a.smoothing;(c=ja.smoothing)&&(a="true"==c);if(null!=a)for(c=0;c<b.length;c++)if(d=(d=b[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.B[d]){this.B[d]=a;break}}D(Ma);e=Ma.prototype;
e.reset=function(a){this.qa(this.S);if(this.a)for(var b=this.v;b<this.C;b++)this.a[b]=a?Math.floor(256*Math.random()):32};e.J=function(a,b,c){switch(b){case "refresh":return this.A[b]=c,c.onclick=function(a){return function(){Oa(a);ua(a)}}(this),!0}return!1};e.X=function(a,b,c,d){this.a=a;this.v=b;this.T=c-b+1;this.C=this.v+this.T;d&&(this.f=d,va(d,56832,56832,this,this.W),O(d,56832,56832,this,this.R));this.reset(!0)};
@ -96,7 +96,7 @@ function Na(a,b,c,d,f){a.s=void 0!==b?b:a.L;a.Y=void 0!==c?c:a.O;a.c=a.s*a.Y;a.C
e.$=function(a,b){if(a&&!this.u.H&&J(this)){if(this.u.H=!0,this.b=L(b,"keyboard"))this.b.J("canvas","keyDown",this.i),this.b.J("canvas","keyPress",this.i),this.b.J("canvas","keyUp",this.i)}else!a&&this.u.H&&(this.u.H=!1)};e.N=function(){this.j||(this.j=Math.floor(this.g.width/16));this.m||(this.m=Math.floor(this.g.height/16));B.prototype.N.call(this)};e.W=function(a){var b=this.f.W(a);this.f.R(a,b&127|(Math.floor(Ca(this.f)/8333)&1?128:0))};e.R=function(){};
e.Ya=function(a,b){if(void 0!==b){this.qa(540);this.b&&this.b.qa(542);var c=this.f,d=c.K,f=[],g=wa(d,this.h,this.h,this,this.Ya);if(0<=g){f.push(d[g][0]);f.push(d[g][1]);d.splice(g,1);for(var k=65536,h=0,g=0;g<d.length;g++)k>d[g][0]&&(k=d[g][0]),h<d[g][1]&&(h=d[g][1]);f.push(k);f.push(h)}4==f.length&&(c.Y=f[2],c.ca=f[3])}};function Oa(a){a.w=Array(a.c);for(var b=0;b<=a.c;b++)a.w[b]=-1}
function ua(a){var b=0;if(a.u.H)for(;b<a.c;){var c=a.a[a.v+b];if(a.w[b]!=c){var d=Math.floor(b/a.s);if(d>=a.K&&(d-=a.K,d<a.P)){var f=c*a.j;a.B.drawImage(a.g,f%a.g.width,Math.floor(f/a.g.width)*a.m,a.j,a.m,b%a.s*a.G,d*a.I,a.G,a.I)}a.w[b]=c}b++}}
y(function(){for(var a=I(document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=G(c),f=document.createElement("canvas");if(void 0===f||!f.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}f.setAttribute("class","c1pjs-canvas");f.setAttribute("width",d.screenWidth);f.setAttribute("height",d.screenHeight);f.setAttribute("contenteditable","true");f.setAttribute("autocapitalize","off");f.setAttribute("autocorrect","off");f.style.backgroundColor=d.screenColor;
y(function(){for(var a=I(document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=G(c),f=document.createElement("canvas");if(!f||!f.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}f.setAttribute("class","c1pjs-canvas");f.setAttribute("width",d.screenWidth);f.setAttribute("height",d.screenHeight);f.setAttribute("contenteditable","true");f.setAttribute("autocapitalize","off");f.setAttribute("autocorrect","off");f.style.backgroundColor=d.screenColor;
f.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(f.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,f,d.screenWidth,d.screenHeight));c.appendChild(f);var g=new Image,k=f.getContext("2d"),f=new Ma(d,f,k,g);g.onload=function(a){return function(){a.N()}}(f,d.charSet);g.src=d.charSet;H(f,c)}});
function Pa(a){B.call(this,"C1PSerialPort",a);this.u.H=!1;this.m=a.demo;this.reset(!0)}D(Pa);e=Pa.prototype;e.reset=function(a){if(a||2!=this.g){this.h=-1;this.i=0;this.c="";if(this.m){a=1;if(this.Ba){var b=this.Ba.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.c='10 PRINT "HELLO OSI #'+a+'"\n'}this.j=!0;this.g=0}};e.start=function(){this.b&&this.m&&(V(this.b," C\n\n",3E3),setTimeout(function(a){return function(){a.g=1;V(a.b,"LOAD\n")}}(this),12E3));this.m=!1};
e.J=function(a,b,c){var d=this;switch(b){case "listSerial":return this.A[b]=c,!0;case "loadSerial":return this.A[b]=c,c.onclick=function(){d.A.listSerial&&r(d.A.listSerial.value,function(a,b,c){Qa(d,a,b,c)})},!0;case "mountSerial":return!v("Mobi")&&window&&"FileReader"in window?(this.A[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=!a.children[0].files.length}),c.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){Qa(d,
@ -104,19 +104,19 @@ b.name,c.result.toString(),0)};c.readAsText(b);return!1}):c.parentNode.removeChi
function Qa(a,b,c,d){if(c){a.i=0;a.c=c;a.j=!0;a.g=0;if(-1!==b.indexOf(".json",b.length-5))try{d="";var f=eval("("+c+")").bytes;for(c=0;c<f.length;c++)d+=String.fromCharCode(f[c]);a.c=d;a.j=!1}catch(g){a.F('Error processing file "'+b+'": '+g.message);return}a.I&&a.b&&a.f.u.Z?(a.F("auto-loading "+b),a.f.da(),"."!=a.c.charAt(0)?(a.g=1,V(a.b,"NEW\nLOAD\n")):(a.g=2,a.I.reset(!0),V(a.b,"ML"))):a.F(b+" ready to load")}else a.F('Error loading file "'+b+'" ('+d+")")}
e.W=function(a,b){void 0!==b&&(a&1?Ra(this):this.c&&!this.i&&Ra(this))};e.R=function(){};function Ra(a){if(void 0!==a.c){a.h=-1;if(a.i<a.c.length){var b=a.c.charCodeAt(a.i++)&255;a.j&&10==b&&(b=13);a.h=b}else a.c="",a.i=0,1==a.g&&a.b&&V(a.b," \nRUN\n"),a.g=0;for(b=a.o+0;b<a.s;b+=2)a.a[b]=0<=a.h?1:0;for(b=a.o+1;b<a.s;b+=2)a.a[b]=0<=a.h?a.h:0}}y(function(){for(var a=I(document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Pa(d);H(d,c)}});
function Sa(a){B.call(this,"C1PDiskController",a);this.u.H=!1;this.reset(!0)}D(Sa);e=Sa.prototype;e.reset=function(a){Ta(this);this.b=-1;a&&(this.c=[],this.c[0]={Zd:0,Ga:40,Za:!0,ha:20,aa:0,ga:-1,sa:[]})};
function Ta(a){a.v={D:64,read:function(){},update:function(a){return function(c){void 0!==c&&(this.D=c);a.j.D&4||W(a,0,this)}}(a)};a.g={D:255,read:function(){this.update()},update:function(a){return function(c){void 0===c?c=a.g.D:Ua(a,c,a.i.D);c=(c|190)&-2;if(0<=a.b&&a.c[a.b].sa.length){var d=a.c[a.b];d.Za&&(c&=-33);d.aa||(c&=-3);10>=--d.ha&&(0<d.ha?(c&=-129,Va(a)):(d.ha=100,0<=a.b&&(a.c[a.b].ga=0,Wa(a))))}this.D=c;a.j.D&4&&W(a,0,this)}}(a)};a.j={D:0,read:function(){},update:function(a){return function(c){void 0!==
c&&(this.D=c&-193);W(a,1,this);a.g.update();a.v.update()}}(a)};a.w={D:255,read:function(){},update:function(a){return function(c){void 0!==c&&(this.D=c);a.m.D&4||W(a,2,this)}}(a)};a.i={D:255,read:function(){},update:function(a){return function(c){void 0===c?c=a.i.D:Ua(a,a.g.D,c);if(0<=a.b&&a.b<a.c.length){var d=a.c[a.b];d.sa.length&&a.i.D&8&&!(c&8)&&(c&4?d.aa--:d.aa++,d.aa>=d.Ga&&(d.aa=d.Ga),0>d.aa&&(d.aa=0),d.ha=20,a.g.update(a.g.D|128),Va(a))}this.D=c;a.m.D&4&&W(a,2,this)}}(a)};a.m={D:0,read:function(){},
update:function(a){return function(c){void 0!==c&&(this.D=c&-193);W(a,3,this);a.i.update();a.w.update()}}(a)};a.B={D:0,read:function(){},update:function(a){return function(c){void 0!==c&&(3==(c&3)&&(a.h.D=14),this.D=c);a.h.update()}}(a)};a.h={D:14,read:function(){},update:function(a){return function(c){void 0===c&&(c=a.h.D);c&=-2;0<=a.b&&0<=a.c[a.b].ga&&(c|=1);this.D=c;W(a,16,this)}}(a)};a.s={D:0,read:function(a){return function(){Wa(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.D=
c);W(a,17,this)}}(a)};a.C={D:0,read:function(){},update:function(){return function(){}}(a)}}e.J=function(a,b,c){switch(b){case "listDisk":return this.A[b]=c,!0;case "loadDisk":return this.A[b]=c,c.onclick=function(a){return function(){if(a.A.listDisk){var b=a.A.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.F("loading "+aa(b)+"...");r(c,function(b,c,f){Xa(a,b,c,f)})}}}(this),!0}return!1};
function Ta(a){a.v={D:64,read:function(){},update:function(a){return function(b){void 0!==b&&(this.D=b);a.j.D&4||W(a,0,this)}}(a)};a.g={D:255,read:function(){this.update()},update:function(a){return function(b){void 0===b?b=a.g.D:Ua(a,b,a.i.D);b=(b|190)&-2;if(0<=a.b&&a.c[a.b].sa.length){var c=a.c[a.b];c.Za&&(b&=-33);c.aa||(b&=-3);10>=--c.ha&&(0<c.ha?(b&=-129,Va(a)):(c.ha=100,0<=a.b&&(a.c[a.b].ga=0,Wa(a))))}this.D=b;a.j.D&4&&W(a,0,this)}}(a)};a.j={D:0,read:function(){},update:function(a){return function(b){void 0!==
b&&(this.D=b&-193);W(a,1,this);a.g.update();a.v.update()}}(a)};a.w={D:255,read:function(){},update:function(a){return function(b){void 0!==b&&(this.D=b);a.m.D&4||W(a,2,this)}}(a)};a.i={D:255,read:function(){},update:function(a){return function(b){void 0===b?b=a.i.D:Ua(a,a.g.D,b);if(0<=a.b&&a.b<a.c.length){var c=a.c[a.b];c.sa.length&&a.i.D&8&&!(b&8)&&(b&4?c.aa--:c.aa++,c.aa>=c.Ga&&(c.aa=c.Ga),0>c.aa&&(c.aa=0),c.ha=20,a.g.update(a.g.D|128),Va(a))}this.D=b;a.m.D&4&&W(a,2,this)}}(a)};a.m={D:0,read:function(){},
update:function(a){return function(b){void 0!==b&&(this.D=b&-193);W(a,3,this);a.i.update();a.w.update()}}(a)};a.B={D:0,read:function(){},update:function(a){return function(b){void 0!==b&&(3==(b&3)&&(a.h.D=14),this.D=b);a.h.update()}}(a)};a.h={D:14,read:function(){},update:function(a){return function(b){void 0===b&&(b=a.h.D);b&=-2;0<=a.b&&0<=a.c[a.b].ga&&(b|=1);this.D=b;W(a,16,this)}}(a)};a.s={D:0,read:function(a){return function(){Wa(a)}}(a),update:function(a){return function(b){void 0!==b&&(this.D=
b);W(a,17,this)}}(a)};a.C={D:0,read:function(){},update:function(){return function(){}}(a)}}e.J=function(a,b,c){switch(b){case "listDisk":return this.A[b]=c,!0;case "loadDisk":return this.A[b]=c,c.onclick=function(a){return function(){if(a.A.listDisk){var b=a.A.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.F("loading "+aa(b)+"...");r(c,function(b,c,d){Xa(a,b,c,d)})}}}(this),!0}return!1};
e.X=function(a,b,c,d){this.a=a;this.o=b;if(this.f=d)va(d,b,c,this,this.W),O(d,b,c,this,this.R);this.N()};e.$=function(a){a&&!this.u.H&&(this.u.H=!0)};
function Xa(a,b,c,d){if(d)a.F("disk load error ("+d+")");else{d=[];a.F("mounting "+b+"...");try{if(d=eval("("+c+")"),d.length)if(d[0].length){var f=d[0];if(void 0===f[0].trackNum)a.F("data error: "+f[0]);else if(a.c[0]){for(c=0;c<f.length;c++){var g,k=f[c],h=k.sectors;if(void 0===(g=k.trackNum)||void 0===h)throw Error("track "+c+" missing data");g!=c&&t("track "+g+" out of order (expected "+c+")");d=[];var l,m,n;if(g){Ya(d,k,"trackSig");Za(d,k);X(d,k,"trackType");for(var u=0;u<h.length;u++){l=h[u];
m=l.sectorData;X(d,l,"sectorSig");X(d,l,"sectorNum");X(d,l,"sectorPages");for(n=0;n<m.length;n++)d.push(m[n]);Ya(d,l,"sectorEndSig")}}else for(l=h[0],m=l.sectorData,X(d,k,"trackLoad",2),X(d,l,"sectorPages"),n=0;n<m.length;n++)d.push(m[n]);f[g].Xa=d}a.c[0].sa=f;a.F("mount of "+b+" complete")}else a.F("no available drives")}else a.F("no tracks: "+b);else a.F("no data: "+b)}catch(eb){a.F("disk data error: "+eb.message)}}}
function Za(a,b){var c=b.trackNum;if(void 0===c)throw Error("missing bcd value: trackNum");a.push(Math.floor(c/10)<<4|c%10)}function X(a,b,c,d){b=b[c];if(void 0===b)throw Error("missing binary value: "+c);2==d&&a.push(b>>8&255);a.push(b&255)}function Ya(a,b,c){b=b[c];if(void 0===b)throw Error("missing signature: "+c);for(c=0;c<b.length;c++)a.push(b.charCodeAt(c))}
function $a(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case 0:a=a.j.D&4?a.g:a.v;break;case 1:a=a.j;break;case 2:a=a.m.D&4?a.i:a.w;break;case 3:a=a.m;break;case 16:a=c?a.B:a.h;break;case 17:a=a.s;break;default:a=a.C}return a}e.W=function(a,b){void 0!==b&&$a(this,a-this.o,!1).read()};e.R=function(a,b){if(void 0!==b){var c=this.f.W(a);$a(this,a-this.o,!0).update(c)}};function Ua(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&32||(d|=2),a.g.D&64||(d|=1));a.b!=d&&(a.b=d,a.h.update())}
function Va(a){0<=a.b&&(a.c[a.b].ga=-1,a.s.update(255),a.h.update())}function Wa(a){var b=null;if(0<=a.b){var b=a.c[a.b],c=b.sa[b.aa];void 0!==c&&(0<=b.ga&&b.ga<c.Xa.length?(b.ha=100,b=c.Xa[b.ga++],a.s.update(b),a.h.update()):(b.ha=10,Va(a)))}}function W(a,b,c){a.f.R(b+a.o,c.D)}y(function(){for(var a=I(document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Sa(d);H(d,c)}});function Y(a,b){B.call(this,"C1PComputer",a);this.M=b}D(Y);
function Va(a){0<=a.b&&(a.c[a.b].ga=-1,a.s.update(255),a.h.update())}function Wa(a){var b;if(0<=a.b){b=a.c[a.b];var c=b.sa[b.aa];void 0!==c&&(0<=b.ga&&b.ga<c.Xa.length?(b.ha=100,b=c.Xa[b.ga++],a.s.update(b),a.h.update()):(b.ha=10,Va(a)))}}function W(a,b,c){a.f.R(b+a.o,c.D)}y(function(){for(var a=I(document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Sa(d);H(d,c)}});function Y(a,b){B.call(this,"C1PComputer",a);this.M=b}D(Y);
Y.prototype.reset=function(a){var b=null,c;for(c in this.M)for(var d=0;d<this.M[c].length;d++){var f=this.M[c][d];f&&f.reset&&(f.reset(),"cpu"==c&&(b=f))}b&&(b.update(),a&&N(b))};Y.prototype.start=function(){for(var a in this.M)if("cpu"!=a)for(var b=0;b<this.M[a].length;b++){var c=this.M[a][b];c&&c.start&&c.start()}};Y.prototype.stop=function(a,b){for(var c in this.M)if("cpu"!=c)for(var d=0;d<this.M[c].length;d++){var f=this.M[c][d];f&&f.stop&&f.stop(a,b)}};
Y.prototype.J=function(a,b,c){switch(b){case "reset":return this.A[b]=c,c.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function L(a,b){return a.M[b]?a.M[b][0]:null}function ab(a){var b=null,c;for(c in a.M)for(var d=0;d<a.M[c].length;d++){var f=a.M[c][d];if(f){if(!J(f)){J(f,function(a){return function(){ab(a)}}(a));return}"cpu"==c?b=f:f.$&&f.$(!0,a)}}a.N();a.F("C1Pjs v1.30.0\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>");b&&b.$(!0,a)}
y(function(){for(var a=I(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=G(c),f,g={},k,h=0,l=0,m=0;m<d.modules.length;m++){var n=d.modules[m];if(!m){if("cpu"!=n.type)break;h=n.start;l=n.end;k=Array(l+1-h);for(f=h;f<k.length;f++)k[f]=0}if(f=F(n.refID,d.id)){var u=n.type;void 0===g[u]&&(g[u]=[]);g[u].push(f);f.X&&void 0!==n.start&&f.X(k,n.start,n.end,g.cpu[0])}else{t('no component for <module refid="'+n.refID+'">');return}}if(void 0===k){t('<module type="cpu"> definition must appear first in the <computer> specification');
y(function(){for(var a=I(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=G(c),f,g={},k,h=0,l=0,m=0;m<d.modules.length;m++){var n=d.modules[m];if(!m){if("cpu"!=n.type)break;h=n.start;l=n.end;k=Array(l+1-h);for(f=h;f<k.length;f++)k[f]=0}if(f=F(n.refID,d.id)){var u=n.type;void 0===g[u]&&(g[u]=[]);g[u].push(f);f.X&&void 0!==n.start&&f.X(k,n.start,n.end,g.cpu[0])}else{t('no component for <module refid="'+n.refID+'">');return}}if(!k){t('<module type="cpu"> definition must appear first in the <computer> specification');
break}if(f=F("debugger",d.id))g["debugger"]=[f],f.X&&f.X(k,h,l,g.cpu[0]);h=new Y(d,g);if(l=F("panel",d.id))if(g.panel=[l],l.ya){f=d.id;d=void 0;g=[];f&&(f=0<(d=f.indexOf("."))?f.substr(0,d+1):"");for(d=0;d<C.length;d++)m=C[d],f&&m.id.indexOf(f)||g.push(m);d=g;for(g=0;g<d.length;g++)f=d[g],f!=l&&(f.ua=l.ua,f.F=l.F,f.ya=l.ya)}H(h,c);ab(h)}});var Z=0;function bb(a,b,c,d,f,g){f("Loading "+a+"...");r(a,function(k,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),g(h,null)):cb(h,a,b,c,d,f,g)})}
function cb(a,b,c,d,f,g,k){function h(a,g){if(g)k(g,null);else{if(c){E[c]&&b&&(E[c][b]=a);var h=b;h&&0>h.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(h=window.location.pathname+h);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+h+'"}';"object"==typeof resources&&(h=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(h?' url="'+h+'"':""))}f||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,
"$1C1Pjs$2"),a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1c1pjs$2"));h=null;if("<"==a.charAt(0))try{f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(u){h=null,a=u.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,h)}}a?f?db(a,g,h):h(a,null):k("no data"+(b?" for file: "+