Fixed Debugger memory editing and register handling, tidied up some flag operations, and removed more now-unnecessary address checks in cpustate
This commit is contained in:
parent
c7dbfc02be
commit
44a2ec9f03
9 changed files with 576 additions and 519 deletions
|
|
@ -4,16 +4,16 @@ function t(a,b){var c=0,d=null;if("object"==typeof resources&&(d=resources[a]))b
|
|||
function u(a){window&&window.alert(a)}function v(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 fa(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
|
||||
function ga(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 w={init:[],show:[],exit:[]},ha=!1,ia=!1,ja=!0;function ka(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function x(a){w.init.push(a)}
|
||||
function la(a){if(ja)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){u(""+("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks."))}}function y(a){!ja&&a?(ja=!0,ha&&ma("init"),ia&&ma("show")):ja=a}function ma(a){w[a]&&la(w[a])}ka("onload",function(){ha=!0;la(w.init)});ka("onpageshow",function(){ia=!0;la(w.show)});ka(v("Opera")||v("iOS")?"onunload":"onbeforeunload",function(){la(w.exit)});
|
||||
function z(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;A.push(this)}var na=void 0,oa={};
|
||||
function z(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,Ja:!1,eb:!1,M:!1,error:!1};this.ab=null;this.C.error=!1;this.H={};this.u=null;this.la=d||0;A.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 B(a){var b;b||(b=z);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={}),A=window.PCjs.Components||(window.PCjs.Components=[])}else D={},A=[];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<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){u(c.message+" ("+a+")")}return b}function F(a,b){b=G(b.parentNode,"c1pjs-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var g=d[e];if(1===g.nodeType){var h=g.getAttribute("class");if(h)for(var l=h.split(" "),k=0;k<l.length;k++)switch(h=l[k],h){case "c1pjs-binding":(h=E(g))&&h.binding&&a.T(h.type,h.binding,g,h.value),k=l.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}
|
||||
z.prototype={constructor:z,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}
|
||||
function I(a,b){if(a.C.eb)return a.C.Ba&&(a.C.Ba=!1),a.C.eb=!1;if(a.C.error)return a.l(a.toString()+" error"),!1;a.C.Ba=b;return a.C.Ba}function J(a,b){a.C.Ba&&(b?a.C.eb=!0:void 0===b&&a.l(a.toString()+" busy"));return a.C.Ba}function K(a,b){b&&(a.C.ready?b():a.ab=b);return a.C.ready}function ua(a,b){a.C.error=!0;a.Ya(b)}function va(a){z.call(this,"C1PPanel",a);this.C.M=!1}B(va);
|
||||
function I(a,b){if(a.C.eb)return a.C.Ja=!1,a.C.eb=!1;if(a.C.error)return a.l(a.toString()+" error"),!1;a.C.Ja=b;return a.C.Ja}function J(a,b){a.C.Ja&&(b?a.C.eb=!0:void 0===b&&a.l(a.toString()+" busy"));return a.C.Ja}function K(a,b){b&&(a.C.ready?b():a.ab=b);return a.C.ready}function ua(a,b){a.C.error=!0;a.Ya(b)}function va(a){z.call(this,"C1PPanel",a);this.C.M=!1}B(va);
|
||||
va.prototype.T=function(a,b,c,d){return this.J&&this.J.T(a,b,c,d)||this.s&&this.s.T(a,b,c,d)||this.b&&this.b.T(a,b,c,d)||this.u&&this.u.T(a,b,c,d)?!0:z.prototype.T.call(this,a,b,c,d)};va.prototype.ia=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.s=L(b,"cpu"),this.b=L(b,"keyboard"),this.u=L(b,"debugger"),wa())};function wa(){for(var a=!1,b=G(document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],e=E(d),g=ta(e.id);g||(a=!0,g=new va(e));F(g,d);a&&g.X()}}x(wa);
|
||||
function xa(a){z.call(this,"C1PCPU",a);ya(this);this.C.M=!1;this.C.na=!1;this.Sa=a.autoStart;this.Qa=0;this.Lb=1;this.cb=2;this.speed=this.Qa;this.Ia=30;this.Ha=5;this.La=8;this.Ra=["Slow","Fast","Max"];this.ib=["(1Mhz)","(up to "+this.La+"Mhz)","(unlimited)"];this.P=[];this.K=[];this.oa=65536;this.pa=0;this.da=65536;this.ea=0;this.Pa=32;this.$a=2;this.Kb=1;this.o=[this.uc,this.Od,this.Fe,this.m,this.m,this.Qd,this.kc,this.m,this.Td,this.Nd,this.jc,this.m,this.m,this.Kd,this.hc,this.m,this.tc,this.Pd,
|
||||
function xa(a){z.call(this,"C1PCPU",a);ya(this);this.C.M=!1;this.C.na=!1;this.Sa=a.autoStart;this.Qa=0;this.Lb=1;this.cb=2;this.speed=this.Qa;this.Ha=30;this.Ga=5;this.La=8;this.Ra=["Slow","Fast","Max"];this.ib=["(1Mhz)","(up to "+this.La+"Mhz)","(unlimited)"];this.P=[];this.K=[];this.oa=65536;this.pa=0;this.da=65536;this.ea=0;this.Pa=32;this.$a=2;this.Kb=1;this.o=[this.uc,this.Od,this.Fe,this.m,this.m,this.Qd,this.kc,this.m,this.Td,this.Nd,this.jc,this.m,this.m,this.Kd,this.hc,this.m,this.tc,this.Pd,
|
||||
this.m,this.m,this.m,this.Rd,this.lc,this.m,this.xc,this.Md,this.m,this.m,this.m,this.Ld,this.ic,this.m,this.ld,this.dc,this.m,this.m,this.qc,this.fc,this.Zd,this.m,this.Vd,this.cc,this.Yd,this.m,this.pc,this.$b,this.Wd,this.m,this.rc,this.ec,this.m,this.m,this.m,this.gc,this.$d,this.m,this.pe,this.bc,this.m,this.m,this.m,this.ac,this.Xd,this.m,this.fe,this.Zc,this.m,this.m,this.m,this.ad,this.Hd,this.m,this.Sd,this.Yc,this.Gd,this.m,this.kd,this.Vc,this.Ed,this.m,this.vc,this.$c,this.m,this.m,this.m,
|
||||
this.bd,this.Id,this.m,this.zc,this.Xc,this.m,this.m,this.m,this.Wc,this.Fd,this.m,this.ge,this.vb,this.m,this.m,this.m,this.xb,this.de,this.m,this.Ud,this.ub,this.ce,this.m,this.jd,this.rb,this.ae,this.m,this.wc,this.wb,this.m,this.m,this.m,this.yb,this.ee,this.m,this.re,this.tb,this.m,this.m,this.m,this.sb,this.be,this.m,this.m,this.ve,this.m,this.m,this.De,this.xe,this.Ae,this.m,this.Uc,this.m,this.Je,this.m,this.Ce,this.se,this.ze,this.m,this.mc,this.we,this.m,this.m,this.Ee,this.ye,this.Be,this.m,
|
||||
this.Le,this.ue,this.Ke,this.m,this.m,this.te,this.m,this.m,this.Bd,this.qd,this.wd,this.m,this.Cd,this.sd,this.xd,this.m,this.He,this.pd,this.Ge,this.m,this.zd,this.md,this.ud,this.m,this.nc,this.rd,this.m,this.m,this.Dd,this.td,this.yd,this.m,this.Ac,this.od,this.Ie,this.m,this.Ad,this.nd,this.vd,this.m,this.Nc,this.Fc,this.m,this.m,this.Oc,this.Hc,this.Rc,this.m,this.hd,this.Ec,this.Tc,this.m,this.Mc,this.Bc,this.Pc,this.m,this.sc,this.Gc,this.m,this.m,this.m,this.Ic,this.Sc,this.m,this.yc,this.Dc,
|
||||
|
|
@ -21,11 +21,11 @@ this.m,this.m,this.m,this.Cc,this.Qc,this.m,this.Kc,this.Db,this.m,this.m,this.L
|
|||
5,0,4,2,2,0,5,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,0,6,0,0,3,3,3,0,2,0,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,0,4,0,0,2,6,2,0,3,3,3,0,2,2,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,4,4,4,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0]}B(xa);f=xa.prototype;
|
||||
f.reset=function(a){this.C.na&&this.aa();ya(this);this.f=this.a[65532]|this.a[65533]<<8;this.C.error=!1;this.u?this.u.reset():a&&(!0===this.Sa||null===this.Sa&&!this.u&&void 0===this.H.run)&&this.va()};
|
||||
f.T=function(a,b,c){a=!1;switch(b){case "run":this.H[b]=c;c.onclick=function(a){return function(){a.C.na?a.aa():a.va()}}(this);a=!0;break;case "A":case "X":case "Y":case "S":case "PC":case "C":case "Z":case "I":case "D":case "B":case "V":case "N":case "speed":this.H[b]=c;a=!0;break;case "setSpeed":this.H[b]=c,c.onclick=function(a){return function(){M(a,2<=a.speed?a.Qa:a.speed+1,!0)}}(this),a=!0}return a};
|
||||
f.ba=function(a,b,c){this.a=a;this.N=b;this.qa=c-b+1;this.Fa=this.N+this.qa;this.N?u("unsupported CPU address buffer offset ("+this.N+")"):this.X()};f.ia=function(a,b){if(a&&!this.C.M){this.J=b;(this.u=L(b,"debugger"))&&this.u.Qb();if(a=L(b,"video"))this.hb=function(a){return function(){za(a)}}(a),this.ca=function(a){return function(){a.ca()}}(a);this.C.M=!0;this.reset(!0);this.update()}};function Aa(a,b,c,d,e){0>Ba(a.P,b,c,d,e)&&(a.oa>b&&(a.oa=b),a.pa<c&&(a.pa=c),a.P.push([b,c,d,e]))}
|
||||
f.ba=function(a,b,c){this.a=a;this.N=b;this.qa=c-b+1;this.Ea=this.N+this.qa;this.N?u("unsupported CPU address buffer offset ("+this.N+")"):this.X()};f.ia=function(a,b){if(a&&!this.C.M){this.J=b;(this.u=L(b,"debugger"))&&this.u.Qb();if(a=L(b,"video"))this.hb=function(a){return function(){za(a)}}(a),this.ca=function(a){return function(){a.ca()}}(a);this.C.M=!0;this.reset(!0);this.update()}};function Aa(a,b,c,d,e){0>Ba(a.P,b,c,d,e)&&(a.oa>b&&(a.oa=b),a.pa<c&&(a.pa=c),a.P.push([b,c,d,e]))}
|
||||
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[d][3].call(a.P[d][2],b,c)}function N(a,b,c,d,e){0>Ba(a.K,b,c,d,e)&&(a.da>b&&(a.da=b),a.ea<c&&(a.ea=c),a.K.push([b,c,d,e]))}function Da(a,b,c){for(var d=0;d<a.K.length;d++)b>=a.K[d][0]&&b<=a.K[d][1]&&a.K[d][3].call(a.K[d][2],b,c)}function Ba(a,b,c,d,e){for(var g=0;g<a.length;g++)if(a[g][0]==b&&a[g][1]==c&&a[g][2]==d&&a[g][3]==e)return g;return-1}
|
||||
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 Ea(a,b){var c=30;c<a.Ha&&(c=a.Ha);c<a.Ga&&(c=a.Ga);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.Ha*d);a.Va=Math.floor(1E6/a.Ga*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-=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)};
|
||||
|
|
@ -81,11 +81,11 @@ 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){z.call(this,"C1PRAM",a)}B(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){z.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]=
|
||||
function Qa(a){z.call(this,"C1PKeyboard",a);this.C.M=!1;this.Ga=a.model;this.da=8;this.fb=10;this.Wa=13;this.ea=27;this.Na=this.da;this.Va=this.fb;this.Ha=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.Ha]=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()}B(Qa);
|
||||
f=Qa.prototype;f.reset=function(){this.Ma(this.Ha);this.g=this.K;this.oa=0;this.o=[this.K,0,0,0,0,0,0,0];this.P=[];if(this.v)for(var a in this.v)isNaN(+a)||this.v[a]&&clearTimeout(this.v[a]);this.v=[];this.Aa=this.A=0;this.pa=-1;this.ja=this.o;this.qa=this.V=0;this.B=""};
|
||||
f=Qa.prototype;f.reset=function(){this.Ma(this.Ga);this.g=this.K;this.oa=0;this.o=[this.K,0,0,0,0,0,0,0];this.P=[];if(this.v)for(var a in this.v)isNaN(+a)||this.v[a]&&clearTimeout(this.v[a]);this.v=[];this.Aa=this.A=0;this.pa=-1;this.ja=this.o;this.qa=this.V=0;this.B=""};
|
||||
f.T=function(a,b,c){if(void 0===this.H[b])switch(b){case "keyDown":return this.H[b]=c,c.onkeydown=function(a){return function(b){return Ra(a,b,!0)}}(this),!0;case "keyPress":return this.H[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.B="";a.g&8?a.g&=-9:c=!Sa(a,b);a.u&&H(a.u,a.u.za)&&a.u.message("keyPress("+q(b)+"): "+(c?"pass":"consume"));return c}}(this),!0;case "keyUp":return this.H[b]=c,c.onkeyup=function(a){return function(b){return Ra(a,b,
|
||||
!1)}}(this),!0;case "break":return this.H[b]=c,c.onclick=function(a){return function(){a.J&&a.J.reset(!0)}}(this),!0;default:if(void 0!==this.D[b])return this.H[b]=c,c.onclick=function(a,b,c){return function(){a.s&&a.s.ca();return!Sa(a,c)}}(this,b,this.D[b]),!0}return!1};f.ba=function(a,b,c,d){this.a=a;this.ra=b;this.ib=c-b+1;this.kb=this.ra+this.ib;d&&(this.s=d,N(d,b,c,this,this.W));this.X()};f.Ma=function(a){this.N=a;this.R=255;600!=this.N&&(this.R=0,this.l("updated keyboard model: "+this.N))};
|
||||
f.ia=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.J=b,this.u=L(b,"debugger"))};f.X=function(){this.U=(this.jb=v("iOS"))||v("Android");this.u&&H(this.u,this.u.za)&&this.u.message("mobile keyboard support: "+(this.U?"true":"false")+" ("+window.navigator.userAgent+")");z.prototype.X.call(this)};function Ta(a,b){b=b?100:250;a.s&&a.s.ta&&(b/=a.s.ta);return b}function Ua(a,b){!a.A||void 0!==b&&b==a.A||(a.u&&H(a.u,a.u.za)&&a.u.message("autoClear("+q(a.A)+")"),clearTimeout(a.v[a.A]),T(a,a.A,!1,4))}
|
||||
|
|
@ -108,50 +108,50 @@ f.T=function(a,b,c){var d=this;switch(b){case "listSerial":return this.H[b]=c,!0
|
|||
b.name,c.result.toString(),0)};c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};f.ba=function(a,b,c,d){this.a=a;this.N=b;this.L=c-b+1;this.K=this.N+this.L;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.J=b,this.b=L(b,"keyboard"),this.u=L(b,"debugger"))};
|
||||
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){z.call(this,"C1PDiskController",a);this.C.M=!1;this.reset(!0)}B(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(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),
|
||||
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){z.call(this,"C1PDiskController",a);this.C.M=!1;this.reset(!0)}B(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,Da:20,ma:0,Ca:-1,Ua:[]})};
|
||||
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.Da&&(0<c.Da?(b&=-129,fb(a)):(c.Da=100,0<=a.b&&(a.g[a.b].Ca=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.Fa)&&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.Da=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].Ca&&(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],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 C=0;C<l.length;C++){k=l[C];
|
||||
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)}}}
|
||||
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.Fa)&&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){b=b.trackNum;if(void 0===b)throw Error("missing bcd value: trackNum");a.push(Math.floor(b/10)<<4|b%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(a=128,b=d.I^c;b&&a;)b&a&&this.u.message(" changed "+d.Hb+"."+d.Mb[a]+" to "+(c&a?"1":"0")),a>>=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;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){z.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(" ");
|
||||
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.Fa,!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.Fa|this.u.ob)&&(S(this.u,this,a,b,this.u.Fa,!0,d.Hb),d.Mb))for(a=128,b=d.I^c;b&&a;)b&a&&this.u.message(" changed "+d.Hb+"."+d.Mb[a]+" to "+(c&a?"1":"0")),a>>=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].Ca=-1,a.N.update(255),a.v.update())}
|
||||
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.Ca&&b.Ca<c.Ib.length?(b.Da=100,b=c.Ib[b.Ca++],a.N.update(b),a.v.update()):(b.Da=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){z.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.Fa=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.Ia="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],
|
||||
[0,1,this.J],[],[],[],[0,1,this.g],[40,1,this.g],[],[46],[0,2,this.A],[],[],[],[0,2,this.o],[40,2,this.o],[],[],[47,1,this.D],[],[],[49,1,this.b],[47,1,this.b],[48,1,this.b],[],[22],[],[53],[],[49,2,this.O],[47,2,this.O],[48,2,this.O],[],[3,1,this.fa],[47,1,this.J],[],[],[49,1,this.g],[47,1,this.g],[48,1,this.U],[],[55],[47,2,this.A],[54],[],[],[47,2,this.o],[],[],[31,1,this.v],[29,1,this.D],[30,1,this.v],[],[31,1,this.b],[29,1,this.b],[30,1,this.b],[],[51],[29,1,this.v],[50],[],[31,2,this.O],[29,
|
||||
2,this.O],[30,2,this.O],[],[4,1,this.fa],[29,1,this.J],[],[],[31,1,this.g],[29,1,this.g],[30,1,this.U],[],[16],[29,2,this.A],[52],[],[31,2,this.o],[29,2,this.o],[30,2,this.A],[],[19,1,this.v],[17,1,this.D],[],[],[19,1,this.b],[17,1,this.b],[20,1,this.b],[],[26],[17,1,this.v],[21],[],[19,2,this.O],[17,2,this.O],[20,2,this.O],[],[8,1,this.fa],[17,1,this.J],[],[],[],[17,1,this.g],[20,1,this.g],[],[14],[17,2,this.A],[],[],[],[17,2,this.o],[20,2,this.o],[],[18,1,this.v],[43,1,this.D],[],[],[18,1,this.b],
|
||||
[43,1,this.b],[24,1,this.b],[],[25],[43,1,this.v],[33],[],[18,2,this.O],[43,2,this.O],[24,2,this.O],[],[5,1,this.fa],[43,1,this.J],[],[],[],[43,1,this.g],[24,1,this.g],[],[45],[43,2,this.A],[],[],[],[43,2,this.o],[24,2,this.o],[]]}B(lb);f=lb.prototype;
|
||||
f.T=function(a,b,c){var d=this;switch(b){case "debugInput":return this.R=this.H[b]=c,this.R.focus(),c.onkeypress=function(a,c){return function(d){13==d.keyCode&&(b=c.value,c.value="",nb(a,b))}}(this,c),!0;case "debugEnter":return this.H[b]=c,ga(c,function(){return d.R?(b=d.R.value,nb(d,b),!0):!1}),!0;case "step":return this.H[b]=c,ga(c,function(a){var b=!1;J(d,!0)||(I(d,!0),b=d.step(a?1:0),I(d,!1));return b}),!0}return!1};
|
||||
f.ba=function(a,b,c){this.a=a;this.N=b;this.qa=c-b+1;this.Fa=this.N+this.qa;this.X()};f.ia=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.s=L(b,"cpu"))};f.ca=function(){this.R.focus()};
|
||||
f.ba=function(a,b,c){this.a=a;this.N=b;this.qa=c-b+1;this.Ea=this.N+this.qa;this.X()};f.ia=function(a,b){a&&!this.C.M&&(this.C.M=!0,this.s=L(b,"cpu"))};f.ca=function(){this.R.focus()};
|
||||
function mb(a,b){a.P=0;a.v=1;a.o=2;a.A=3;a.Oa=4;a.nb=5;a.g=6;a.U=7;a.D=8;a.J=9;a.O=10;a.b=11;a.fa=a.Oa;var c="",d;if(b)for(a.ka="A #$nn $nnnn,X $nnnn,Y $nnnn ($nnnn) $nn,X $nn,Y ($nn,X) ($nn),Y $nnnn $nn".split(" "),b=0;b<a.ka.length;b++)d=a.ka[b],c+="("+d.replace(/\(/g,"\\(").replace(/\)/g,"\\)").replace(/nnnn/g,"[0-9A-F][0-9A-F][0-9A-F][0-9A-F]?").replace(/nn/g,"[0-9A-F][0-9A-F]?").replace(/\$/g,"\\$")+"|)";else for(a.ka="A nn [nnnn+X] [nnnn+Y] nnnn [nnnn] [nn+X] [nn+Y] [[nn+X]] [[nn]+Y] [nnnn] [nn]".split(" "),
|
||||
b=0;b<a.ka.length;b++)d=a.ka[b],c+="("+d.replace(/\[/g,"\\[").replace(/]/g,"\\]").replace(/nnnn/g,"[0-9A-F][0-9A-F][0-9A-F][0-9A-F]?").replace(/nn/g,"[0-9A-F][0-9A-F]?").replace(/\+/g,"\\+")+"|)";a.Me=new RegExp(c);a.Nb=[27,a.Pa,9,7,11,12,3,4,8,5]}f.aa=function(){this.s.aa()};function S(a,b,c,d,e,g,h){(a.la&e)==e&&(e=a.s.S(c),a.message(b.id+"."+(g?"setByte":"getByte")+"("+r(c)+")"+(void 0!==d?" @"+r(d):"")+": "+(h?h+"=":"")+q(e)))}f.message=function(a){this.l(a);Ja(this.s)};f.Qb=function(){this.l("Type ? for list of debugger commands\n")};
|
||||
f.va=function(){if(!ob(this))return!1;this.s.va();return!0};f.step=function(a){if(!ob(this))return!1;var b;try{b=this.s.step(a)}catch(c){b=void 0,ua(this.s,c.stack||c.message)}void 0!==b&&this.L++;this.s.update(!0);this.update(!0);return b};f.update=function(a){this.ua=this.s.f;a||this.Ca?pb(this):qb(this)};function ob(a){a.s&&K(a.s)&&!J(a.s)?(a=a.s,a.C.error?(a.l(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}
|
||||
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=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&&
|
||||
f.va=function(){if(!ob(this))return!1;this.s.va();return!0};f.step=function(a){if(!ob(this))return!1;var b;try{b=this.s.step(a)}catch(c){b=void 0,ua(this.s,c.stack||c.message)}void 0!==b&&this.L++;this.s.update(!0);this.update(!0);return b};f.update=function(a){this.ua=this.s.f;a||this.Ba?pb(this):qb(this)};function ob(a){a.s&&K(a.s)&&!J(a.s)?(a=a.s,a.C.error?(a.l(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}
|
||||
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.Ba||this.l("running")};f.stop=function(a,b){if(!this.Ba&&(this.l("stopped"),b)){var c=ea();this.l(c-a+"ms ("+b+" cycles)")}this.update();this.ca();this.Ba||(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.Ea&&(Ca(this.s,a),b=this.a[this.N+a],b&=255);return b};f.W=function(a,b){a<this.N||a>=this.Ea?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.Ba=!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=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.Ia[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;if(a.B)if("clear"==b){for(b=0;b<a.B.length;b++)a.B[b]=[b,0];a.l("frequency data cleared");c++}else if(void 0!==b)a.l("unknown frequency command: "+b),c++;else{var d=a.B.slice();d.sort(function(a,b){return b[1]-a[1]});for(b=0;b<d.length;b++){var e=d[b][0],g=d[b][1];g&&(a.l(a.Ja[a.ga[e][0]]+" ("+q(e)+"): "+g+" 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 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.Ea)&&(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;if(a.B)if("clear"==b){for(b=0;b<a.B.length;b++)a.B[b]=[b,0];a.l("frequency data cleared");c++}else if(void 0!==b)a.l("unknown frequency command: "+b),c++;else{var d=a.B.slice();d.sort(function(a,b){return b[1]-a[1]});for(b=0;b<d.length;b++){var e=d[b][0],g=d[b][1];g&&(a.l(a.Ia[a.ga[e][0]]+" ("+q(e)+"): "+g+" 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.Ea;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.Ba?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(b&&1<b.length){var c=!1,d=b[1],e=d.indexOf("=");if(0<e)b=d.substr(e+1),d=d.substr(0,e);else if(2<b.length)b=b[2];else{a.l("missing value for "+b[1]);return}e=parseInt(b,16);if(isNaN(e)){a.l("invalid value: "+b);return}switch(d.toUpperCase()){case "A":a.s.h=e&255;break;case "X":a.s.w=e&255;break;case "Y":a.s.F=
|
||||
e&255;break;case "C":a.s.c=e?256:0;break;case "Z":a.s.j=e?0:1;break;case "D":e?La(a.s):Ma(a.s);break;case "V":e?(d=a.s,d.v=0,d.A=128):(d=a.s,d.v=0,d.A=0);break;case "N":a.s.i=e?128:0;break;case "S":if(256!=(e&-256)){a.l("invalid stack pointer: "+b);return}a.s.G=e;break;case "PC":c=!0;a.s.f=e&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){b=void 0===b?1:parseInt(b,10);var c=1==b?0:1;fa(b,function(a){return function(){return I(a,!0)&&a.step(c)}}(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;b=c[2];var g=c[3],c=a.ha,d=[];if(void 0!==b){var h;b=b.toUpperCase();"?"==b.charAt(b.length-
|
||||
1)&&(g="?",b=b.substr(0,b.length-1));for(h=0;h<a.Ja.length&&b!=a.Ja[h];h++);h==a.Ja.length&&(a.l("unknown operation: "+b),h=-1);var l="",k;if(0<=h&&void 0!==g)if(l=g.toUpperCase(),"?"==l){for(g=k=0;g<a.ga.length;g++)a.ga[g][0]===h&&(k||a.l("supported opcodes:"),a.l(" "+p(g,2)+": "+b+(void 0!==a.ga[g][2]?" "+a.ka[a.ga[g][2]]:"")),k++);h=-1}else if((k=l.match(a.Me))&&k[0]==l){for(g=1;g<k.length;g++)if(k[g]==l)if(void 0===e)e=g-1;else{a.l("too many operand matches (both "+a.ka[e]+" and "+a.ka[g-
|
||||
1)&&(g="?",b=b.substr(0,b.length-1));for(h=0;h<a.Ia.length&&b!=a.Ia[h];h++);h==a.Ia.length&&(a.l("unknown operation: "+b),h=-1);var l="",k;if(0<=h&&void 0!==g)if(l=g.toUpperCase(),"?"==l){for(g=k=0;g<a.ga.length;g++)a.ga[g][0]===h&&(k||a.l("supported opcodes:"),a.l(" "+p(g,2)+": "+b+(void 0!==a.ga[g][2]?" "+a.ka[a.ga[g][2]]:"")),k++);h=-1}else if((k=l.match(a.Me))&&k[0]==l){for(g=1;g<k.length;g++)if(k[g]==l)if(void 0===e)e=g-1;else{a.l("too many operand matches (both "+a.ka[e]+" and "+a.ka[g-
|
||||
1]+")");h=-1;break}e==a.Oa&&0>a.Nb.indexOf(h)&&(e=a.O);e==a.nb&&27!=h&&(e=a.O)}else a.l("unknown operand: "+l),h=-1;if(0<=h){k=-1;for(g=0;g<a.ga.length;g++)if(a.ga[g][0]===h&&a.ga[g][2]===e)if(0>k)k=g;else{a.l("too many instruction matches (both "+q(k)+" and "+q(g)+")");k=-2;break}if(0<=k){if(d.push(k),void 0!==e)if(b=a.ga[k][1],l=l.match(/[0-9A-F]+/))for(l=parseInt(l[0],16),1==b&&e==a.fa&&(l-=c+2,-128>l||127<l)&&(a.l("branch out of range ("+l+")"),d=[],b=0),g=0;g<b;g++)d.push(l&255),l>>>=8;else b&&
|
||||
a.l("instruction missing "+b+" bytes")}else a.l("unknown instruction: "+b+" "+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=b="";g=e;for(h=0;8>h&&e<a.Fa;h++)k=a.S(e),void 0===k&&(k=0),b+=p(k,2)+" ",l+=32<=k&&128>k?String.fromCharCode(k):".",e++;a.l(p(g,4)+" "+b+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++)b=parseInt(c[d],16),a.W(e++,b);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();
|
||||
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=b="";g=e;for(h=0;8>h&&e<a.Ea;h++)k=a.S(e),void 0===k&&(k=0),b+=p(k,2)+" ",l+=32<=k&&128>k?String.fromCharCode(k):".",e++;a.l(p(g,4)+" "+b+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++)b=parseInt(c[d],16),a.W(e++,b);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;if(d=a.xa){b=void 0===l?a.Rb:parseInt(l,10);void 0===b&&(b=10);b>d.length&&(a.l("note: only "+d.length+" available"),b=d.length);
|
||||
void 0!==l&&(a.lb=0,a.l(b+" instructions earlier:"));l=a.lb?a.lb:1;c-=b;for(0>c&&(c=d.length-1);e&&c!=a.Ka;){g=d[c];if(0>g)break;a.l(vb(a,g,l++));++c==d.length&&(c=0);e--;b--}a.Rb=b;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");
|
||||
void 0!==l&&(a.lb=0,a.l(b+" instructions earlier:"));l=a.lb?a.lb:1;c-=b;for(0>c&&(c=d.length-1);e&&c!=a.Ka;){g=d[c];if(0>g)break;a.l(vb(a,g,l++));++c==d.length&&(c=0);e--;b--}a.Rb=b;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.Ba=!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){z.call(this,"C1PComputer",a);this.Y=b}B(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)}
|
||||
|
|
|
|||
|
|
@ -3,30 +3,30 @@ function da(a){return a.replace(/[&<>"']/g,function(a){return ca[a]})}var q=Date
|
|||
function r(a,b){var c=0,d=null;if("object"==typeof resources&&(d=resources[a]))b&&b(a,d,c);else if("function"==typeof resources)resources(a,function(c,d){b&&b(a,c,d)});else{var f=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");f.onreadystatechange=function(){4===f.readyState&&(d=f.responseText,200==f.status||!f.status&&d.length&&"file:"==(window?window.location.protocol:"file:")||(c=f.status||-1),b&&b(a,d,c))};f.open("GET",a,!0);f.send()}}
|
||||
function t(a){window&&window.alert(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}var v={init:[],show:[],exit:[]},ea=!1,fa=!1,w=!0;function ga(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 z(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 support@pcjs.org. Thanks."))}}function A(a){!w&&a?(w=!0,ea&&ha("init"),fa&&ha("show")):w=a}function ha(a){v[a]&&z(v[a])}ga("onload",function(){ea=!0;z(v.init)});ga("onpageshow",function(){fa=!0;z(v.show)});ga(u("Opera")||u("iOS")?"onunload":"onbeforeunload",function(){z(v.exit)});
|
||||
function B(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;b=this.id.indexOf(".");0>b?this.wa=this.id:(this.Ba=this.id.substr(0,b),this.wa=this.id.substr(b+1));this[a]=c;this.u={ready:!1,pa:!1,xa:!1,H:!1,error:!1};this.va=null;this.u.error=!1;this.A={};C.push(this)}var ia=void 0,ja={};
|
||||
function B(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;b=this.id.indexOf(".");0>b?this.wa=this.id:(this.Ba=this.id.substr(0,b),this.wa=this.id.substr(b+1));this[a]=c;this.u={ready:!1,ta:!1,xa:!1,H:!1,error:!1};this.va=null;this.u.error=!1;this.A={};C.push(this)}var ia=void 0,ja={};
|
||||
if(window){ia||(ia=window.location.search.substr(1));for(var ka,la=/\+/g,ma=/([^&=]+)=?([^&]*)/g;ka=ma.exec(ia);)ja[decodeURIComponent(ka[1].replace(la," "))]=decodeURIComponent(ka[2].replace(la," "))}function na(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 D(a){var b;b||(b=B);a.prototype=na(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var E=window.PCjs.Machines||(window.PCjs.Machines={}),C=window.PCjs.Components||(window.PCjs.Components=[])}else E={},C=[];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<C.length;c++)if(C[c].id===a)return C[c]}return null}
|
||||
function G(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}function H(a,b){b=I(b.parentNode,"c1pjs-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,f=0;f<d.length;f++){var g=d[f];if(1===g.nodeType){var h=g.getAttribute("class");if(h)for(var l=h.split(" "),k=0;k<l.length;k++)switch(h=l[k],h){case "c1pjs-binding":(h=G(g))&&h.binding&&a.J(h.type,h.binding,g,h.value),k=l.length}}}}
|
||||
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}
|
||||
B.prototype={constructor:B,parent:null,toString:function(){return this.name?this.name:this.id||this.type},J:function(a,b,c){switch(b){case "clear":return this.A[b]||(this.A[b]=c,c.onclick=function(a){return function(){a.A.print&&(a.A.print.value="")}}(this)),!0;case "print":return this.A[b]||(this.ya=this.A[b]=c,c.value="",this.F=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.ua=function(a){this.F(a,this.wa)}),!0;default:return!1}},log:function(){},F:function(){},status:function(a){this.F(this.wa+": "+a)},ua:function(a,b,c){c=c||this.type;b||t((c?c+": ":"")+a)},N:function(a){this.u.error||(this.u.ready=!1!==a,this.u.ready&&(a=this.va,this.va=null,a&&a()))}};function oa(a,b){if(a.u.xa)return a.u.pa&&(a.u.pa=!1),a.u.xa=!1;if(a.u.error)return a.F(a.toString()+" error"),!1;a.u.pa=b;return a.u.pa}function J(a,b){b&&(a.u.ready?b():a.va=b);return a.u.ready}
|
||||
this.ua=function(a){this.F(a,this.wa)}),!0;default:return!1}},log:function(){},F:function(){},status:function(a){this.F(this.wa+": "+a)},ua:function(a,b,c){c=c||this.type;b||t((c?c+": ":"")+a)},N:function(a){this.u.error||(this.u.ready=!1!==a,this.u.ready&&(a=this.va,this.va=null,a&&a()))}};function oa(a,b){if(a.u.xa)return a.u.ta=!1,a.u.xa=!1;if(a.u.error)return a.F(a.toString()+" error"),!1;a.u.ta=b;return a.u.ta}function J(a,b){b&&(a.u.ready?b():a.va=b);return a.u.ready}
|
||||
function pa(a,b){a.u.error=!0;a.ua(b)}function K(a){B.call(this,"C1PPanel",a);this.u.H=!1}D(K);K.prototype.J=function(a,b,c,d){return this.I&&this.I.J(a,b,c,d)||this.f&&this.f.J(a,b,c,d)||this.b&&this.b.J(a,b,c,d)?!0:B.prototype.J.call(this,a,b,c,d)};K.prototype.$=function(a,b){a&&!this.u.H&&(this.u.H=!0,this.I=b,this.f=L(b,"cpu"),this.b=L(b,"keyboard"),qa())};
|
||||
function qa(){for(var a=!1,b=I(document,"c1pjs","panel"),c=0;c<b.length;c++){var d=b[c],f=G(d),g=F(f.id);g||(a=!0,g=new K(f));H(g,d);a&&g.N()}}x(qa);
|
||||
function ra(a){B.call(this,"C1PCPU",a);sa(this);this.u.H=!1;this.u.Z=!1;this.ta=a.autoStart;this.ia=0;this.Aa=2;this.speed=this.ia;this.oa=30;this.na=5;this.ea=8;this.ra=["Slow","Fast","Max"];this.ab=["(1Mhz)","(up to "+this.ea+"Mhz)","(unlimited)"];this.O=[];this.K=[];this.ja=65536;this.ka=0;this.Y=65536;this.ca=0;this.v=[this.Hb,this.$c,this.Sd,this.l,this.l,this.bd,this.xb,this.l,this.ed,this.Zc,this.wb,this.l,this.l,this.Wc,this.ub,this.l,this.Gb,this.ad,this.l,this.l,this.l,this.cd,this.yb,this.l,
|
||||
function ra(a){B.call(this,"C1PCPU",a);sa(this);this.u.H=!1;this.u.Z=!1;this.sa=a.autoStart;this.ia=0;this.Aa=2;this.speed=this.ia;this.oa=30;this.na=5;this.ea=8;this.qa=["Slow","Fast","Max"];this.ab=["(1Mhz)","(up to "+this.ea+"Mhz)","(unlimited)"];this.O=[];this.K=[];this.ja=65536;this.ka=0;this.Y=65536;this.ca=0;this.v=[this.Hb,this.$c,this.Sd,this.l,this.l,this.bd,this.xb,this.l,this.ed,this.Zc,this.wb,this.l,this.l,this.Wc,this.ub,this.l,this.Gb,this.ad,this.l,this.l,this.l,this.cd,this.yb,this.l,
|
||||
this.Kb,this.Yc,this.l,this.l,this.l,this.Xc,this.vb,this.l,this.xc,this.qb,this.l,this.l,this.Db,this.sb,this.ld,this.l,this.gd,this.pb,this.kd,this.l,this.Cb,this.mb,this.hd,this.l,this.Eb,this.rb,this.l,this.l,this.l,this.tb,this.md,this.l,this.Cd,this.ob,this.l,this.l,this.l,this.nb,this.jd,this.l,this.sd,this.lc,this.l,this.l,this.l,this.nc,this.Tc,this.l,this.dd,this.kc,this.Sc,this.l,this.wc,this.hc,this.Qc,this.l,this.Ib,this.mc,this.l,this.l,this.l,this.oc,this.Uc,this.l,this.Mb,this.jc,
|
||||
this.l,this.l,this.l,this.ic,this.Rc,this.l,this.td,this.La,this.l,this.l,this.l,this.Na,this.qd,this.l,this.fd,this.Ka,this.pd,this.l,this.vc,this.Ha,this.nd,this.l,this.Jb,this.Ma,this.l,this.l,this.l,this.Oa,this.rd,this.l,this.Ed,this.Ja,this.l,this.l,this.l,this.Ia,this.od,this.l,this.l,this.Id,this.l,this.l,this.Qd,this.Kd,this.Nd,this.l,this.gc,this.l,this.Wd,this.l,this.Pd,this.Fd,this.Md,this.l,this.zb,this.Jd,this.l,this.l,this.Rd,this.Ld,this.Od,this.l,this.Yd,this.Hd,this.Xd,this.l,this.l,
|
||||
this.Gd,this.l,this.l,this.Nc,this.Cc,this.Ic,this.l,this.Oc,this.Ec,this.Jc,this.l,this.Ud,this.Bc,this.Td,this.l,this.Lc,this.yc,this.Gc,this.l,this.Ab,this.Dc,this.l,this.l,this.Pc,this.Fc,this.Kc,this.l,this.Nb,this.Ac,this.Vd,this.l,this.Mc,this.zc,this.Hc,this.l,this.$b,this.Sb,this.l,this.l,this.ac,this.Ub,this.dc,this.l,this.uc,this.Rb,this.fc,this.l,this.Zb,this.Ob,this.bc,this.l,this.Fb,this.Tb,this.l,this.l,this.l,this.Vb,this.ec,this.l,this.Lb,this.Qb,this.l,this.l,this.l,this.Pb,this.cc,
|
||||
this.l,this.Xb,this.Ta,this.l,this.l,this.Yb,this.Va,this.rc,this.l,this.tc,this.Sa,this.Vc,this.l,this.Wb,this.Pa,this.pc,this.l,this.Bb,this.Ua,this.l,this.l,this.l,this.Wa,this.sc,this.l,this.Dd,this.Ra,this.l,this.l,this.l,this.Qa,this.qc,this.l];this.$a=[7,6,0,0,0,3,5,0,3,2,2,0,0,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,3,6,0,0,3,3,5,0,4,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,3,2,2,0,3,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,6,6,0,0,0,3,5,0,4,2,2,0,5,4,6,0,2,5,0,0,0,4,6,0,2,
|
||||
4,0,0,0,4,7,0,0,6,0,0,3,3,3,0,2,0,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,0,4,0,0,2,6,2,0,3,3,3,0,2,2,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,4,4,4,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0]}D(ra);e=ra.prototype;e.reset=function(a){this.u.Z&&M(this);sa(this);this.c=this.a[65532]|this.a[65533]<<8;this.u.error=!1;a&&(!0===this.ta||null===this.ta&&void 0===this.A.run)&&N(this)};
|
||||
4,0,0,0,4,7,0,0,6,0,0,3,3,3,0,2,0,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,0,4,0,0,2,6,2,0,3,3,3,0,2,2,2,0,4,4,4,0,2,5,0,0,4,4,4,0,2,4,2,0,4,4,4,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0,2,6,0,0,3,3,5,0,2,2,2,0,4,4,6,0,2,5,0,0,0,4,6,0,2,4,0,0,0,4,7,0]}D(ra);e=ra.prototype;e.reset=function(a){this.u.Z&&M(this);sa(this);this.c=this.a[65532]|this.a[65533]<<8;this.u.error=!1;a&&(!0===this.sa||null===this.sa&&void 0===this.A.run)&&N(this)};
|
||||
e.J=function(a,b,c){a=!1;switch(b){case "run":this.A[b]=c;c.onclick=function(a){return function(){a.u.Z?M(a):N(a)}}(this);a=!0;break;case "A":case "X":case "Y":case "S":case "PC":case "C":case "Z":case "I":case "D":case "B":case "V":case "N":case "speed":this.A[b]=c;a=!0;break;case "setSpeed":this.A[b]=c,c.onclick=function(a){return function(){ta(a,2<=a.speed?a.ia:a.speed+1,!0)}}(this),a=!0}return a};e.X=function(a,b){this.a=a;(this.Fa=b)?t("unsupported CPU address buffer offset ("+this.Fa+")"):this.N()};
|
||||
e.$=function(a,b){if(a&&!this.u.H){this.I=b;if(a=L(b,"video"))this.za=function(a){return function(){ua(a)}}(a),this.da=function(a){return function(){a.da()}}(a);this.u.H=!0;this.reset(!0);this.update()}};function va(a,b,c,d,f){0>wa(a.O,b,c,d,f)&&(a.ja>b&&(a.ja=b),a.ka<c&&(a.ka=c),a.O.push([b,c,d,f]))}function O(a,b,c,d,f){0>wa(a.K,b,c,d,f)&&(a.Y>b&&(a.Y=b),a.ca<c&&(a.ca=c),a.K.push([b,c,d,f]))}
|
||||
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 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.qa[2<=b?0:b+1]),a.F("running at "+a.qa[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-=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}
|
||||
function M(a){a.u.ta&&(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}
|
||||
function Q(a,b,c){var d=a.f&256?1:0,f=(b&15)+(c&15)+d;10<=f&&(f=f+6&15|16);f+=(b&240)+(c&240);a.C=b^c;a.w=f;a.h=f&255;160<=f&&(f+=96);512<=f&&(f-=256);a.f=f;a.i=b+c+d&255;a.G--;return f&255}function R(a,b,c){var d=a.f&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.h=a.i=(a.f=b-c-d)&255;a.C=b^c;a.w=a.f;a.f^=256;a.G--;return f&255}function sa(a){a.g=0;a.m=0;a.o=0;a.s=256;a.B=0;a.h=0;a.i=0;a.C=0;a.w=0;a.f=0;a.c=0;a.b=-1;a.j=-1;a.ba=0;a.S=a.L=a.G=0}
|
||||
e.Hb=function(){this.c++;this.a[this.s--]=this.c>>8;this.s|=256;this.a[this.s--]=this.c&255;this.s|=256;this.B|=16;this.B=za(this);this.a[this.s--]=this.B;this.s|=256;this.B&=239;this.b=65534;this.c=this.a[this.b]|this.a[this.b+1]<<8};e.$c=function(){this.b=this.a[this.c++]+this.m&255;this.b=this.a[this.b]|this.a[this.b+1]<<8;this.h=this.i=this.g|=this.a[this.b]};e.bd=function(){this.b=this.a[this.c++];this.h=this.i=this.g|=this.a[this.b]};
|
||||
e.xb=function(){this.j=this.a[this.c++];this.f=this.a[this.j]<<1;this.h=this.i=this.a[this.j]=this.f&255};e.ed=function(){this.B=za(this);this.a[this.s--]=this.B;this.s|=256};e.Zc=function(){this.b=this.c++;this.h=this.i=this.g|=this.a[this.b]};e.wb=function(){this.f=this.g<<1;this.h=this.i=this.g=this.f&255};e.Wc=function(){this.b=this.a[this.c++]|this.a[this.c++]<<8;this.h=this.i=this.g|=this.a[this.b]};
|
||||
|
|
@ -82,19 +82,19 @@ function Ga(a){B.call(this,"C1PKeyboard",a);this.u.H=!1;this.ea=a.model;this.L=8
|
|||
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);
|
||||
e=Ga.prototype;e.reset=function(){this.qa(this.ea);this.c=this.s;this.S=0;this.g=[this.s,0,0,0,0,0,0,0];this.w=[];if(this.h)for(var a in this.h)isNaN(+a)||this.h[a]&&clearTimeout(this.h[a]);this.h=[];this.ca=this.i=0;this.T=-1;this.P=this.g;this.V=this.C=0;this.j=""};
|
||||
e=Ga.prototype;e.reset=function(){this.pa(this.ea);this.c=this.s;this.S=0;this.g=[this.s,0,0,0,0,0,0,0];this.w=[];if(this.h)for(var a in this.h)isNaN(+a)||this.h[a]&&clearTimeout(this.h[a]);this.h=[];this.ca=this.i=0;this.T=-1;this.P=this.g;this.V=this.C=0;this.j=""};
|
||||
e.J=function(a,b,c){if(void 0===this.A[b])switch(b){case "keyDown":return this.A[b]=c,c.onkeydown=function(a){return function(b){return Ha(a,b,!0)}}(this),!0;case "keyPress":return this.A[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.j="";a.c&8?a.c&=-9:c=!T(a,b);return c}}(this),!0;case "keyUp":return this.A[b]=c,c.onkeyup=function(a){return function(b){return Ha(a,b,!1)}}(this),!0;case "break":return this.A[b]=c,c.onclick=function(a){return function(){a.I&&
|
||||
a.I.reset(!0)}}(this),!0;default:if(void 0!==this.m[b])return this.A[b]=c,c.onclick=function(a,b,c){return function(){a.f&&a.f.da();return!T(a,c)}}(this,b,this.m[b]),!0}return!1};e.X=function(a,b,c,d){this.a=a;this.Y=b;this.oa=c-b+1;this.ta=this.Y+this.oa;d&&(this.f=d,O(d,b,c,this,this.R));this.N()};e.qa=function(a){this.o=a;this.B=255;600!=this.o&&(this.B=0,this.F("updated keyboard model: "+this.o))};e.$=function(a,b){a&&!this.u.H&&(this.u.H=!0,this.I=b)};
|
||||
e.N=function(){this.U=(this.ra=u("iOS"))||u("Android");B.prototype.N.call(this)};function Ia(a,b){b=b?100:250;a.f&&a.f.ba&&(b/=a.f.ba);return b}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)}
|
||||
a.I.reset(!0)}}(this),!0;default:if(void 0!==this.m[b])return this.A[b]=c,c.onclick=function(a,b,c){return function(){a.f&&a.f.da();return!T(a,c)}}(this,b,this.m[b]),!0}return!1};e.X=function(a,b,c,d){this.a=a;this.Y=b;this.oa=c-b+1;this.sa=this.Y+this.oa;d&&(this.f=d,O(d,b,c,this,this.R));this.N()};e.pa=function(a){this.o=a;this.B=255;600!=this.o&&(this.B=0,this.F("updated keyboard model: "+this.o))};e.$=function(a,b){a&&!this.u.H&&(this.u.H=!0,this.I=b)};
|
||||
e.N=function(){this.U=(this.qa=u("iOS"))||u("Android");B.prototype.N.call(this)};function Ia(a,b){b=b?100:250;a.f&&a.f.ba&&(b/=a.f.ba);return b}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,h=a.b[b];void 0===h&&(1<=b&&26>=b&&(b+=64,g=a.v),h=a.b[b]);void 0!==h&&(b=h>>12,f=h>>8&15,g||(g=h&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}x(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 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.sa;c++)a.a[c]=d;a.T=d}x(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)};
|
||||
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=a.v+a.c;a.K=void 0!==d?d:0;a.P=void 0!==f?f:c;a.G=Math.floor(a.U/a.s);a.I=Math.floor(a.V/a.P)}e.da=function(){this.i.focus()};e.qa=function(a){this.o=a;600==this.o?(Na(this,this.L,this.O,3,25),1024==this.c&&this.f&&(this.h=this.C+this.c-1,O(this.f,this.h,this.h,this,this.Ya))):(this.F("updated video model: "+this.o),Na(this,64,32));Oa(this);ua(this)};
|
||||
e.reset=function(a){this.pa(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)};
|
||||
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=a.v+a.c;a.K=void 0!==d?d:0;a.P=void 0!==f?f:c;a.G=Math.floor(a.U/a.s);a.I=Math.floor(a.V/a.P)}e.da=function(){this.i.focus()};e.pa=function(a){this.o=a;600==this.o?(Na(this,this.L,this.O,3,25),1024==this.c&&this.f&&(this.h=this.C+this.c-1,O(this.f,this.h,this.h,this,this.Ya))):(this.F("updated video model: "+this.o),Na(this,64,32));Oa(this);ua(this)};
|
||||
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);a=this.f;b=a.K;var c=[],d=wa(b,this.h,this.h,this,this.Ya);if(0<=d){c.push(b[d][0]);c.push(b[d][1]);b.splice(d,1);for(var f=65536,g=0,d=0;d<b.length;d++)f>b[d][0]&&(f=b[d][0]),g<b[d][1]&&(g=b[d][1]);c.push(f);c.push(g)}4==c.length&&(a.Y=c[2],a.ca=c[3])}};function Oa(a){a.w=Array(a.c);for(var b=0;b<=a.c;b++)a.w[b]=-1}
|
||||
e.Ya=function(a,b){if(void 0!==b){this.pa(540);this.b&&this.b.pa(542);a=this.f;b=a.K;var c=[],d=wa(b,this.h,this.h,this,this.Ya);if(0<=d){c.push(b[d][0]);c.push(b[d][1]);b.splice(d,1);for(var f=65536,g=0,d=0;d<b.length;d++)f>b[d][0]&&(f=b[d][0]),g<b[d][1]&&(g=b[d][1]);c.push(f);c.push(g)}4==c.length&&(a.Y=c[2],a.ca=c[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++}}
|
||||
x(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 <canvas> 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,h=f.getContext("2d"),f=new Ma(d,f,h,g);g.onload=function(a){return function(){a.N()}}(f,d.charSet);g.src=d.charSet;H(f,c)}});
|
||||
|
|
@ -103,17 +103,17 @@ e.J=function(a,b,c){var d=this;switch(b){case "listSerial":return this.A[b]=c,!0
|
|||
b.name,c.result.toString(),0)};c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};e.X=function(a,b,c,d){this.a=a;this.o=b;this.v=c-b+1;this.s=this.o+this.v;if(this.f=d)va(d,b,c,this,this.W),O(d,b,c,this,this.R);this.N()};e.$=function(a,b){a&&!this.u.H&&(this.u.H=!0,this.I=b,this.b=L(b,"keyboard"))};
|
||||
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}}x(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(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(){},
|
||||
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,ra:[]})};
|
||||
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].ra.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.ra.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,h=f[c],l=h.sectors;if(void 0===(g=h.trackNum)||void 0===l)throw Error("track "+c+" missing data");g!=c&&t("track "+g+" out of order (expected "+c+")");d=[];var k,n,m;if(g){Ya(d,h,"trackSig");Za(d,h);X(d,h,"trackType");for(var y=0;y<l.length;y++){k=l[y];
|
||||
n=k.sectorData;X(d,k,"sectorSig");X(d,k,"sectorNum");X(d,k,"sectorPages");for(m=0;m<n.length;m++)d.push(n[m]);Ya(d,k,"sectorEndSig")}}else for(k=l[0],n=k.sectorData,X(d,h,"trackLoad",2),X(d,k,"sectorPages"),m=0;m<n.length;m++)d.push(n[m]);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)}}}
|
||||
n=k.sectorData;X(d,k,"sectorSig");X(d,k,"sectorNum");X(d,k,"sectorPages");for(m=0;m<n.length;m++)d.push(n[m]);Ya(d,k,"sectorEndSig")}}else for(k=l[0],n=k.sectorData,X(d,h,"trackLoad",2),X(d,k,"sectorPages"),m=0;m<n.length;m++)d.push(n[m]);f[g].Xa=d}a.c[0].ra=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){b=b.trackNum;if(void 0===b)throw Error("missing bcd value: trackNum");a.push(Math.floor(b/10)<<4|b%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){void 0!==b&&(b=this.f.W(a),$a(this,a-this.o,!0).update(b))};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;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)}x(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.ra[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)}x(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)}
|
||||
x(function(){for(var a=I(document,"c1pjs","computer"),b=0;b<a.length;b++){for(var c=a[b],d=G(c),f,g={},h,l=0,k=0,n=0;n<d.modules.length;n++){var m=d.modules[n];if(!n){if("cpu"!=m.type)break;l=m.start;k=m.end;h=Array(k+1-l);for(f=l;f<h.length;f++)h[f]=0}if(f=F(m.refID,d.id)){var y=m.type;void 0===g[y]&&(g[y]=[]);g[y].push(f);f.X&&void 0!==m.start&&f.X(h,m.start,m.end,g.cpu[0])}else{t('no component for <module refid="'+m.refID+'">');return}}if(!h){t('<module type="cpu"> definition must appear first in the <computer> specification');
|
||||
|
|
|
|||
Loading…
Reference in a new issue