Added some minor exception handling improvements

This commit is contained in:
Jeff Parsons 2014-10-30 12:06:26 -07:00 committed by jeffpar
commit c2a89b07dd
12 changed files with 1141 additions and 1140 deletions

View file

@ -2,16 +2,16 @@
function s(a,b,c){var d;d=!0;var e=0,g=null,h=ba(a),k=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(k.onreadystatechange=function(){4===k.readyState&&(g=k.responseText,200==k.status||!k.status&&g.length&&"file:"==(window?window.location.protocol:"file:")||(e=k.status||-1),c&&(b?c.call(b,h,g,e,void 0):c(h,g,e,void 0)))});k.open("GET",a,d);k.send();d||(g=k.responseText,200!=k.status&&(e=k.status||-1),c&&(b?c.call(b,h,g,e,void 0):c(h,g,e,void 0)))}
function t(a){window?window.alert(a):console.log(a)}function u(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function ea(a,b,c){function d(){a-=1;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function fa(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,g=!1;a.onmousedown=function(){g||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);g=!0}}var v={init:[],show:[],exit:[]},ga=!1,w=!0;function ha(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function x(a){v.init.push(a)}
function y(a){if(w)for(var b=0;b<a.length;b++)a[b]()}function ia(a){!w&&a?(w=!0,ga&&ja("init")):w=a}function ja(a){v[a]&&y(v[a])}ha("onload",function(){ga=!0;y(v.init)});ha("onpageshow",function(){y(v.show)});ha(u("Opera")||u("iOS")?"onunload":"onbeforeunload",function(){y(v.exit)});
function y(a){if(w)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to Jeff@pcjs.org. Thanks.")}}function ia(a){!w&&a?(w=!0,ga&&ja("init")):w=a}function ja(a){v[a]&&y(v[a])}ha("onload",function(){ga=!0;y(v.init)});ha("onpageshow",function(){y(v.show)});ha(u("Opera")||u("iOS")?"onunload":"onbeforeunload",function(){y(v.exit)});
function z(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Gd=this.id.substr(0,b),this.Fd=this.id.substr(b+1)):this.Fd=this.id;this[a]=c;this.wc=null;this.jb=this.Sa=this.uc=this.Tb=!1;this.r={};this.m=null;ka(this);A[A.length]=this}var la=void 0;if(window){la||(la=window.location.search.substr(1));for(var ma,na=/\+/g,oa=/([^&=]+)=?([^&]*)/g;ma=oa.exec(la);)ma[1].replace(na," "),ma[2].replace(na," ")}
function pa(){var a=z.prototype;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 B(a){a.prototype=pa()}var A=[];function C(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<A.length;c++)if(A[c].id===a)return A[c]}return null}
function E(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("({"+a+"})")}catch(c){t(c.message+" ("+a+")")}return b}
function F(a,b){var c,d;d=G(b.parentNode,"c1pjs-control");for(c=0;c<d.length;c++){var e,g;g=d[c].childNodes;for(e=0;e<g.length;e++){var h=g[e];if(h.nodeType===window.document.ELEMENT_NODE){var k=h.getAttribute("class");if(k){var l,m;m=k.split(" ");for(l=0;l<m.length;l++)switch(k=m[l],k){case "c1pjs-input":case "c1pjs-output":(m=E(h))&&m.binding&&a.I(k,m.type,m.binding,h),m=[]}}}}}}
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}
function D(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("({"+a+"})")}catch(c){t(c.message+" ("+a+")")}return b}
function E(a,b){var c,d;d=F(b.parentNode,"c1pjs-control");for(c=0;c<d.length;c++){var e,g;g=d[c].childNodes;for(e=0;e<g.length;e++){var h=g[e];if(h.nodeType===window.document.ELEMENT_NODE){var k=h.getAttribute("class");if(k){var l,m;m=k.split(" ");for(l=0;l<m.length;l++)switch(k=m[l],k){case "c1pjs-input":case "c1pjs-output":(m=D(h))&&m.binding&&a.I(k,m.type,m.binding,h),m=[]}}}}}}
function F(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}
z.prototype={toString:function(){return this.name?this.name:this.id||this.type},I:function(a,b,c,d){switch(c){case "clear":return this.r[c]||(this.r[c]=d,d.onclick=function(a){return function(){a.r.print&&(a.r.print.value="")}}(this)),!0;case "print":return this.r[c]||(this.sc=this.r[c]=d,d.value="",this.i=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}}(d),this.Xb=function(a,
b,c){this.i(a,"notice",c)}),!0;default:return!1}},log:function(){},i:function(){},status:function(a){this.i(this.Fd+": "+a)},Xb:function(a,b){b||t(a)},P:function(a){!this.jb&&(this.Tb=!1!==a)&&(this.name&&this.log("ready"),a=this.wc,this.wc=null,a&&a())}};function H(a,b){if(a.uc)return a.Sa&&(a.Sa=!1),a.uc=!1;if(a.jb)return a.i(a.toString()+" error"),!1;a.Sa=b;return a.Sa}function I(a,b){a.Sa&&(b?a.uc=!0:void 0===b&&a.i(a.toString()+" busy"));return a.Sa}
function J(a,b){b&&(a.Tb?b():a.wc=b);return a.Tb}function K(a,b){a.jb=!0;a.Xb("Fatal error: "+b)}function ka(a){var b=1;a.Gd&&(a=a.Gd.match(/\d+/),null!==a&&(b=parseInt(a[0],10)));return b}window&&!window.document.ELEMENT_NODE&&(window.document.ELEMENT_NODE=1);function qa(a){z.call(this,"C1PPanel",a);this.C=!1}B(qa);qa.prototype.I=function(a,b,c,d){return this.N&&this.N.I(a,b,c,d)||this.l&&this.l.I(a,b,c,d)||this.G&&this.G.I(a,b,c,d)||this.m&&this.m.I(a,b,c,d)?!0:z.prototype.I.call(this,a,b,c,d)};
qa.prototype.ba=function(a,b){a&&!this.C&&(this.C=!0,this.N=b,this.l=L(b,"cpu"),this.G=L(b,"keyboard"),this.m=L(b,"debugger"),ra())};function ra(){for(var a=!1,b=G(window.document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],e=E(d),g=C(e.id);g||(a=!0,g=new qa(e));F(g,d);a&&g.P()}}x(ra);
qa.prototype.ba=function(a,b){a&&!this.C&&(this.C=!0,this.N=b,this.l=L(b,"cpu"),this.G=L(b,"keyboard"),this.m=L(b,"debugger"),ra())};function ra(){for(var a=!1,b=F(window.document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],e=D(d),g=C(e.id);g||(a=!0,g=new qa(e));E(g,d);a&&g.P()}}x(ra);
function sa(a){z.call(this,"C1PCPU",a);ta(this);this.ga=this.C=!1;this.Cd=a.autoStart;this.Hb=0;this.qd=1;this.Ma=2;this.speed=this.Hb;this.pb=1E6;this.Cc=this.Ec=30;this.Bc=5;this.Qf=1;this.mb=8;this.wd=["Slow","Fast","Max"];this.Df=["("+this.Qf+"Mhz)","(up to "+this.mb+"Mhz)","(unlimited)"];this.Ca=[];this.sa=[];this.nc=65536;this.oc=0;this.Lb=65536;this.Mb=0;this.qe=128;this.re=64;this.me=16;this.oe=8;this.pe=4;this.se=2;this.ne=1;this.zf=65532;this.Gb=32;this.gc=2;this.wf=0;this.pd=1;this.t=[this.Dg,
this.Xh,this.Oi,this.j,this.j,this.Zh,this.tg,this.j,this.bi,this.Wh,this.sg,this.j,this.j,this.Th,this.qg,this.j,this.Cg,this.Yh,this.j,this.j,this.j,this.$h,this.ug,this.j,this.Gg,this.Vh,this.j,this.j,this.j,this.Uh,this.rg,this.j,this.uh,this.mg,this.j,this.j,this.zg,this.og,this.hi,this.j,this.di,this.lg,this.gi,this.j,this.yg,this.ig,this.ei,this.j,this.Ag,this.ng,this.j,this.j,this.j,this.pg,this.ii,this.j,this.yi,this.kg,this.j,this.j,this.j,this.jg,this.fi,this.j,this.oi,this.ih,this.j,this.j,
this.j,this.kh,this.Qh,this.j,this.ai,this.hh,this.Ph,this.j,this.th,this.eh,this.Nh,this.j,this.Eg,this.jh,this.j,this.j,this.j,this.lh,this.Rh,this.j,this.Ig,this.gh,this.j,this.j,this.j,this.fh,this.Oh,this.j,this.pi,this.Vd,this.j,this.j,this.j,this.Xd,this.mi,this.j,this.ci,this.Ud,this.li,this.j,this.sh,this.Rd,this.ji,this.j,this.Fg,this.Wd,this.j,this.j,this.j,this.Yd,this.ni,this.j,this.Ai,this.Td,this.j,this.j,this.j,this.Sd,this.ki,this.j,this.j,this.Ei,this.j,this.j,this.Mi,this.Gi,this.Ji,
@ -27,7 +27,7 @@ function Aa(a){O(a,"A",a.e,2);O(a,"X",a.n,2);O(a,"Y",a.p,2);var b=Ba(a);O(a,"C",
function za(a,b){var c=a.Ec;c<a.Cc&&(c=a.Cc);c<a.Bc&&(c=a.Bc);var d=1;b&&a.speed>a.Hb&&a.ua&&(d=a.ua);d>a.mb&&a.speed<a.Ma&&(d=a.mb);a.Sf=Math.round(1E3/a.Ec);a.Wb=Math.floor(a.pb/c*d);a.xc=Math.floor(a.pb/a.Ec*d);a.Jd=Math.floor(a.pb/a.Cc*d);a.Id=Math.floor(a.pb/a.Bc*d);b||(a.Va=a.xc,a.ob=a.Jd,a.nb=a.Id);a.Ac=0}
function Ca(a){var b=r(),c=a.Sf;a.qb&&(c=Math.round(c*a.qb/a.xc));c-=b-a.Vf;if(b-=a.Hd)a.ua=Math.round(a.Xa/(100*b))/10,864E5<=b&&M(a);0>c?c=0:a.speed==a.qd?a.ua<=a.mb&&(c=0):a.speed==a.Ma&&(c=0);a.Ac+=a.qb;return c}
f.ya=function(){if(H(this,!0)){this.ga||(M(this),this.N&&this.N.start(),this.ga=!0,this.r.run&&(this.r.run.innerHTML="Halt"),this.W());this.Ac>=this.pb&&za(this,!0);this.qb=0;this.Vf=r();try{do{this.step(this.Wb);var a=this.va-this.F;this.Xa+=a;this.qb+=a;this.va=this.F=0;this.ob-=this.Wb;0>=this.ob&&(this.ob+=this.Jd,this.tc());this.nb-=this.Wb;0>=this.nb&&(this.nb+=this.Id,Aa(this));this.Va-=this.Wb;if(0>=this.Va){this.Va+=this.xc;break}}while(this.ga)}catch(b){this.T();this.update();H(this,!1);
K(this,b.message||b);return}setTimeout(function(a){return function(){a.ya()}}(this),Ca(this))}else this.update(),this.N&&this.N.stop(this.Hd,this.Xa)};
K(this,b.message);return}setTimeout(function(a){return function(){a.ya()}}(this),Ca(this))}else this.update(),this.N&&this.N.stop(this.Hd,this.Xa)};
f.step=function(a){var b=!0;this.b=this.h=-1;var c;if(c=a)if(c=this.m)c=this.m,c=0<c.ra.length||0<c.Ba.length||0<c.Ea.length;this.va=this.F=a;do{a=this.a[this.d];var d;if(d=c){d=this.m;var e=a,g=!1;Da(d,this.d,d.ra,"exec")?g=!0:(d.Pa++,d.fa[e][1]++,d.Da[d.kb++]=d.l.d,d.kb>=d.Da.length&&(d.kb=0));d=!!g}if(d){b=void 0;this.T();break}this.d++;this.t[a].call(this);if(0<=this.b){this.b>=this.nc&&this.b<=this.oc&&xa(this,this.b,this.d);if(d=c)d=this.m,e=!1,Da(d,this.b,d.Ba,"read")&&(e=!0),d=!!e;if(d){b=
!1;this.T();break}this.b=-1}else if(0<=this.h){this.h>=this.Lb&&this.h<=this.Mb&&ya(this,this.h,this.d);if(d=c){d=this.m;var e=this.h,g=this.a[this.h],h=!1;(g&255)!=g&&(d.i("invalid value at "+p(e)+": "+g),h=!0);Da(d,e,d.Ea,"write")&&(h=!0);d=!!h}if(d){b=!1;this.T();break}this.h=-1}this.F-=this.Cf[a]}while(0<this.F);return b};function Ea(a){a.Va=0;a.va-=a.F;a.F=0}f.T=function(){I(this,!0);this.va-=this.F;this.F=0;this.ga&&(this.ga=!1,this.r.run&&(this.r.run.innerHTML="Run"))};
f.update=function(){this.tc();Aa(this)};function Fa(a){return a.ga?a.Xa+a.va-a.F:0}f.H=function(a){return this.a[a]};f.O=function(a,b){this.a[a]=b};function Ba(a){var b=a.c&256?1:0,b=b|(a.g&255?0:2),b=b|((a.u&255^a.v^a.u>>1)&128?64:0),b=b|(a.f&128?128:0);return a.w&60|b}
@ -75,11 +75,11 @@ f.fe=function(){this.b=this.a[this.d++]+this.n&255;this.c=this.e-this.a[this.b]-
f.ae=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.p;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.si=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.p;this.e=Q(this,this.e,this.a[this.b])};
f.$d=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.c=this.e-this.a[this.b]-(this.c&256?0:1);this.v=this.e^this.a[this.b];this.u=this.c;this.f=this.g=this.e=this.c&255;this.c^=256};f.ri=function(){this.b=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.e=Q(this,this.e,this.a[this.b])};f.nh=function(){this.h=(this.a[this.d++]|this.a[this.d++]<<8)+this.n;this.f=this.g=this.a[this.h]=this.a[this.h]+1&255};
f.Oi=function(){var a;a=this.a[this.d++];switch(a){case this.wf:this.i("HALT");this.T();break;case this.pd:a=this.d;for(var b="";a<this.a.length;){var c=this.a[a++];if(!c)break;b+=String.fromCharCode(c)}this.d=a;b=b.replace(/%A/g,n(this.e)).replace(/%X/g,n(this.n)).replace(/%Y/g,n(this.p));this.i(b);Ea(this);break;default:this.d-=2,this.i("undefined opSim: "+n(a)+" at "+p(this.d)),this.T()}};f.j=function(){var a=this.a[--this.d];this.i("undefined opcode: "+n(a)+" at "+p(this.d));this.T()};
x(function(){for(var a=G(window.document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new sa(d);F(d,c)}});function R(a){z.call(this,"C1PROM",a);this.ta=this.a=null;this.Qa=a.size;if(this.tb=a.image){a=this.tb;var b;b=this.tb;var c="",d=b.lastIndexOf(".");0<=d&&(c=b.substr(d+1).toLowerCase());b=c;"json"!=b&&"hex"!=b&&(a="http://"+window.location.host+"/api/v1/dump?file="+this.tb);s(a,this,this.If)}}B(R);
x(function(){for(var a=F(window.document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new sa(d);E(d,c)}});function R(a){z.call(this,"C1PROM",a);this.ta=this.a=null;this.Qa=a.size;if(this.tb=a.image){a=this.tb;var b;b=this.tb;var c="",d=b.lastIndexOf(".");0<=d&&(c=b.substr(d+1).toLowerCase());b=c;"json"!=b&&"hex"!=b&&(a="http://"+window.location.host+"/api/v1/dump?file="+this.tb);s(a,this,this.If)}}B(R);
R.prototype.V=function(a,b,c,d){this.a=a;this.Gc=b;a=c-b+1;this.Qa||(this.Qa=a);a!=this.Qa?K(this,"computer-specified ROM size ("+p(a)+") does not match component-specified size ("+p(this.Qa)+")"):(d&&(this.l=d,N(d,b,c,this,this.O)),Ia(this))};R.prototype.ba=function(a,b){a&&!this.C&&(this.C=!0,this.m=L(b,"debugger"))};R.prototype.O=function(a,b){if(void 0!==b){this.m&&S(this.m,this,a,b,this.m.dc,!0);var c=a-this.Gc;this.a[this.Gc+c]=this.ta?this.ta[c]:0}};
R.prototype.If=function(a,b,c){if(c)this.i('Error loading ROM "'+a+'" ('+c+")");else{if("["==b[0])try{this.ta=eval("("+b+")")}catch(d){this.i('Error processing ROM "'+a+'": '+(d.message||d));return}else for(a=b.replace(/\n/gm," ").replace(/ +$/,"").split(" "),this.ta=Array(a.length),b=0;b<a.length;b++)this.ta[b]=parseInt(a[b],16);Ia(this)}};
function Ia(a){if(!J(a))if(!a.tb)a.P();else if(a.ta&&a.a){var b=a.ta.length;if(b!=a.Qa)K(a,"ROM image size ("+p(b)+") does not match component-specified size ("+p(a.Qa)+")");else{for(var c=0;c<b;c++)a.a[a.Gc+c]=a.ta[c];a.P()}}}x(function(){for(var a=G(window.document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new R(d);F(d,c)}});function Ja(a){z.call(this,"C1PRAM",a)}B(Ja);Ja.prototype.V=function(a){this.a=a;this.P()};
x(function(){for(var a=G(window.document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Ja(d);F(d,c)}});
R.prototype.If=function(a,b,c){if(c)this.i('Error loading ROM "'+a+'" ('+c+")");else{if("["==b[0])try{this.ta=eval("("+b+")")}catch(d){this.i('Error processing ROM "'+a+'": '+d.message);return}else for(a=b.replace(/\n/gm," ").replace(/ +$/,"").split(" "),this.ta=Array(a.length),b=0;b<a.length;b++)this.ta[b]=parseInt(a[b],16);Ia(this)}};
function Ia(a){if(!J(a))if(!a.tb)a.P();else if(a.ta&&a.a){var b=a.ta.length;if(b!=a.Qa)K(a,"ROM image size ("+p(b)+") does not match component-specified size ("+p(a.Qa)+")");else{for(var c=0;c<b;c++)a.a[a.Gc+c]=a.ta[c];a.P()}}}x(function(){for(var a=F(window.document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new R(d);E(d,c)}});function Ja(a){z.call(this,"C1PRAM",a)}B(Ja);Ja.prototype.V=function(a){this.a=a;this.P()};
x(function(){for(var a=F(window.document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new Ja(d);E(d,c)}});
function Ka(a){z.call(this,"C1PKeyboard",a);this.C=!1;this.yc=a.model;this.Qc=8;this.Ge=9;this.Ee=10;this.De=13;this.Fe=16;this.Ce=17;this.ze=18;this.Ae=20;this.Rc=27;this.Be=91;this.we=this.Qc;this.xe=this.Ee;this.te=this.De;this.Lc=this.Rc;this.S=224;this.o=this.Fe+this.S;this.zb=this.Ce+this.S;this.cc=this.ze+this.S;this.Mc=this.Ae+this.S;this.Kc=0+this.S;this.ue=3;this.ve=15;this.yb=1;this.xb=2;this.wb=4;this.$a=8;this.vb=64;this.bc=this.xb|this.wb|this.vb;this.od=0;this.uf=1;this.tf=2;this.vf=
3;this.sf=4;this.Wf=8192;this.Tf=250;this.Uf=100;this.Rf=300;this.Na=[];this.Na["break"]=this.Kc;this.Na.esc=this.Lc;this.Na["ctrl-c"]=this.ue;this.Na["ctrl-o"]=this.ve;this.k=[];this.k[49]=30464;this.k[33]=30464+this.o;this.k[50]=30208;this.k[34]=30208+this.o;this.k[51]=29952;this.k[35]=29952+this.o;this.k[52]=29696;this.k[36]=29696+this.o;this.k[53]=29440;this.k[37]=29440+this.o;this.k[54]=29184;this.k[38]=29184+this.o;this.k[55]=28928;this.k[39]=28928+this.o;this.k[56]=26368;this.k[40]=26368+this.o;
this.k[57]=26112;this.k[41]=26112+this.o;this.k[48]=25856;this.k[58]=25600;this.k[42]=25600+this.o;this.k[45]=25344;this.k[61]=25344+this.o;this.k[46]=22272;this.k[62]=22272+this.o;this.k[108]=22016;this.k[76]=22016+this.o;this.k[92]=22016+this.o;this.k[111]=21760;this.k[79]=21760+this.o;this.k[this.we]=21760+this.o;this.k[this.xe]=21504;this.k[this.te]=21248;this.k[119]=18176;this.k[87]=18176+this.o;this.k[101]=17920;this.k[69]=17920+this.o;this.k[114]=17664;this.k[82]=17664+this.o;this.k[116]=17408;
@ -93,7 +93,7 @@ function Oa(a,b){!a.xa||void 0!==b&&b==a.xa||(a.m&&T(a.m,a.m.za)&&a.m.message("a
function La(a,b,c){var d,e=!c;b=b.keyCode;c&&(a.ge=b);b==a.o-a.S?(a.A&=~a.wb,c&&(a.A|=a.wb),b+=a.S,e=!1):b==a.cc-a.S?(a.A&=~a.xb,c&&(a.A|=a.xb),b+=a.S,e=!1):b==a.zb-a.S?(a.A&=~a.vb,c&&(a.A|=a.vb),b+=a.S,e=!1):b==a.Mc-a.S?(c=!c,a.A&=~a.yb,c&&(a.A|=a.yb),b+=a.S,e=!1):b==a.Be?(a.A&=~a.$a,c&&(a.A|=a.$a),e=!1,d=!0):d=b==a.Ge?e=!1:b==a.Rc||b==a.Qc?c?!Ma(a,b):!1:!0;e&&(a.A&=~a.$a,a.vc||b!=a.ge||Oa(a));void 0===d&&(d=!U(a,b,c,a.tf));a.m&&T(a.m,a.m.za)&&a.m.message("key"+(c?"Down":"Up")+"("+n(b)+"): "+(d?
"pass":"consume"));return d}function Ma(a,b){var c=!1;b==a.Kc?a.N&&(a.N.reset(!0),c=!0):(a.vc&&65<=b&&90>=b&&(b+=32),Oa(a,b),U(a,b,!0,a.od)&&(a.l.speed==a.l.Ma?U(a,b,!1,a.uf):(c=!1,a.da[b]&&(clearTimeout(a.da[b]),c=!0),c=Na(a,c),a.da[a.xa=b]=setTimeout(function(a){return function(){U(a,b,!1,a.vf)}}(a),c),a.m&&T(a.m,a.m.za)&&a.m.message("keyPressSimulate("+n(b)+"): setTimeout()")),c=!0));a.m&&T(a.m,a.m.za)&&a.m.message("keyPressSimulate("+n(b)+"): "+(c?"true":"false"));return c}
function U(a,b,c,d){var e=!1;c||(a.da[b]=null,a.xa==b&&(a.xa=0));var g=0,h=a.k[b];void 0===h&&(1<=b&&26>=b&&(b+=64,g=a.zb),h=a.k[b]);void 0!==h&&(b=h>>12,e=h>>8&15,g||(g=h&255),c?(a.M[b]|=1<<e,a.M[0]=g==a.zb?a.M[0]|a.vb:g==a.o?a.M[0]|a.wb:g==a.cc?a.M[0]|a.xb:a.M[0]&~a.bc):(a.M[b]&=~(1<<e),a.M[0]&=~a.bc,a.M[0]|=a.A&a.bc),c=d==a.od&&!a.kc.length,a.kc.push(a.M.slice()),a.ac(c),e=!0);return e}f.H=function(){};f.O=function(a){var b=this.l.H(a);this.yd=b^this.qc;this.Dc++;this.ac(!1,a,b)};
f.ac=function(a,b){var c=Fa(this.l);if(!a)if(this.l.speed==this.l.Ma)a=void 0!==b&&32<=this.Dc;else{var d=c-this.Kd;a=0>d||d>=this.Wf}a&&(d=this.kc.shift(),void 0!==d&&(this.xd=d),this.Dc=0,this.Kd=c);for(d=c=0;8>d;d++)this.yd&1<<d&&(c|=this.xd[d]);c^=this.qc;if(void 0!==b)this.a[b]=c;else if(b=this.Pd,c!=this.zd)for(d=b;d<this.$f;d++)this.a[d]=c;this.zd=c};x(function(){for(var a=G(window.document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Ka(d);F(d,c)}});
f.ac=function(a,b){var c=Fa(this.l);if(!a)if(this.l.speed==this.l.Ma)a=void 0!==b&&32<=this.Dc;else{var d=c-this.Kd;a=0>d||d>=this.Wf}a&&(d=this.kc.shift(),void 0!==d&&(this.xd=d),this.Dc=0,this.Kd=c);for(d=c=0;8>d;d++)this.yd&1<<d&&(c|=this.xd[d]);c^=this.qc;if(void 0!==b)this.a[b]=c;else if(b=this.Pd,c!=this.zd)for(d=b;d<this.$f;d++)this.a[d]=c;this.zd=c};x(function(){for(var a=F(window.document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new Ka(d);E(d,c)}});
function Qa(a,b,c,d){z.call(this,"C1PVideo",a);this.yc=a.model;this.Ld=a.charCols;this.Md=a.charRows;this.Jf=a.screenWidth;this.Kf=a.screenHeight;this.Ob=a.charWidth;this.Pb=a.charHeight;Ra(this);this.Qb=b;this.Hf=c;this.lb=d;this.ib=56832}B(Qa);f=Qa.prototype;f.reset=function(a){this.ub(this.yc);if(this.a)for(var b=this.Yb;b<this.Hc;b++)this.a[b]=a?Math.floor(256*Math.random()):32};
f.I=function(a,b,c,d){switch(c){case "refresh":return this.r[c]=d,d.onclick=function(a){return function(){Sa(a);ua(a)}}(this),!0}return!1};f.V=function(a,b,c,d){this.a=a;this.Yb=b;this.Gf=c-b+1;this.Hc=this.Yb+this.Gf;d&&(this.l=d,void 0!==this.ib&&(va(d,this.ib,this.ib,this,this.H),N(d,this.ib,this.ib,this,this.O)));this.reset(!0)};
function Ra(a,b,c,d,e){a.Vb=void 0!==b?b:a.Ld;a.Xf=void 0!==c?c:a.Md;a.Ra=a.Vb*a.Xf;a.Hc=a.Yb+a.Ra;a.Ed=void 0!==d?d:0;a.Nd=void 0!==e?e:c;a.Ad=Math.floor(a.Jf/a.Vb);a.Bd=Math.floor(a.Kf/a.Nd)}f.W=function(){this.Qb.focus()};f.ub=function(a){this.rb=a;600==this.rb?(Ra(this,this.Ld,this.Md,4,24),1024==this.Ra&&this.l&&(this.Kb=this.Hc+this.Ra-1,N(this.l,this.Kb,this.Kb,this,this.le))):(this.i("updated video model: "+this.rb),Ra(this,64,32));Sa(this);ua(this)};
@ -101,12 +101,12 @@ f.ba=function(a,b){if(a&&!this.C&&J(this)){if(this.C=!0,this.m=L(b,"debugger"),t
f.H=function(a,b){var c=this.l.H(a);void 0!==b&&this.m&&S(this.m,this,a,b,this.m.Ab);this.l.O(a,c&127|(Math.floor(Fa(this.l)/8333)&1?128:0))};f.O=function(a,b){void 0!==b&&this.m&&S(this.m,this,a,b,this.m.Ab)};
f.le=function(a,b){if(void 0!==b){this.m&&S(this.m,this,a,b,this.m.Ab,!0);this.ub(540);this.G&&this.G.ub(542);var c=this.l,d=c.sa,e=[],g=wa(d,this.Kb,this.Kb,this,this.le);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.Lb=e[2],c.Mb=e[3])}};function Sa(a){a.lc=Array(a.Ra);for(var b=0;b<=a.Ra;b++)a.lc[b]=-1}
function ua(a){var b=0;if(a.C)for(;b<a.Ra;){var c=a.a[a.Yb+b];if(a.lc[b]!=c){var d=Math.floor(b/a.Vb);if(d>=a.Ed&&(d-=a.Ed,d<a.Nd)){var e=c*a.Ob;a.Hf.drawImage(a.lb,e%a.lb.width,Math.floor(e/a.lb.width)*a.Pb,a.Ob,a.Pb,b%a.Vb*a.Ad,d*a.Bd,a.Ad,a.Bd)}a.lc[b]=c}b++}}
x(function(){for(var a=G(window.document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=E(c),e=window.document.createElement("canvas");if(void 0===e){c.innerHTML="<br/>Missing &lt;canvas&gt; support; try a new 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 Qa(d,e,h,g);g.onload=function(a){return function(){a.P()}}(e,d.charSet);g.src=d.charSet;F(e,c)}});
x(function(){for(var a=F(window.document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=D(c),e=window.document.createElement("canvas");if(void 0===e){c.innerHTML="<br/>Missing &lt;canvas&gt; support; try a new 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 Qa(d,e,h,g);g.onload=function(a){return function(){a.P()}}(e,d.charSet);g.src=d.charSet;E(e,c)}});
function Ta(a){z.call(this,"C1PSerialPort",a);this.C=!1;this.Dd=a.demo;this.yf=0;this.xf=1;this.reset()}B(Ta);f=Ta.prototype;f.reset=function(){2!=this.Fa&&(this.Nb=this.pc=0,this.Za='10 PRINT "HELLO OSI #'+ka(this)+'"\n',this.Fa=this.Ub=0)};f.start=function(){this.G&&this.Dd&&(V(this.G," C\n\n",3E3),setTimeout(function(a){return function(){a.Fa=1;V(a.G,"LOAD\n")}}(this),12E3));this.Dd=!1};
f.I=function(a,b,c,d){switch(c){case "listSerial":return this.r[c]=d,!0;case "loadSerial":return this.r[c]=d,d.onclick=function(a){return function(){a.r.listSerial&&s(a.r.listSerial.value,a,a.Pf)}}(this),!0}return!1};f.V=function(a,b,c,d){this.a=a;this.Fc=b;this.Ff=c-b+1;this.Qd=this.Fc+this.Ff;if(this.l=d)va(d,b,c,this,this.H),N(d,b,c,this,this.O);this.P()};f.ba=function(a,b){a&&!this.C&&(this.C=!0,this.N=b,this.G=L(b,"keyboard"),this.m=L(b,"debugger"))};
f.Pf=function(a,b,c){b?(this.Za=b,this.Fa=this.Ub=0,this.N&&this.G&&this.l.ga?(this.i("auto-loading "+a),this.l.W(),"."!=this.Za.charAt(0)?(this.Fa=1,V(this.G,"NEW\nLOAD\n")):(this.Fa=2,this.N.reset(!0),V(this.G,"ML"))):this.i(a+" ready to load")):this.i(a+" load error ("+c+")")};f.H=function(a,b){void 0!==b&&(a&1?Ua(this):this.Za&&!this.Ub&&Ua(this))};f.O=function(a,b){void 0!==b&&this.m&&S(this.m,this,a,b,this.m.Sc,!0)};
function Ua(a){if(void 0!==a.Za){a.pc=0;a.Nb=0;if(a.Ub<a.Za.length){var b=a.Za.charCodeAt(a.Ub++);10==b&&(b=13);a.pc=b;a.Nb=1}else 1==a.Fa&&a.G&&V(a.G," \nRUN\n"),a.Fa=0;a.ac()}}f.ac=function(){var a;for(a=this.Fc+0;a<this.Qd;a+=2)this.a[a]=this.Nb?this.xf:this.yf;for(a=this.Fc+1;a<this.Qd;a+=2)this.a[a]=this.Nb?this.pc:0};x(function(){for(var a=G(window.document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Ta(d);F(d,c)}});
function Ua(a){if(void 0!==a.Za){a.pc=0;a.Nb=0;if(a.Ub<a.Za.length){var b=a.Za.charCodeAt(a.Ub++);10==b&&(b=13);a.pc=b;a.Nb=1}else 1==a.Fa&&a.G&&V(a.G," \nRUN\n"),a.Fa=0;a.ac()}}f.ac=function(){var a;for(a=this.Fc+0;a<this.Qd;a+=2)this.a[a]=this.Nb?this.xf:this.yf;for(a=this.Fc+1;a<this.Qd;a+=2)this.a[a]=this.Nb?this.pc:0};x(function(){for(var a=F(window.document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new Ta(d);E(d,c)}});
function Va(a){z.call(this,"C1PDiskController",a);this.C=!1;this.pf=this.md=0;this.jd=1;this.qf=this.nd=2;this.kd=3;this.Nc=128;this.Oc=64;this.Ka=4;this.kf=1;this.ed=2;this.jf=4;this.mf=8;this.lf=16;this.fd=32;this.dd=64;this.jc=128;this.hd=4;this.gd=8;this.nf=32;this.rf=this.of=16;this.ld=17;this.Pc=3;this.td=1;this.ud=2;this.sd=4;this.rd=8;this.ye=0;this.He=40;this.reset(!0)}B(Va);f=Va.prototype;
f.reset=function(a){Wa(this);this.K=-1;a&&(this.U=[],this.U[0]={Yi:this.ye,Od:this.He,Lf:!0,Wa:20,ha:0,Ua:-1,Jb:[]})};
function Wa(a){a.he={s:a.dd,aa:function(){},update:function(a){return function(c){void 0!==c&&(this.s=c);a.Zb.s&a.Ka||W(a,a.pf,this)}}(a)};a.Ha={s:255,aa:function(){this.update()},update:function(a){return function(c){void 0===c?c=a.Ha.s:Xa(a,c,a.sb.s);c=c|a.jc|a.fd|a.mf|a.jf|a.ed|a.lf;c&=~a.kf;if(0<=a.K&&a.U[a.K].Jb.length){var d=a.U[a.K];d.Lf&&(c&=~a.fd);d.ha||(c&=~a.ed);10>=--d.Wa&&(0<d.Wa?(c&=~a.jc,Ya(a)):(d.Wa=100,0<=a.K&&(a.U[a.K].Ua=0,Za(a))))}this.s=c;a.Zb.s&a.Ka&&W(a,a.md,this)}}(a)};a.Zb=
@ -115,12 +115,12 @@ function Wa(a){a.he={s:a.dd,aa:function(){},update:function(a){return function(c
c&&(c=a.Ia.s);c&=~a.td;0<=a.K&&0<=a.U[a.K].Ua&&(c|=a.td);this.s=c;W(a,a.rf,this)}}(a)};a.Jc={s:0,aa:function(a){return function(){Za(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.s=c);W(a,a.ld,this)}}(a)};a.Wi={s:0,aa:function(){},update:function(){return function(){}}(a)}}
f.I=function(a,b,c,d){switch(c){case "listDisk":return this.r[c]=d,!0;case "loadDisk":return this.r[c]=d,d.onclick=function(a){return function(){if(a.r.listDisk){var b=a.r.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.i("loading "+ba(b)+"...");s(c,a,a.Of)}}}(this),!0}return!1};f.V=function(a,b,c,d){this.a=a;this.mc=b;if(this.l=d)va(d,b,c,this,this.H),N(d,b,c,this,this.O);this.P()};
f.ba=function(a,b){a&&!this.C&&(this.C=!0,this.m=L(b,"debugger"))};
f.Of=function(a,b,c){if(c)this.i("disk load error ("+c+")");else{c=[];this.i("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.i("data error: "+d[0]);else if(this.U[0]){for(b=0;b<d.length;b++){var e,g=d[b],h=g.sectors;if(void 0===(e=g.trackNum)||void 0===h)throw"track "+b+" missing data";e!=b&&t("track "+e+" out of order (expected "+b+")");c=[];var k,l,m;if(e){$a(c,g,"trackSig");ab(c,g);X(c,g,"trackType");for(var q=0;q<h.length;q++){k=
h[q];l=k.sectorData;X(c,k,"sectorSig");X(c,k,"sectorNum");X(c,k,"sectorPages");for(m=0;m<l.length;m++)c.push(l[m]);$a(c,k,"sectorEndSig")}}else for(k=h[0],l=k.sectorData,X(c,g,"trackLoad",2),X(c,k,"sectorPages"),m=0;m<l.length;m++)c.push(l[m]);d[e].ke=c;this.m&&T(this.m,this.m.La)&&this.m.message("track "+e+": "+c.length+" bytes")}this.U[0].Jb=d;this.i("mount of "+a+" complete")}else this.i("no available drives")}else this.i("no tracks: "+a);else this.i("no data: "+a)}catch(D){this.i("disk data error: "+
(D.message||D))}}};function ab(a,b){var c=b.trackNum;if(void 0===c)throw"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"missing binary value: "+c;2==d&&a.push(b>>8&255);a.push(b&255)}function $a(a,b,c){b=b[c];if(void 0===b)throw"missing signature: "+c;for(c=0;c<b.length;c++)a.push(b.charCodeAt(c))}
f.Of=function(a,b,c){if(c)this.i("disk load error ("+c+")");else{c=[];this.i("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.i("data error: "+d[0]);else if(this.U[0]){for(b=0;b<d.length;b++){var e,g=d[b],h=g.sectors;if(void 0===(e=g.trackNum)||void 0===h)throw Error("track "+b+" missing data");e!=b&&t("track "+e+" out of order (expected "+b+")");c=[];var k,l,m;if(e){$a(c,g,"trackSig");ab(c,g);X(c,g,"trackType");for(var q=0;q<h.length;q++){k=
h[q];l=k.sectorData;X(c,k,"sectorSig");X(c,k,"sectorNum");X(c,k,"sectorPages");for(m=0;m<l.length;m++)c.push(l[m]);$a(c,k,"sectorEndSig")}}else for(k=h[0],l=k.sectorData,X(c,g,"trackLoad",2),X(c,k,"sectorPages"),m=0;m<l.length;m++)c.push(l[m]);d[e].ke=c;this.m&&T(this.m,this.m.La)&&this.m.message("track "+e+": "+c.length+" bytes")}this.U[0].Jb=d;this.i("mount of "+a+" complete")}else this.i("no available drives")}else this.i("no tracks: "+a);else this.i("no data: "+a)}catch(G){this.i("disk data error: "+
G.message)}}};function ab(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 $a(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 bb(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case a.md:a=a.Zb.s&a.Ka?a.Ha:a.he;break;case a.jd:a=a.Zb;break;case a.nd:a=a.$b.s&a.Ka?a.sb:a.ie;break;case a.kd:a=a.$b;break;case a.of:a=c?a.Vi:a.Ia;break;case a.ld:a=a.Jc;break;default:a=a.Wi}return a}f.H=function(a,b){if(void 0!==b){var c=bb(this,a-this.mc,!1);this.m&&S(this.m,this,a,b,this.m.La,!1,c.je);c.aa()}};
f.O=function(a,b){if(void 0!==b){var c=this.l.H(a),d=bb(this,a-this.mc,!0);if(this.m&&T(this.m,this.m.La|this.m.dc)&&(S(this.m,this,a,b,this.m.La,!0,d.je),d.Af))for(var e=128,g=d.s^c;g&&e;)g&e&&this.m.message(" changed "+d.je+"."+d.Af[e]+" to "+(c&e?"1":"0")),e>>=1;d.update(c)}};function Xa(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&a.nf||(d|=2),a.Ha.s&a.dd||(d|=1));a.K!=d&&(a.K=d,a.Ia.update())}function Ya(a){0<=a.K&&(a.U[a.K].Ua=-1,a.Jc.update(255),a.Ia.update())}
function Za(a){var b=null;if(0<=a.K){var b=a.U[a.K],c=b.Jb[b.ha];void 0!==c&&(0<=b.Ua&&b.Ua<c.ke.length?(b.Wa=100,b=c.ke[b.Ua++],a.Jc.update(b),a.Ia.update()):(b.Wa=10,Ya(a)))}}function W(a,b,c){a.l.O(b+a.mc,c.s)}x(function(){for(var a=G(window.document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new Va(d);F(d,c)}});
function Za(a){var b=null;if(0<=a.K){var b=a.U[a.K],c=b.Jb[b.ha];void 0!==c&&(0<=b.Ua&&b.Ua<c.ke.length?(b.Wa=100,b=c.ke[b.Ua++],a.Jc.update(b),a.Ia.update()):(b.Wa=10,Ya(a)))}}function W(a,b,c){a.l.O(b+a.mc,c.s)}x(function(){for(var a=F(window.document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new Va(d);E(d,c)}});
function cb(a){z.call(this,"C1PDebugger",a);this.Pa=-1;this.wa=0;this.Ic=null;this.Sb=!1;this.Z=0;this.ra=[];this.Ba=[];this.Ea=[];this.kb=0;this.Da=[];this.fa=[];this.dc=1;this.za=16;this.Ab=32;this.La=64;this.Sc=128;this.Ga=this.Ie=0;this.Ib={port:this.dc,kbd:this.za,video:this.Ab,disk:this.La,serial:this.Sc};this.ka=0;this.la=1;this.ab=2;this.Vc=3;this.Wc=4;this.Xc=5;this.Yc=6;this.Zc=7;this.$c=8;this.ad=9;this.Je=10;this.bd=11;this.cd=12;this.Ke=13;this.Le=14;this.Me=15;this.Ne=16;this.ma=17;
this.ec=18;this.fc=19;this.Db=20;this.Pe=21;this.Qe=22;this.na=23;this.Eb=24;this.Re=25;this.Se=26;this.Fb=27;this.Gb=28;this.oa=29;this.bb=30;this.cb=31;this.eb=32;this.Te=33;this.pa=34;this.Ue=35;this.Ve=36;this.We=37;this.Xe=38;this.fb=39;this.gb=40;this.Ye=41;this.Ze=42;this.qa=43;this.$e=44;this.af=45;this.bf=46;this.Aa=47;this.hc=48;this.ic=49;this.cf=50;this.df=51;this.ef=52;this.ff=53;this.gf=54;this.hf=55;this.gc=56;this.Oe=57;this.hb="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.vd=["HLT","MSG"];db(this,!0);this.Y=[[this.Je],[this.pa,1,this.ia],[this.gc,1],[],[],[this.pa,1,this.D],[this.ab,1,this.D],[],[this.Ve],[this.pa,1,this.R],[this.ab,0,this.Bb],[],[],[this.pa,2,this.B],[this.ab,2,this.B],[],[this.ad,1,this.X],[this.pa,1,this.ja],[],[],[],[this.pa,1,this.J],[this.ab,1,this.J],[],[this.Ke],[this.pa,2,this.ca],[],[],[],[this.pa,2,this.L],[this.ab,2,this.L],[],[this.Gb,2,this.Cb],[this.la,1,this.ia],[],[],[this.Yc,1,this.D],[this.la,1,this.D],[this.fb,1,this.D],[],
@ -155,15 +155,15 @@ else if(e=Z(a,e),void 0!==e){c=0;void 0!==d&&("l"==d.charAt(0)&&(d=d.substr(1)),
case "h":a.T();break;case "o":if(void 0===c[1]||"?"==c[1])a.i("\noption commands:"),a.i("max\trun at maximum speed"),a.i("fast\trun faster (up to "+a.l.mb+"Mhz)"),a.i("slow\trun at normal speed (1Mhz)"),a.i("classic\tuse classic operand syntax"),a.i("modern\tuse modern operand syntax"),a.i("msg\tenable message categories");else switch(e=c[1],e){case "slow":M(a.l,a.l.Hb);break;case "fast":M(a.l,a.l.qd);break;case "max":M(a.l,a.l.Ma);break;case "classic":db(a,!0);a.i("classic syntax enabled");break;
case "modern":db(a,!1);a.i("modern syntax enabled");break;case "msg":e=0;void 0!==c[2]&&("all"==c[2]?e=255:void 0!==a.Ib[c[2]]&&(e=a.Ib[c[2]]),e&&("on"==c[3]?a.Ga|=e:"off"==c[3]&&(a.Ga&=~e)));for(d in a.Ib)if(void 0===c[2]||"all"==c[2]||c[2]==d)e=a.Ib[d],a.i(d+" messages: "+(a.Ga&e?"on":"off"));break;default:a.i("unknown option: "+e)}break;case "p":l=c[1];e=10;c=a.kb;d=a.Da;if(void 0!==d){g=void 0===l?a.Yf:parseInt(l,10);void 0===g&&(g=10);g>d.length&&(a.i("note: only "+d.length+" available"),g=d.length);
void 0!==l&&(a.zc=0,a.i(g+" instructions earlier:"));l=a.zc?a.zc:1;c-=g;for(0>c&&(c=d.length-1);e&&c!=a.kb;){h=d[c];if(0>h)break;a.i(mb(a,h,l++));++c==d.length&&(c=0);e--;g--}a.Yf=g;a.zc=l}10==e&&a.i("no history available");break;case "r":hb(a,c);break;case "s":a.H(a.l.d)==a.l.Gb?(lb(a,a.l.d+3),a.Ta=!0,a.ya()||a.l.W()):ob(a);break;case "t":ob(a,c[1]);break;case "u":gb(a,c[1],c[2],8);break;case "?":case "help":a.i("\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.i("note: frequency and history commands operate only when breakpoints are set");break;default:a.i("unknown command: "+b)}}}x(function(){for(var a=G(window.document,"c1pjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new cb(d);F(d,c)}});function $(a,b){z.call(this,"C1PComputer",a);this.Q=b}B($);$.prototype.reset=function(a){var b=null,c;for(c in this.Q)for(var d=0;d<this.Q[c].length;d++){var e=this.Q[c][d];e&&e.reset&&(e.reset(),"cpu"==c&&(b=e))}b&&(b.update(),a&&b.ya())};
a.i("note: frequency and history commands operate only when breakpoints are set");break;default:a.i("unknown command: "+b)}}}x(function(){for(var a=F(window.document,"c1pjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new cb(d);E(d,c)}});function $(a,b){z.call(this,"C1PComputer",a);this.Q=b}B($);$.prototype.reset=function(a){var b=null,c;for(c in this.Q)for(var d=0;d<this.Q[c].length;d++){var e=this.Q[c][d];e&&e.reset&&(e.reset(),"cpu"==c&&(b=e))}b&&(b.update(),a&&b.ya())};
$.prototype.start=function(){for(var a in this.Q)if("cpu"!=a)for(var b=0;b<this.Q[a].length;b++){var c=this.Q[a][b];c&&c.start&&c.start()}};$.prototype.stop=function(a,b){for(var c in this.Q)if("cpu"!=c)for(var d=0;d<this.Q[c].length;d++){var e=this.Q[c][d];e&&e.stop&&e.stop(a,b)}};$.prototype.I=function(a,b,c,d){switch(c){case "reset":return this.r[c]=d,d.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function L(a,b){return a.Q[b]?a.Q[b][0]:null}
function pb(a){var b=null,c;for(c in a.Q)for(var d=0;d<a.Q[c].length;d++){var e=a.Q[c][d];if(e){if(!J(e)){J(e,function(a){return function(){pb(a)}}(a));return}"cpu"==c?b=e:e.ba&&e.ba(!0,a)}}a.P();a.i("C1Pjs v1.15.7\nCopyright \u00a9 2012-2014 Jeff Parsons <Jeff@pcjs.org>");b&&b.ba(!0,a)}
x(function(){for(var a=G(window.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 q=d.modules[m];if(!m){if("cpu"!=q.type)break;k=q.start;l=q.end;h=Array(l+1-k);for(e=k;e<h.length;e++)h[e]=0}if(e=C(q.refID,d.id)){var D=q.type;void 0===g[D]&&(g[D]=[]);g[D].push(e);e.V&&void 0!==q.start&&e.V(h,q.start,q.end,g.cpu[0])}else{t('no component for <module refid="'+q.refID+'">');return}}if(void 0===h){t('<module type="cpu"> definition must appear first in the <computer> specification');
break}if(e=C("debugger",d.id))g["debugger"]=[e],e.V&&e.V(h,k,l,g.cpu[0]);k=new $(d,g);if(l=C("panel",d.id))if(g.panel=[l],l.sc){e=d.id;d=void 0;g=[];e&&(e=0<(d=e.indexOf("."))?e.substr(0,d+1):"");for(d=0;d<A.length;d++)m=A[d],e&&m.id.indexOf(e)||g.push(m);d=g;for(g=0;g<d.length;g++)e=d[g],e!=l&&(e.Xb=l.Xb,e.i=l.i,e.sc=l.sc)}F(k,c);pb(k)}});var qb=0;function rb(a,b,c,d,e,g){e("Loading "+a+"...");s(a,null,function(h,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),g(k,null)):sb(k,a,b,c,d,e,g)})}
function sb(a,b,c,d,e,g,h){function k(a,g){if(g)h(g,null);else{if(c){var k=b;k&&0>k.indexOf("/")&&(k=window.location.pathname+k);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" state=$2"+d+"$2":"")+(k?" url=$2"+k+"$2":""))}k=null;if(0===a.indexOf("<"))try{window.ActiveXObject||"ActiveXObject"in window?(e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),k=new window.ActiveXObject("Microsoft.XMLDOM"),k.async=!1,k.loadXML(a)):k=(new window.DOMParser).parseFromString(a,"text/xml")}catch(D){k=
null,a=D.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,k)}}a?e?tb(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
x(function(){for(var a=F(window.document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=D(c),e,g={},h,k=0,l=0,m=0;m<d.modules.length;m++){var q=d.modules[m];if(!m){if("cpu"!=q.type)break;k=q.start;l=q.end;h=Array(l+1-k);for(e=k;e<h.length;e++)h[e]=0}if(e=C(q.refID,d.id)){var G=q.type;void 0===g[G]&&(g[G]=[]);g[G].push(e);e.V&&void 0!==q.start&&e.V(h,q.start,q.end,g.cpu[0])}else{t('no component for <module refid="'+q.refID+'">');return}}if(void 0===h){t('<module type="cpu"> definition must appear first in the <computer> specification');
break}if(e=C("debugger",d.id))g["debugger"]=[e],e.V&&e.V(h,k,l,g.cpu[0]);k=new $(d,g);if(l=C("panel",d.id))if(g.panel=[l],l.sc){e=d.id;d=void 0;g=[];e&&(e=0<(d=e.indexOf("."))?e.substr(0,d+1):"");for(d=0;d<A.length;d++)m=A[d],e&&m.id.indexOf(e)||g.push(m);d=g;for(g=0;g<d.length;g++)e=d[g],e!=l&&(e.Xb=l.Xb,e.i=l.i,e.sc=l.sc)}E(k,c);pb(k)}});var qb=0;function rb(a,b,c,d,e,g){e("Loading "+a+"...");s(a,null,function(h,k,l){l?(k||(k="unable to load "+a+" ("+l+")"),g(k,null)):sb(k,a,b,c,d,e,g)})}
function sb(a,b,c,d,e,g,h){function k(a,g){if(g)h(g,null);else{if(c){var k=b;k&&0>k.indexOf("/")&&(k=window.location.pathname+k);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" state=$2"+d+"$2":"")+(k?" url=$2"+k+"$2":""))}k=null;if(0===a.indexOf("<"))try{window.ActiveXObject||"ActiveXObject"in window?(e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),k=new window.ActiveXObject("Microsoft.XMLDOM"),k.async=!1,k.loadXML(a)):k=(new window.DOMParser).parseFromString(a,"text/xml")}catch(G){k=
null,a=G.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,k)}}a?e?tb(a,g,k):k(a,null):h("no data"+(b?" for file: "+b:""),null)}
function tb(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");s(e,null,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,q=/( [a-z]+=)(['"])(.*?)\2/g;m=q.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]*/,
"");a=a.replace(d[0],h);tb(a,b,c)}})}else c(a,null)}
function ub(a,b,c){function d(a){if(void 0===k){var b=h&&G(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=da(a))}function e(a){d("Error: "+a);l&&g();l=!1}function g(){0==--qb&&ia(!0)}var h,k,l=!0;qb++;try{if(h=window.document.getElementById(a)){c||(c="/versions/c1pjs/1.15.7/components.xsl");var m=function(a,k){if(k){var l=function(a,l){if(l)if(l)if(d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=k.transformNode(l);m?(h.outerHTML=m,g()):e("transformNodeToObject failed")}else window.document.implementation&&
function ub(a,b,c){function d(a){if(void 0===k){var b=h&&F(h,"machine-warning");k=b&&b[0]||h}k&&(k.innerHTML=da(a))}function e(a){d("Error: "+a);l&&g();l=!1}function g(){0==--qb&&ia(!0)}var h,k,l=!0;qb++;try{if(h=window.document.getElementById(a)){c||(c="/versions/c1pjs/1.15.7/components.xsl");var m=function(a,k){if(k){var l=function(a,l){if(l)if(l)if(d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=k.transformNode(l);m?(h.outerHTML=m,g()):e("transformNodeToObject failed")}else window.document.implementation&&
window.document.implementation.createDocument?(m=new XSLTProcessor,m.importStylesheet(l),(m=m.transformToFragment(k,window.document))?(h.parentNode.replaceChild(m,h),g()):e("transformToFragment failed")):e("unable to transform XML: unsupported browser");else e("failed to load XSL file: "+c);else e(a)};k?rb(c,null,null,!1,d,l):e("failed to load XML file: "+b)}else e(a)};"<"!=b.substr(0,1)?rb(b,a,void 0,!0,d,m):sb(b,null,a,void 0,!1,d,m)}else e("failed to find machine element: "+a)}catch(q){e(q.message)}return l}
window.embedC1P=function(a,b,c){return ub(a,b,c)};window.enableEvents=ia;window.sendEvent=ja;ia(!1);})();//@ sourceMappingURL=/tmp/c1pjs/1.15.7/c1p-dbg.map

View file

@ -1,9 +1,9 @@
(function(){var e;function p(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function aa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));return b}var ba={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function ca(a){return a.replace(/[&<>"']/g,function(a){return ba[a]})}
function q(a,b,c){var d;d=!0;var f=0,g=null,k=aa(a),h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");d&&(h.onreadystatechange=function(){4===h.readyState&&(g=h.responseText,200==h.status||!h.status&&g.length&&"file:"==(window?window.location.protocol:"file:")||(f=h.status||-1),c&&(b?c.call(b,k,g,f,void 0):c(k,g,f,void 0)))});h.open("GET",a,d);h.send();d||(g=h.responseText,200!=h.status&&(f=h.status||-1),c&&(b?c.call(b,k,g,f,void 0):c(k,g,f,void 0)))}
function r(a){window?window.alert(a):console.log(a)}function s(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var t={init:[],show:[],exit:[]},da=!1,u=!0;function v(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function w(a){t.init.push(a)}function x(a){if(u)for(var b=0;b<a.length;b++)a[b]()}
function y(a){!u&&a?(u=!0,da&&ea("init")):u=a}function ea(a){t[a]&&x(t[a])}v("onload",function(){da=!0;x(t.init)});v("onpageshow",function(){x(t.show)});v(s("Opera")||s("iOS")?"onunload":"onbeforeunload",function(){x(t.exit)});
function z(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.ec=this.id.substr(0,b),this.dc=this.id.substr(b+1)):this.dc=this.id;this[a]=c;this.mb=null;this.Na=this.qa=this.lb=this.Oa=!1;this.o={};fa(this);B[B.length]=this}var C=void 0;if(window){C||(C=window.location.search.substr(1));for(var D,ga=/\+/g,ha=/([^&=]+)=?([^&]*)/g;D=ha.exec(C);)D[1].replace(ga," "),D[2].replace(ga," ")}
function ia(){var a=z.prototype;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 E(a){a.prototype=ia()}var B=[];function F(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 r(a){window?window.alert(a):console.log(a)}function s(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var t={init:[],show:[],exit:[]},da=!1,u=!0;function v(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function w(a){t.init.push(a)}
function x(a){if(u)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){r("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to Jeff@pcjs.org. Thanks.")}}function y(a){!u&&a?(u=!0,da&&ea("init")):u=a}function ea(a){t[a]&&x(t[a])}v("onload",function(){da=!0;x(t.init)});v("onpageshow",function(){x(t.show)});v(s("Opera")||s("iOS")?"onunload":"onbeforeunload",function(){x(t.exit)});
function z(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.ec=this.id.substr(0,b),this.dc=this.id.substr(b+1)):this.dc=this.id;this[a]=c;this.mb=null;this.Na=this.qa=this.lb=this.Oa=!1;this.o={};fa(this);A[A.length]=this}var B=void 0;if(window){B||(B=window.location.search.substr(1));for(var D,ga=/\+/g,ha=/([^&=]+)=?([^&]*)/g;D=ha.exec(B);)D[1].replace(ga," "),D[2].replace(ga," ")}
function ia(){var a=z.prototype;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 E(a){a.prototype=ia()}var A=[];function F(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<A.length;c++)if(A[c].id===a)return A[c]}return null}
function G(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("({"+a+"})")}catch(c){r(c.message+" ("+a+")")}return b}
function H(a,b){var c,d;d=I(b.parentNode,"c1pjs-control");for(c=0;c<d.length;c++){var f,g;g=d[c].childNodes;for(f=0;f<g.length;f++){var k=g[f];if(k.nodeType===window.document.ELEMENT_NODE){var h=k.getAttribute("class");if(h){var l,m;m=h.split(" ");for(l=0;l<m.length;l++)switch(h=m[l],h){case "c1pjs-input":case "c1pjs-output":(m=G(k))&&m.binding&&a.H(h,m.type,m.binding,k),m=[]}}}}}}
function I(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var f=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)f.test(a[b].className)&&c.push(a[b]);return c}
@ -24,7 +24,7 @@ function Q(a,b,c,d,f){0>pa(a.T,b,c,d,f)&&(a.Ha>b&&(a.Ha=b),a.Ia<c&&(a.Ia=c),a.T.
function R(a,b,c,d){void 0!==a.o[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.o[b].innerHTML=c.slice(c.length-d).toUpperCase())}function ra(a){R(a,"A",a.e,2);R(a,"X",a.k,2);R(a,"Y",a.m,2);var b=sa(a);R(a,"C",b&a.Mc?1:0);R(a,"Z",b&a.Rc?1:0);R(a,"I",b&a.Oc?1:0);R(a,"D",b&a.Nc?1:0);R(a,"B",b&a.Lc?1:0);R(a,"V",b&a.Qc?1:0);R(a,"N",b&a.Pc?1:0);R(a,"S",a.n,4);R(a,"PC",a.d,4);a.o.speed&&a.W&&(a.o.speed.innerHTML=a.W.toFixed(1)+"Mhz")}
function qa(a,b){var c=a.tb;c<a.rb&&(c=a.rb);c<a.qb&&(c=a.qb);var d=1;b&&a.speed>a.ab&&a.W&&(d=a.W);d>a.Qa&&a.speed<a.oa&&(d=a.Qa);a.Qd=Math.round(1E3/a.tb);a.Sa=Math.floor(a.ua/c*d);a.nb=Math.floor(a.ua/a.tb*d);a.hc=Math.floor(a.ua/a.rb*d);a.gc=Math.floor(a.ua/a.qb*d);b||(a.ja=a.nb,a.ta=a.hc,a.sa=a.gc);a.pb=0}function ta(a){a.pb>=a.ua&&qa(a,!0);a.va=0;a.Td=Date.now()||+new Date}
function ua(a){var b=Date.now()||+new Date,c=a.Qd;a.va&&(c=Math.round(c*a.va/a.nb));c-=b-a.Td;if(b-=a.fc)a.W=Math.round(a.la/(100*b))/10,864E5<=b&&ma(a);0>c?c=0:a.speed==a.xd?a.W<=a.Qa&&(c=0):a.speed==a.oa&&(c=0);a.pb+=a.va;return c}
function P(a){if(ja(a,!0)){a.R||(ma(a),a.G&&a.G.start(),a.R=!0,a.o.run&&(a.o.run.innerHTML="Halt"),a.da());ta(a);try{do{a.step(a.Sa);var b=a.X-a.B;a.la+=b;a.va+=b;a.X=a.B=0;a.ta-=a.Sa;0>=a.ta&&(a.ta+=a.hc,a.kb());a.sa-=a.Sa;0>=a.sa&&(a.sa+=a.gc,ra(a));a.ja-=a.Sa;if(0>=a.ja){a.ja+=a.nb;break}}while(a.R)}catch(c){O(a);a.update();ja(a,!1);K(a,c.message||c);return}setTimeout(function(a){return function(){P(a)}}(a),ua(a))}else a.update(),a.G&&a.G.stop(a.fc,a.la)}
function P(a){if(ja(a,!0)){a.R||(ma(a),a.G&&a.G.start(),a.R=!0,a.o.run&&(a.o.run.innerHTML="Halt"),a.da());ta(a);try{do{a.step(a.Sa);var b=a.X-a.B;a.la+=b;a.va+=b;a.X=a.B=0;a.ta-=a.Sa;0>=a.ta&&(a.ta+=a.hc,a.kb());a.sa-=a.Sa;0>=a.sa&&(a.sa+=a.gc,ra(a));a.ja-=a.Sa;if(0>=a.ja){a.ja+=a.nb;break}}while(a.R)}catch(c){O(a);a.update();ja(a,!1);K(a,c.message);return}setTimeout(function(a){return function(){P(a)}}(a),ua(a))}else a.update(),a.G&&a.G.stop(a.fc,a.la)}
e.step=function(a){this.b=this.h=-1;this.X=this.B=a;do{a=this.a[this.d];this.d++;this.q[a].call(this);if(0<=this.b){if(this.b>=this.fb&&this.b<=this.gb)for(var b=this.b,c=this.d,d=0;d<this.Y.length;d++)b>=this.Y[d][0]&&b<=this.Y[d][1]&&this.Y[d][3].call(this.Y[d][2],b,c);this.b=-1}else if(0<=this.h){if(this.h>=this.Ha&&this.h<=this.Ia)for(b=this.h,c=this.d,d=0;d<this.T.length;d++)b>=this.T[d][0]&&b<=this.T[d][1]&&this.T[d][3].call(this.T[d][2],b,c);this.h=-1}this.B-=this.Bd[a]}while(0<this.B);return!0};
function O(a){a.qa&&(a.lb=!0);a.X-=a.B;a.B=0;a.R&&(a.R=!1,a.o.run&&(a.o.run.innerHTML="Run"))}e.update=function(){this.kb();ra(this)};function va(a){return a.R?a.la+a.X-a.B:0}e.N=function(a){return this.a[a]};e.L=function(a,b){this.a[a]=b};function sa(a){var b=a.c&256?1:0,b=b|(a.g&255?0:2),b=b|((a.r&255^a.w^a.r>>1)&128?64:0),b=b|(a.f&128?128:0);return a.u&60|b}
function S(a,b,c){var d=a.c&256?1:0,f=(b&15)+(c&15)+d;10<=f&&(f=f+6&15|16);f+=(b&240)+(c&240);a.w=b^c;a.r=f;a.f=f&255;160<=f&&(f+=96);512<=f&&(f-=256);a.c=f;a.g=b+c+d&255;a.B--;return f&255}function T(a,b,c){var d=a.c&256?0:1,f=(b&15)-(c&15)-d;0>f&&(f=(f-6&15)-16);f+=(b&240)-(c&240);0>f&&(f-=96);a.f=a.g=(a.c=b-c-d)&255;a.w=b^c;a.r=a.c;a.c^=256;a.B--;return f&255}function la(a){a.e=0;a.k=0;a.m=0;a.n=256;a.u=0;a.f=0;a.g=0;a.w=0;a.r=0;a.c=0;a.d=0;a.b=-1;a.h=-1;a.W=0;a.la=a.X=a.B=0}
@ -75,7 +75,7 @@ e.Kg=function(){var a;a=this.a[this.d++];switch(a){case this.vd:this.t("HALT");O
e.i=function(){var a=this.a[--this.d];this.t("undefined opcode: "+p(a,2)+" at "+p(this.d,4));O(this)};w(function(){for(var a=I(window.document,"c1pjs","cpu"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new N(d);H(d,c)}});
function U(a){z.call(this,"C1PROM",a);this.U=this.a=null;this.ga=a.size;if(this.ya=a.image){a=this.ya;var b;b=this.ya;var c="",d=b.lastIndexOf(".");0<=d&&(c=b.substr(d+1).toLowerCase());b=c;"json"!=b&&"hex"!=b&&(a="http://"+window.location.host+"/api/v1/dump?file="+this.ya);q(a,this,this.Hd)}}E(U);
U.prototype.P=function(a,b,c,d){this.a=a;this.vb=b;a=c-b+1;this.ga||(this.ga=a);a!=this.ga?K(this,"computer-specified ROM size ("+p(a,4)+") does not match component-specified size ("+p(this.ga,4)+")"):(d&&(this.s=d,Q(d,b,c,this,this.L)),wa(this))};U.prototype.S=function(a){a&&!this.A&&(this.A=!0)};U.prototype.L=function(a,b){if(void 0!==b){var c=a-this.vb;this.a[this.vb+c]=this.U?this.U[c]:0}};
U.prototype.Hd=function(a,b,c){if(c)this.t('Error loading ROM "'+a+'" ('+c+")");else{if("["==b[0])try{this.U=eval("("+b+")")}catch(d){this.t('Error processing ROM "'+a+'": '+(d.message||d));return}else for(a=b.replace(/\n/gm," ").replace(/ +$/,"").split(" "),this.U=Array(a.length),b=0;b<a.length;b++)this.U[b]=parseInt(a[b],16);wa(this)}};
U.prototype.Hd=function(a,b,c){if(c)this.t('Error loading ROM "'+a+'" ('+c+")");else{if("["==b[0])try{this.U=eval("("+b+")")}catch(d){this.t('Error processing ROM "'+a+'": '+d.message);return}else for(a=b.replace(/\n/gm," ").replace(/ +$/,"").split(" "),this.U=Array(a.length),b=0;b<a.length;b++)this.U[b]=parseInt(a[b],16);wa(this)}};
function wa(a){if(!J(a))if(!a.ya)a.J();else if(a.U&&a.a){var b=a.U.length;if(b!=a.ga)K(a,"ROM image size ("+p(b,4)+") does not match component-specified size ("+p(a.ga,4)+")");else{for(var c=0;c<b;c++)a.a[a.vb+c]=a.U[c];a.J()}}}w(function(){for(var a=I(window.document,"c1pjs","rom"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new U(d);H(d,c)}});function xa(a){z.call(this,"C1PRAM",a)}E(xa);xa.prototype.P=function(a){this.a=a;this.J()};
w(function(){for(var a=I(window.document,"c1pjs","ram"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new xa(d);H(d,c)}});
function ya(a){z.call(this,"C1PKeyboard",a);this.A=!1;this.ob=a.model;this.Eb=8;this.ed=9;this.cd=10;this.bd=13;this.dd=16;this.ad=17;this.Yc=18;this.Zc=20;this.Fb=27;this.$c=91;this.Vc=this.Eb;this.Wc=this.cd;this.Sc=this.bd;this.zb=this.Fb;this.K=224;this.l=this.dd+this.K;this.Ea=this.ad+this.K;this.Za=this.Yc+this.K;this.Ab=this.Zc+this.K;this.yb=0+this.K;this.Tc=3;this.Uc=15;this.Da=1;this.Ca=2;this.Ba=4;this.na=8;this.Aa=64;this.Ya=this.Ca|this.Ba|this.Aa;this.Pb=0;this.td=1;this.sd=2;this.ud=
@ -110,18 +110,18 @@ O:function(){},update:function(a){return function(c){void 0!==c&&(this.p=c&~(a.B
20,a.aa.update(a.aa.p|a.$a),La(a))}this.p=c;a.Wa.p&a.ea&&Y(a,a.Ob,this)}}(a)};a.Wa={p:0,O:function(){},update:function(a){return function(c){void 0!==c&&(this.p=c&~(a.Bb|a.Cb));Y(a,a.Lb,this);a.xa.update();a.Ic.update()}}(a)};a.Rg={p:0,O:function(){},update:function(a){return function(c){void 0!==c&&((c&a.Db)==a.Db&&(a.ba.p=a.Tb|a.Rb|a.Qb),this.p=c);a.ba.update()}}(a)};a.ba={p:a.Tb|a.Rb|a.Qb,O:function(){},update:function(a){return function(c){void 0===c&&(c=a.ba.p);c&=~a.Sb;0<=a.D&&0<=a.M[a.D].ia&&
(c|=a.Sb);this.p=c;Y(a,a.qd,this)}}(a)};a.xb={p:0,O:function(a){return function(){Ma(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.p=c);Y(a,a.Mb,this)}}(a)};a.Sg={p:0,O:function(){},update:function(){return function(){}}(a)}}
e.H=function(a,b,c,d){switch(c){case "listDisk":return this.o[c]=d,!0;case "loadDisk":return this.o[c]=d,d.onclick=function(a){return function(){if(a.o.listDisk){var b=a.o.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.t("loading "+aa(b)+"...");q(c,a,a.Md)}}}(this),!0}return!1};e.P=function(a,b,c,d){this.a=a;this.eb=b;if(this.s=d)oa(d,b,c,this,this.N),Q(d,b,c,this,this.L);this.J()};e.S=function(a){a&&!this.A&&(this.A=!0)};
e.Md=function(a,b,c){if(c)this.t("disk load error ("+c+")");else{c=[];this.t("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.t("data error: "+d[0]);else if(this.M[0]){for(b=0;b<d.length;b++){var f,g=d[b],k=g.sectors;if(void 0===(f=g.trackNum)||void 0===k)throw"track "+b+" missing data";f!=b&&r("track "+f+" out of order (expected "+b+")");c=[];var h,l,m;if(f){Na(c,g,"trackSig");Oa(c,g);Z(c,g,"trackType");for(var n=0;n<k.length;n++){h=
k[n];l=h.sectorData;Z(c,h,"sectorSig");Z(c,h,"sectorNum");Z(c,h,"sectorPages");for(m=0;m<l.length;m++)c.push(l[m]);Na(c,h,"sectorEndSig")}}else for(h=k[0],l=h.sectorData,Z(c,g,"trackLoad",2),Z(c,h,"sectorPages"),m=0;m<l.length;m++)c.push(l[m]);d[f].Jc=c}this.M[0].Fa=d;this.t("mount of "+a+" complete")}else this.t("no available drives")}else this.t("no tracks: "+a);else this.t("no data: "+a)}catch(A){this.t("disk data error: "+(A.message||A))}}};
function Oa(a,b){var c=b.trackNum;if(void 0===c)throw"missing bcd value: trackNum";a.push(Math.floor(c/10)<<4|c%10)}function Z(a,b,c,d){b=b[c];if(void 0===b)throw"missing binary value: "+c;2==d&&a.push(b>>8&255);a.push(b&255)}function Na(a,b,c){b=b[c];if(void 0===b)throw"missing signature: "+c;for(c=0;c<b.length;c++)a.push(b.charCodeAt(c))}
e.Md=function(a,b,c){if(c)this.t("disk load error ("+c+")");else{c=[];this.t("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.t("data error: "+d[0]);else if(this.M[0]){for(b=0;b<d.length;b++){var f,g=d[b],k=g.sectors;if(void 0===(f=g.trackNum)||void 0===k)throw Error("track "+b+" missing data");f!=b&&r("track "+f+" out of order (expected "+b+")");c=[];var h,l,m;if(f){Na(c,g,"trackSig");Oa(c,g);Z(c,g,"trackType");for(var n=0;n<k.length;n++){h=
k[n];l=h.sectorData;Z(c,h,"sectorSig");Z(c,h,"sectorNum");Z(c,h,"sectorPages");for(m=0;m<l.length;m++)c.push(l[m]);Na(c,h,"sectorEndSig")}}else for(h=k[0],l=h.sectorData,Z(c,g,"trackLoad",2),Z(c,h,"sectorPages"),m=0;m<l.length;m++)c.push(l[m]);d[f].Jc=c}this.M[0].Fa=d;this.t("mount of "+a+" complete")}else this.t("no available drives")}else this.t("no tracks: "+a);else this.t("no data: "+a)}catch(C){this.t("disk data error: "+C.message)}}};
function Oa(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 Z(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 Na(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 Pa(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case a.Nb:a=a.Va.p&a.ea?a.aa:a.Hc;break;case a.Kb:a=a.Va;break;case a.Ob:a=a.Wa.p&a.ea?a.xa:a.Ic;break;case a.Lb:a=a.Wa;break;case a.nd:a=c?a.Rg:a.ba;break;case a.Mb:a=a.xb;break;default:a=a.Sg}return a}e.N=function(a,b){void 0!==b&&Pa(this,a-this.eb,!1).O()};e.L=function(a,b){if(void 0!==b){var c=this.s.N(a);Pa(this,a-this.eb,!0).update(c)}};
function Ka(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&a.ld||(d|=2),a.aa.p&a.Gb||(d|=1));a.D!=d&&(a.D=d,a.ba.update())}function La(a){0<=a.D&&(a.M[a.D].ia=-1,a.xb.update(255),a.ba.update())}function Ma(a){var b=null;if(0<=a.D){var b=a.M[a.D],c=b.Fa[b.V];void 0!==c&&(0<=b.ia&&b.ia<c.Jc.length?(b.ka=100,b=c.Jc[b.ia++],a.xb.update(b),a.ba.update()):(b.ka=10,La(a)))}}function Y(a,b,c){a.s.L(b+a.eb,c.p)}
w(function(){for(var a=I(window.document,"c1pjs","disk"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Ia(d);H(d,c)}});function $(a,b){z.call(this,"C1PComputer",a);this.I=b}E($);$.prototype.reset=function(a){var b=null,c;for(c in this.I)for(var d=0;d<this.I[c].length;d++){var f=this.I[c][d];f&&f.reset&&(f.reset(),"cpu"==c&&(b=f))}b&&(b.update(),a&&P(b))};$.prototype.start=function(){for(var a in this.I)if("cpu"!=a)for(var b=0;b<this.I[a].length;b++){var c=this.I[a][b];c&&c.start&&c.start()}};
$.prototype.stop=function(a,b){for(var c in this.I)if("cpu"!=c)for(var d=0;d<this.I[c].length;d++){var f=this.I[c][d];f&&f.stop&&f.stop(a,b)}};$.prototype.H=function(a,b,c,d){switch(c){case "reset":return this.o[c]=d,d.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function M(a,b){return a.I[b]?a.I[b][0]:null}
function Qa(a){var b=null,c;for(c in a.I)for(var d=0;d<a.I[c].length;d++){var f=a.I[c][d];if(f){if(!J(f)){J(f,function(a){return function(){Qa(a)}}(a));return}"cpu"==c?b=f:f.S&&f.S(!0,a)}}a.J();a.t("C1Pjs v1.15.7\nCopyright \u00a9 2012-2014 Jeff Parsons <Jeff@pcjs.org>");b&&b.S(!0,a)}
w(function(){for(var a=I(window.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 A=n.type;void 0===g[A]&&(g[A]=[]);g[A].push(f);f.P&&void 0!==n.start&&f.P(k,n.start,n.end,g.cpu[0])}else{r('no component for <module refid="'+n.refID+'">');return}}if(void 0===k){r('<module type="cpu"> definition must appear first in the <computer> specification');
break}if(f=F("debugger",d.id))g["debugger"]=[f],f.P&&f.P(k,h,l,g.cpu[0]);h=new $(d,g);if(l=F("panel",d.id))if(g.panel=[l],l.jb){f=d.id;d=void 0;g=[];f&&(f=0<(d=f.indexOf("."))?f.substr(0,d+1):"");for(d=0;d<B.length;d++)m=B[d],f&&m.id.indexOf(f)||g.push(m);d=g;for(g=0;g<d.length;g++)f=d[g],f!=l&&(f.Ta=l.Ta,f.t=l.t,f.jb=l.jb)}H(h,c);Qa(h)}});var Ra=0;function Sa(a,b,c,d,f,g){f("Loading "+a+"...");q(a,null,function(k,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),g(h,null)):Ta(h,a,b,c,d,f,g)})}
function Ta(a,b,c,d,f,g,k){function h(a,g){if(g)k(g,null);else{if(c){var h=b;h&&0>h.indexOf("/")&&(h=window.location.pathname+h);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" state=$2"+d+"$2":"")+(h?" url=$2"+h+"$2":""))}h=null;if(0===a.indexOf("<"))try{window.ActiveXObject||"ActiveXObject"in window?(f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(A){h=
null,a=A.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,h)}}a?f?Ua(a,g,h):h(a,null):k("no data"+(b?" for file: "+b:""),null)}
w(function(){for(var a=I(window.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 C=n.type;void 0===g[C]&&(g[C]=[]);g[C].push(f);f.P&&void 0!==n.start&&f.P(k,n.start,n.end,g.cpu[0])}else{r('no component for <module refid="'+n.refID+'">');return}}if(void 0===k){r('<module type="cpu"> definition must appear first in the <computer> specification');
break}if(f=F("debugger",d.id))g["debugger"]=[f],f.P&&f.P(k,h,l,g.cpu[0]);h=new $(d,g);if(l=F("panel",d.id))if(g.panel=[l],l.jb){f=d.id;d=void 0;g=[];f&&(f=0<(d=f.indexOf("."))?f.substr(0,d+1):"");for(d=0;d<A.length;d++)m=A[d],f&&m.id.indexOf(f)||g.push(m);d=g;for(g=0;g<d.length;g++)f=d[g],f!=l&&(f.Ta=l.Ta,f.t=l.t,f.jb=l.jb)}H(h,c);Qa(h)}});var Ra=0;function Sa(a,b,c,d,f,g){f("Loading "+a+"...");q(a,null,function(k,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),g(h,null)):Ta(h,a,b,c,d,f,g)})}
function Ta(a,b,c,d,f,g,k){function h(a,g){if(g)k(g,null);else{if(c){var h=b;h&&0>h.indexOf("/")&&(h=window.location.pathname+h);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" state=$2"+d+"$2":"")+(h?" url=$2"+h+"$2":""))}h=null;if(0===a.indexOf("<"))try{window.ActiveXObject||"ActiveXObject"in window?(f||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(C){h=
null,a=C.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,h)}}a?f?Ua(a,g,h):h(a,null):k("no data"+(b?" for file: "+b:""),null)}
function Ua(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var f=d[2];b("Loading "+f+"...");q(f,null,function(g,k,h){if(h||!k)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(g=d[3])if(h=k.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[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]);h[0]!=l&&(k=k.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+f);return}k=k.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],k);Ua(a,b,c)}})}else c(a,null)}
function Va(a,b,c){function d(a){if(void 0===h){var b=k&&I(k,"machine-warning");h=b&&b[0]||k}h&&(h.innerHTML=ca(a))}function f(a){d("Error: "+a);l&&g();l=!1}function g(){0==--Ra&&y(!0)}var k,h,l=!0;Ra++;try{if(k=window.document.getElementById(a)){c||(c="/versions/c1pjs/1.15.7/components.xsl");var m=function(a,h){if(h){var l=function(a,l){if(l)if(l)if(d("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var m=h.transformNode(l);m?(k.outerHTML=m,g()):f("transformNodeToObject failed")}else window.document.implementation&&