Removed useless sHTMLClass parameter from all setBinding() methods

HTML controls with bindings are now identified by the single class attribute of "{APPCLASS}-binding" instead of the somewhat arbitrary "{APPCLASS}-input" or "{APPCLASS}-output" classes
This commit is contained in:
Jeff Parsons 2014-11-15 18:16:48 -08:00 committed by jeffpar
commit 64b2494eef
32 changed files with 221 additions and 246 deletions

View file

@ -350,27 +350,27 @@
</xsl:if>
<xsl:choose>
<xsl:when test="@type = 'button'">
<button class="{$APPCLASS}-{@class}" style="-webkit-user-select:none;{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></button>
<button class="{$APPCLASS}-binding" style="-webkit-user-select:none;{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></button>
</xsl:when>
<xsl:when test="@type = 'list'">
<select class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}">
<select class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}">
<xsl:apply-templates select="disk|app|manifest" mode="component"/>
</select>
</xsl:when>
<xsl:when test="@type = 'text'">
<input class="{$APPCLASS}-{@class}" type="text" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" value="{.}" autocapitalize="off" autocorrect="off"/>
<input class="{$APPCLASS}-binding" type="text" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" value="{.}" autocapitalize="off" autocorrect="off"/>
</xsl:when>
<xsl:when test="@type = 'submit'">
<input class="{$APPCLASS}-{@class}" type="submit" style="{$border}{$fontsize}{$style}" data-value="{$type},{$binding}" value="{.}"/>
<input class="{$APPCLASS}-binding" type="submit" style="{$border}{$fontsize}{$style}" data-value="{$type},{$binding}" value="{.}"/>
</xsl:when>
<xsl:when test="@type = 'textarea'">
<textarea class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" readonly="readonly"> </textarea>
<textarea class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" readonly="readonly"> </textarea>
</xsl:when>
<xsl:when test="@type = 'heading'">
<div><xsl:value-of select="."/></div>
</xsl:when>
<xsl:when test="@type = 'file'">
<form class="{$APPCLASS}-{@class}" data-value="{$type},{$binding}">
<form class="{$APPCLASS}-binding" data-value="{$type},{$binding}">
<fieldset class="{$APPCLASS}-fieldset">
<input type="file"/>
<input type="submit" value="Load" disabled="true"/>
@ -378,7 +378,7 @@
</form>
</xsl:when>
<xsl:when test="@type = 'led'">
<div class="{$APPCLASS}-{@class} {$APPCLASS}-{@type}" data-value="{$type},{$binding}"><xsl:value-of select="."/></div>
<div class="{$APPCLASS}-binding {$APPCLASS}-{@type}" data-value="{$type},{$binding}"><xsl:value-of select="."/></div>
</xsl:when>
<xsl:when test="@type = 'separator'">
<hr/>
@ -390,7 +390,7 @@
<div style="clear:both"> </div>
</xsl:when>
<xsl:otherwise>
<div class="{$APPCLASS}-{@class}{$subClass} {$APPCLASS}-{@type}" style="-webkit-user-select:none;{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></div>
<div class="{$APPCLASS}-binding{$subClass} {$APPCLASS}-{@type}" style="-webkit-user-select:none;{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></div>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="@label">

View file

@ -13,13 +13,13 @@ function z(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.na
if(window){Na||(Na=window.location.search.substr(1));for(var Pa,Sa=/\+/g,Ta=/([^&=]+)=?([^&]*)/g;Pa=Ta.exec(Na);)Oa[decodeURIComponent(Pa[1].replace(Sa," "))]=decodeURIComponent(Pa[2].replace(Sa," "))}function Ua(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 A(a,b){b.prototype=Ua(a.prototype)}var La=[];
function Va(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<La.length;b++){var d=La[b];a&&d.id.indexOf(a)||c.push(d)}return c}function Wa(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<La.length;c++)if(La[c].id===a)return La[c]}return null}
function Xa(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<La.length;d++)if(c)c==La[d]&&(c=null);else if(!(a!=La[d].type||b&&La[d].id.indexOf(b)))return La[d]}return null}function C(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("({"+a+"})")}catch(c){x(c.message+" ("+a+")")}return b}window&&!window.document.ELEMENT_NODE&&(window.document.ELEMENT_NODE=1);
function Za(a,b){for(var c=D(b.parentNode,"pcjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var g=e[f];if(g.nodeType===window.document.ELEMENT_NODE){var h=g.getAttribute("class");if(h)for(var l=h.split(" "),n=0;n<l.length;n++)switch(h=l[n],h){case "pcjs-input":case "pcjs-output":(n=C(g))&&n.binding&&a.Db(h,n.type,n.binding,g),n=l.length}}}}
function Za(a,b){for(var c=D(b.parentNode,"pcjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var g=e[f];if(g.nodeType===window.document.ELEMENT_NODE){var h=g.getAttribute("class");if(h)for(var l=h.split(" "),n=0;n<l.length;n++)switch(h=l[n],h){case "pcjs-binding":(h=C(g))&&h.binding&&a.Db(h.type,h.binding,g),n=l.length}}}}
function D(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},Db:function(a,b,c,d){switch(c){case "clear":return this.wa[c]||(this.wa[c]=d,d.onclick=function(a){return function(){a.wa.print&&(a.wa.print.value="")}}(this)),!0;case "print":return this.wa[c]||(this.$f=this.wa[c]=d,d.value="",this.da=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.Ja=
function(a,b,c){this.da(a,"notice",c)}),!0;default:return!1}},log:function(){},da:function(){},status:function(a){this.da(this.yh+": "+a)},Ja:function(a,b){b||x(a)},Ua:function(a){this.qa.ad||(this.qa.th=!1!==a,this.qa.th&&(this.name&&this.log("ready"),a=this.Hi,this.Hi=null,a&&a()))},$b:function(){return this.qa.Qb=!0},Zb:function(a,b){b&&(this.qa.Qb=!1);return!0}};
function $a(a,b){if(a.qa.zi)return a.qa.Ec&&(a.qa.Ec=!1),a.qa.zi=!1;if(a.qa.ad)return a.da(a.toString()+" error"),!1;a.qa.Ec=b;return a.qa.Ec}function ab(a,b){a.qa.Ec&&(b?a.qa.zi=!0:void 0===b&&a.da(a.toString()+" busy"));return a.qa.Ec}function bb(a,b){b&&(a.qa.th?b():a.Hi=b);return a.qa.th}function cb(a,b){a.qa.ad=!0;a.Ja("Fatal error: "+b)}function db(a){z.call(this,"Panel",a,db)}A(z,db);
db.prototype.Db=function(a,b,c,d){return this.Ka&&this.Ka.Db(a,b,c,d)||this.T&&this.T.Db(a,b,c,d)||this.Ra&&this.Ra.Db(a,b,c,d)||this.fa&&this.fa.Db(a,b,c,d)?!0:z.prototype.Db.call(this,a,b,c,d)};db.prototype.pc=function(a,b,c,d){this.Ka=a;this.T=c;this.fa=d;this.Ra=eb(a,"Keyboard")};db.prototype.$b=function(a,b){b||fb();return!0};db.prototype.Zb=function(){return!0};
function fb(){for(var a=!1,b=D(window.document,"pcjs","panel"),c=0;c<b.length;c++){var d=b[c],e=C(d),f=Wa(e.id);f||(a=!0,f=new db(e));Za(f,d);a&&f.Ua()}}Ha(fb);function gb(a,b,c){z.call(this,"Bus",a,gb);this.T=b;this.fa=c;this.hg=a.buswidth||20;this.Pf=this.gd=(1<<this.hg)-1;this.zb=20>=this.hg?12:14;this.gc=1<<this.zb;this.nk=this.gc>>2;this.mb=this.gc-1;this.bh=(this.Pf+this.gc)/this.gc|0;this.Ee=this.bh-1;this.vd=[];this.wd=[];this.dg=this.eg=!1;this.Ni();this.Ua()}A(z,gb);
z.prototype={toString:function(){return this.name?this.name:this.id||this.type},Db:function(a,b,c){switch(b){case "clear":return this.wa[b]||(this.wa[b]=c,c.onclick=function(a){return function(){a.wa.print&&(a.wa.print.value="")}}(this)),!0;case "print":return this.wa[b]||(this.$f=this.wa[b]=c,c.value="",this.da=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.Ja=function(a,
b,c){this.da(a,"notice",c)}),!0;default:return!1}},log:function(){},da:function(){},status:function(a){this.da(this.yh+": "+a)},Ja:function(a,b){b||x(a)},Ua:function(a){this.qa.ad||(this.qa.th=!1!==a,this.qa.th&&(this.name&&this.log("ready"),a=this.Hi,this.Hi=null,a&&a()))},$b:function(){return this.qa.Qb=!0},Zb:function(a,b){b&&(this.qa.Qb=!1);return!0}};function $a(a,b){if(a.qa.zi)return a.qa.Ec&&(a.qa.Ec=!1),a.qa.zi=!1;if(a.qa.ad)return a.da(a.toString()+" error"),!1;a.qa.Ec=b;return a.qa.Ec}
function ab(a,b){a.qa.Ec&&(b?a.qa.zi=!0:void 0===b&&a.da(a.toString()+" busy"));return a.qa.Ec}function bb(a,b){b&&(a.qa.th?b():a.Hi=b);return a.qa.th}function cb(a,b){a.qa.ad=!0;a.Ja("Fatal error: "+b)}function db(a){z.call(this,"Panel",a,db)}A(z,db);db.prototype.Db=function(a,b,c){return this.Ka&&this.Ka.Db(a,b,c)||this.T&&this.T.Db(a,b,c)||this.Ra&&this.Ra.Db(a,b,c)||this.fa&&this.fa.Db(a,b,c)?!0:z.prototype.Db.call(this,a,b,c)};
db.prototype.pc=function(a,b,c,d){this.Ka=a;this.T=c;this.fa=d;this.Ra=eb(a,"Keyboard")};db.prototype.$b=function(a,b){b||fb();return!0};db.prototype.Zb=function(){return!0};function fb(){for(var a=!1,b=D(window.document,"pcjs","panel"),c=0;c<b.length;c++){var d=b[c],e=C(d),f=Wa(e.id);f||(a=!0,f=new db(e));Za(f,d);a&&f.Ua()}}Ha(fb);
function gb(a,b,c){z.call(this,"Bus",a,gb);this.T=b;this.fa=c;this.hg=a.buswidth||20;this.Pf=this.gd=(1<<this.hg)-1;this.zb=20>=this.hg?12:14;this.gc=1<<this.zb;this.nk=this.gc>>2;this.mb=this.gc-1;this.bh=(this.Pf+this.gc)/this.gc|0;this.Ee=this.bh-1;this.vd=[];this.wd=[];this.dg=this.eg=!1;this.Ni();this.Ua()}A(z,gb);
gb.prototype.Ni=function(){this.Fa=Array(this.bh);for(var a=0;a<this.bh;a++){var b=a*this.gc;hb(this.Fa[a]=new ib(b),this.T,this.fa,b,this.gc)}this.T.Ni(this.Fa,this.Pf,this.zb,this.mb,this.Ee);this.T.Ae=this.gd};gb.prototype.reset=function(){jb(this,!0)};gb.prototype.$b=function(a,b){b||this.reset();return!0};
function kb(a,b,c,d,e){if(!(b&a.mb||!c||c&a.mb)){for(var f=b>>a.zb;0<c&&f<a.Fa.length;){var g=a.Fa[f];if(void 0!==g&&g.size)return lb(1,b,c);b=f*a.gc;g=a.Fa[f++]=new ib(b,a.gc,d,e);hb(g,a.T,a.fa,b,a.gc);c-=a.gc}return!0}return lb(2,b,c)}function jb(a,b){if(void 0!==b&&20<a.hg){var c=a.gd&-1048577|(b?1048576:0);c!=a.gd&&(a.gd=c,a.T&&(a.T.Ae=c))}}
gb.prototype.Uh=function(a,b,c){if(!(a&this.mb||!b||b&this.mb)){for(var d=a>>this.zb;0<b;){var e=this.Fa[d];if(!e.ia)return lb(5,a,b);e.Ze(c);b-=this.gc;d++}return!0}return lb(3,a,b)};function mb(a,b,c){if(!(b&a.mb||!c||c&a.mb)){for(var d=b>>a.zb;0<c;)b=d*a.gc,hb(a.Fa[d++]=new ib(b),a.T,a.fa,b,a.gc),c-=a.gc;return!0}return lb(4,b,c)}function nb(a,b){return a.Fa[(b&a.gd)>>a.zb].Bg(b&a.mb)}
@ -37,7 +37,7 @@ function Lb(a,b){z.call(this,"CPU",a,Lb);var c=a.cycles||b,d=a.multiplier||1;thi
k.pc=function(a,b,c,d){this.ra=b;this.fa=d;this.Ka=a;var e=eb(a,"Video");e&&(this.ti=function(){Mb(e)},this.Tc=function(){e.Tc()});this.oa=eb(a,"ChipSet");this.Ua()};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};k.$b=function(a,b){if(!b){if(a&&this.restore){Nb(this);if(!this.restore(a))return!1;Ob(this)}else this.reset();this.fa?this.fa.Mn():this.da("No debugger detected")}this.qa.Qb=!0;!Pb(this)&&this.fa&&Rb(this.fa);Sb(this);return!0};
k.Zb=function(a){this.qa.Qb=!1;return a&&this.save?this.save():!0};function Pb(a){return!0===a.qa.yi||null===a.qa.yi&&!a.fa&&void 0===a.wa.run?(a.Ve(),!0):!1}k.Tc=function(){};k.Hk=function(){return 0};function Ob(a){void 0===a.ca.kg&&(a.ca.kg=0);void 0===a.ca.xf&&(a.ca.xf=-1);void 0===a.ca.zf&&(a.ca.zf=-1);a.qa.nf=0<=a.ca.kg&&0<a.ca.xf;a.qa.nf&&(a.ca.ig=0,a.ca.yf=a.ca.kg-a.Te)}
function Tb(a,b){if(a.qa.nf){var c=!1;a.ca.ig=a.ca.ig+a.Hk()|0;a.ca.yf-=b;0>=a.ca.yf&&(a.ca.yf+=a.ca.xf,c=!0);0<=a.ca.zf&&a.ca.zf<=Ub(a)&&(a.ca.xf=a.ca.zf=-1,Ob(a),a.Fb(),c=!0);c&&a.da(Ub(a)+" cycles: checksum="+p(a.ca.ig))}}function F(a,b,c,d){void 0!==a.wa[b]&&(void 0===d&&(d=4),void 0===c&&(cb(a,"Register "+b+" is invalid"),a.Fb()),c=p(c,d),a.wa[b].innerHTML!=c&&(a.wa[b].innerHTML=c))}k.jh=function(){};k.ti=function(){};
k.Db=function(a,b,c,d){var e=this;a=!1;switch(c){case "run":this.wa[c]=d;d.onclick=function(){e.qa.Rb?e.Fb(!0):e.Ve(!0)};a=!0;break;case "reset":this.wa[c]=d;d.onclick=function(){e.Ka&&Vb(e.Ka)};a=!0;break;case "speed":this.wa[c]=d;a=!0;break;case "setSpeed":this.wa[c]=d,d.onclick=function(){Wb(e,e.ca.Kd<<1,!0)},d.innerHTML=this.ca.Pe.toFixed(2)+"Mhz",a=!0}return a};function Xb(a,b,c){a.Te+=b;c&&(a.Qc=a.A=0)}
k.Db=function(a,b,c){var d=this;a=!1;switch(b){case "run":this.wa[b]=c;c.onclick=function(){d.qa.Rb?d.Fb(!0):d.Ve(!0)};a=!0;break;case "reset":this.wa[b]=c;c.onclick=function(){d.Ka&&Vb(d.Ka)};a=!0;break;case "speed":this.wa[b]=c;a=!0;break;case "setSpeed":this.wa[b]=c,c.onclick=function(){Wb(d,d.ca.Kd<<1,!0)},c.innerHTML=this.ca.Pe.toFixed(2)+"Mhz",a=!0}return a};function Xb(a,b,c){a.Te+=b;c&&(a.Qc=a.A=0)}
function Yb(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1<a.ca.Kd&&a.ca.pd&&(d=a.ca.pd/a.ca.Bh);a.ca.Ok=Math.round(1E3/30);a.ca.Yn=Math.floor(a.ca.Ld/c*d);a.ca.Ti=Math.floor(a.ca.Ld/30*d);a.ca.Sk=Math.floor(a.ca.Ld/60*d);a.ca.Rk=Math.floor(a.ca.Ld/2*d);b||(a.ca.Af=a.ca.Ti,a.ca.mg=a.ca.Sk,a.ca.lg=a.ca.Rk);a.ca.Ui=0}function Ub(a,b){var c=a.Te+a.qe+a.Qc-a.A;b&&1<a.ca.Kd&&a.ca.pd>a.ca.Bh&&(c=Math.round(c/a.ca.Kd));return c}function Nb(a){a.ca.pd=0;a.Eh=1;a.Te=a.qe=a.Qc=a.A=0;Ob(a);Wb(a,1)}
function Wb(a,b,c){if(void 0!==b){0.8>a.ca.pd/a.ca.Pe&&(b=1);a.ca.Kd=b;b=a.ca.Bh*a.ca.Kd;if(a.ca.Pe!=b){a.ca.Pe=b;b=a.ca.Pe.toFixed(2)+"Mhz";var d=a.wa.setSpeed;d&&(d.innerHTML=b);a.da("target speed: "+b)}c&&a.Tc()}Xb(a,a.qe);a.qe=0;a.ca.wf=oa();a.ca.Qe=0;Yb(a)}
k.Ve=function(a){if($a(this,!0)){if(!this.qa.Rb){Wb(this);this.Ka&&this.Ka.start(this.ca.wf,Ub(this));this.qa.Rb=!0;this.oa&&Zb(this.oa);var b=this.wa.run;b&&(b.innerHTML="Halt");a&&this.Tc()}this.ca.Ui>=this.ca.Ld&&Yb(this,!0);this.ca.ng=0;this.ca.Ch=oa();this.ca.Qe&&(a=this.ca.Ch-this.ca.Qe,a>this.ca.Ok&&(this.ca.wf+=a,this.ca.wf>this.ca.Ch&&(this.ca.wf=this.ca.Ch)));try{do{this.Gf(this.qa.nf?1:Math.round(this.ca.Yn/this.Eh));var c=this.Qc-this.A;this.qe+=c;this.ca.ng+=c;Xb(this,0,!0);Tb(this,c);
@ -63,7 +63,7 @@ function hd(a,b){switch(b){case "CS":return a.ya;case "DS":return a.Hb;case "SS"
function jd(a,b){a.Ga=a.ya.load(b)+a.va;a.aa|=a.Lg}function kd(a,b){a.Hb.load(b);a.aa|=a.Lg}function ld(a,b){a.Cb.load(b);a.aa|=4}function md(a,b){a.ab.load(b);a.aa|=a.Lg}function G(a,b){a.Ga=a.ya.Ya+(a.va=b&65535)}function Tc(a,b,c){a.Ga=a.ya.load(c)+(a.va=b)}function nd(a,b){a.Ga=a.ya.Ya+(a.va=a.va+b&65535)}function od(a){return a.Z&a.ga?1:0}function pd(a){return ac[a.ma&255]?4:0}function qd(a){return(a.ma^a.pa)&16?16:0}function rd(a){return a.Z&a.ga-1?0:64}
function sd(a){return a.ma&a.ga>>1?128:0}function td(a){return(a.ma^a.pa^a.ma>>1)&a.ga>>1?2048:0}function ud(a){a.Z&=~a.ga}function vd(a){a.pa=a.ma&16|a.pa&-17}function wd(a){a.Z|=a.ga-1}function xd(a){sd(a)&&(a.ma^=a.ga>>1|a.ga>>2,a.pa^=32896)}function yd(a){a.ma&=~a.ga;a.pa=a.ma&32896|a.pa&-32897}function zd(a){a.Z|=a.ga}function Ad(a){a.pa=~(a.ma&16)&16|a.pa&-17}function Bd(a){a.Z&=~(a.ga-1)}function Cd(a){sd(a)||(a.ma^=a.ga>>1|a.ga>>2,a.pa^=32896)}
function Dd(a){a.ma|=a.ga;a.pa=a.ma&32896|a.pa&-32897}function Wc(a){return a.Ca&-2262|od(a)|pd(a)|qd(a)|rd(a)|sd(a)|td(a)}function Uc(a,b){a.ga=256;a.Z=a.ma=a.pa=0;b&1&&zd(a);b&4||(a.ma|=1);b&16&&(a.pa|=16);b&64||wd(a);b&128&&Cd(a);b&2048&&Dd(a);a.ya.Mc?b=b&-12289|a.Ca&12288:(a.ne=(b&12288)>>12,!a.ne||a.Gc&1||(a.ne=0));a.ya.Mc>a.ne&&(b=b&-513|a.Ca&512);a.Ca=a.Ca&-1793|b&1792|a.ck;a.Ca&256&&(a.ub|=2,a.aa|=4)}
k.Db=function(a,b,c,d){var e=!1;switch(c){case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "CS":case "DS":case "SS":case "ES":case "IP":case "PC":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "O":this.wa[c]=d;e=!0;break;default:e=Lb.prototype.Db.call(this,a,b,c,d)}return e};k.tb=function(a){return this.Fa[(a&this.Ae)>>this.zb].sc(a&this.mb)};
k.Db=function(a,b,c){var d=!1;switch(b){case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "CS":case "DS":case "SS":case "ES":case "IP":case "PC":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "O":this.wa[b]=c;d=!0;break;default:d=Lb.prototype.Db.call(this,a,b,c)}return d};k.tb=function(a){return this.Fa[(a&this.Ae)>>this.zb].sc(a&this.mb)};
k.ua=function(a){var b=a&this.mb;a=(a&this.Ae)>>this.zb;this.A-=this.B.Jj;return b!=this.mb?this.Fa[a].Zl(b):this.Fa[a++].sc(b)|this.Fa[a&this.Ee].sc(0)<<8};k.Pd=function(a,b){this.Fa[(a&this.Ae)>>this.zb].Hc(a&this.mb,b&255)};k.ed=function(a,b){var c=a&this.mb,d=(a&this.Ae)>>this.zb;this.A-=this.B.Jj;c!=this.mb?this.Fa[d].mm(c,b&65535):(this.Fa[d++].Hc(c,b&255),this.Fa[d&this.Ee].Hc(0,b>>8&255))};k.Km=function(a,b){this.Hg=a;this.la=a.ld(this.zg=b,0);return this.aa&1?0:this.tb(this.la)};
k.Lm=function(a,b){this.Hg=a;this.la=a.ld(this.zg=b,1);return this.aa&1?0:this.ua(this.la)};k.Rn=function(a,b){this.Hg=a;this.Ma=this.la=a.ld(this.zg=b,0);return this.aa&1?0:this.tb(this.la)};k.Sn=function(a,b){this.Hg=a;this.Ma=this.la=a.ld(this.zg=b,1);return this.aa&1?0:this.ua(this.la)};k.mp=function(a){this.aa&2||this.Pd(this.Hg.hc(this.zg,1),a)};k.np=function(a){this.aa&2||this.ed(this.Hg.hc(this.zg,2),a)};k.ha=function(){var a=this.tb(this.Ga);this.Ga=this.ya.Ya+(this.va=this.va+1&65535);return a};
k.M=function(){var a=this.tb(this.Ga)<<24>>24;this.Ga=this.ya.Ya+(this.va=this.va+1&65535);return a&65535};k.L=function(){var a=this.ua(this.Ga);this.Ga=this.ya.Ya+(this.va=this.va+2&65535);return a};k.La=function(){var a=this.Y;this.Y=this.Y+2&65535;return this.ua(this.Cb.ld(a,1))};function H(a,b){var c=a.Y=a.Y-2&65535;a.ed(a.Cb.hc(c,1),b)}
@ -429,7 +429,7 @@ this.H&255,this.Ga-2);Ab(this.ra,a+1&65535,this.H>>8,this.Ga-2);this.A-=this.B.t
De,ue);0<=this.Nb&&(this.H=this.Nb)},function(){this.Nb=-1;Bh[this.ha()].call(this,Ee,ue);0<=this.Nb&&(this.H=this.Nb,this.K=this.Cg)},function(){this.Z&=~this.ga;this.A-=2},function(){this.Z|=this.ga;this.A-=2},function(){this.Ca&=-513;this.A-=this.B.Xk},function(){this.Ca|=512;this.aa|=4;this.A-=2},function(){this.Ca&=-1025;this.A-=2},function(){this.Ca|=1024;this.A-=2},function(){Ah[this.ha()].call(this,Mc,ue)},function(){Bh[this.ha()].call(this,Oc,ue)}];
function O(a){z.call(this,"ChipSet",a,O);this.Ia=(this.Ia=a.model)?parseInt(this.Ia,10):ai;this.ac=0;var b=a.sw1;if(b)this.ac=bi(b,ci|di.rm);else{this.Vd=[360,360];(b=a.floppies)&&b.length&&(this.Vd=b);if(b=this.Vd.length)this.ac|=ei.Zh,b--,this.ac|=(b&3)<<ei.Kf;if(b=a.monitor||(this.Ia<fi?"mono":"ega"),void 0!==gi[b])this.ac|=gi[b]<<di.Kf}this.ve=bi(a.sw2||"11110000",0);this.Qn=this.Ia==ai?16:64;this.dh=this.gh=1;this.Ia>=fi&&(this.dh=this.gh=2);this.uh=a.scaleTimers||!1;this.lp=a.rtcDate;this.Fk=
!1;a.sound&&window&&"webkitAudioContext"in window&&(this.qi=new window.webkitAudioContext);this.reset(!0);this.Ua()}A(z,O);var ai=5150,fi=5170,gi={none:0,tv:1,color:2,mono:3,ega:0},ei={Zh:1,ONE:0,eq:64,cq:128,Cp:192,Jf:192,Kf:6},ci=12,di={dq:16,vp:32,rm:48,Jf:48,Kf:4};k=O.prototype;
k.Db=function(a,b,c,d){switch(c){case "sw1":return this.wa[c]=d,hi(this,c,d,this.ac,{0:this.Ia==ai?"Bootable Floppy Drive":"Loop on POST",1:this.Ia==ai?"Reserved":"Coprocessor",2:"Base Memory Size",4:"Monitor Type",6:"Number of Floppy Drives"}),!0;case "sw2":if(this.Ia==ai)return this.wa[c]=d,hi(this,c,d,this.ve,{0:"Expansion Memory Size",4:"Reserved"}),!0;break;case "swdesc":return this.wa[c]=d,!0}return!1};
k.Db=function(a,b,c){switch(b){case "sw1":return this.wa[b]=c,hi(this,b,c,this.ac,{0:this.Ia==ai?"Bootable Floppy Drive":"Loop on POST",1:this.Ia==ai?"Reserved":"Coprocessor",2:"Base Memory Size",4:"Monitor Type",6:"Number of Floppy Drives"}),!0;case "sw2":if(this.Ia==ai)return this.wa[b]=c,hi(this,b,c,this.ve,{0:"Expansion Memory Size",4:"Reserved"}),!0;break;case "swdesc":return this.wa[b]=c,!0}return!1};
k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;this.Ka=a;this.Ra=eb(a,"Keyboard");this.Ul=Math.round(c.ca.Ld/1193181);tb(b,this,ii);zb(b,this,ji);this.Ia<fi?(tb(b,this,ki),zb(b,this,li)):(tb(b,this,mi),zb(b,this,ni));if(d){var e=this;oi(d,Fd,function(){for(var a=0;a<e.Eb.length;a++){for(var b=e.Eb[a],c="PIC"+a+":",d=0;d<b.vc.length;d++)c+=" IC"+(d+1)+"="+t(b.vc[d]);c+=" IMR="+t(b.zd)+" IRR="+t(b.Pb)+" ISR="+t(b.Kc);e.fa.message(c)}});oi(d,pi,function(){for(var a=0;a<e.Ob.length;a++){qi(e,a);
var b=e.Ob[a],c="TIMER"+a+":",d=0;if(null!=b.md)for(var n=0;n<=b.md;n++)d|=b.Za[n]<<8*n;c+=" MODE"+b.mode+" BYTES="+b.md+" COUNT="+v(d);e.fa.message(c)}});oi(d,ri,function(){for(var a="",b=0;64>b;b++){var c=13>=b?si(e,b):e.ta[b];a&&(a+="\n");a+="CMOS[0x"+t(b)+"]: 0x"+t(c)}e.fa.message(a)})}Xc(c,ti,this,this.Pn)};k.$b=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.Zb=function(a){return a&&this.save?this.save():!0};
k.reset=function(a){var b;this.fd=this.ac;this.af=this.ve;ui(this);this.jb=Array(this.dh);for(b=0;b<this.dh;b++)vi(this,b);this.Eb=Array(this.gh);wi(this,0,32);1<this.gh&&wi(this,1,160);this.ni=null;this.Ob=Array(3);for(b=0;b<this.Ob.length;b++)xi(this,b);this.Wf=this.li=this.Ac=this.Zg=null;this.Yg=0;if(this.Ia>=fi){this.qb=16;this.yd=0;this.jd=16;this.Ug=0;this.Be=160;512<=yi(this)&&(this.Be|=16);3==zi(this)&&(this.Be|=64);this.ji=3;this.Uf=0;this.Pg=Array(7);this.Ce=0;a&&(this.ta=Array(64));Ai(this,
@ -493,9 +493,9 @@ bs:14,tab:15,q:16,w:17,e:18,r:19,t:20,y:21,u:22,i:23,o:24,p:25,"[":26,"]":27,ent
S[Q["7"]]=8;S[Q["&"]]=10760;S[Q["8"]]=9;S[Q["*"]]=10761;S[Q["9"]]=10;S[Q["("]]=10762;S[Q["0"]]=11;S[Q[")"]]=10763;S[Q["-"]]=12;S[Q._]=10764;S[Q["="]]=13;S[Q["+"]]=10765;S[1008]=14;S[1009]=15;S[113]=16;S[81]=10768;S[119]=17;S[87]=10769;S[101]=18;S[69]=10770;S[114]=19;S[82]=10771;S[116]=20;S[84]=10772;S[121]=21;S[89]=10773;S[117]=22;S[85]=10774;S[105]=23;S[73]=10775;S[111]=24;S[79]=10776;S[112]=25;S[80]=10777;S[Q["["]]=26;S[Q["{"]]=10778;S[Q["]"]]=27;S[Q["}"]]=10779;S[13]=28;S[1017]=29;S[97]=30;
S[65]=10782;S[115]=31;S[83]=10783;S[100]=32;S[68]=10784;S[102]=33;S[70]=10785;S[103]=34;S[71]=10786;S[104]=35;S[72]=10787;S[106]=36;S[74]=10788;S[107]=37;S[75]=10789;S[108]=38;S[76]=10790;S[Q[";"]]=39;S[Q[":"]]=10791;S[Q["'"]]=40;S[Q['"']]=10792;S[Q["`"]]=41;S[Q["~"]]=10793;S[1016]=42;S[Q["\\"]]=43;S[Q["|"]]=10795;S[122]=44;S[90]=10796;S[120]=45;S[88]=10797;S[99]=46;S[67]=10798;S[118]=47;S[86]=10799;S[98]=48;S[66]=10800;S[110]=49;S[78]=10801;S[109]=50;S[77]=10802;S[Q[","]]=51;S[Q["<"]]=10803;
S[Q["."]]=52;S[Q[">"]]=10804;S[Q["/"]]=53;S[Q["?"]]=10805;S[3016]=54;S[1018]=56;S[Q[" "]]=57;S[1020]=58;S[1112]=59;S[1113]=60;S[1114]=61;S[1115]=62;S[1116]=63;S[1117]=64;S[1118]=65;S[1119]=66;S[1120]=67;S[1121]=68;S[1144]=69;S[1145]=70;S[1036]=71;S[1038]=72;S[1033]=73;S[1037]=75;S[1039]=77;S[1035]=79;S[1040]=80;S[1034]=81;S[1045]=82;S[1046]=83;S[1122]=87;S[1123]=88;S[4003]=7470;S[4063]=7494;S[4081]=3677523;k=Gj.prototype;
k.Db=function(a,b,c,d){var e=this;a=b+"-"+c;if(void 0===this.wa[a])switch(c){case "kbd":return this.wa[a]=d,d.onkeydown=function(a){return Lj(e,a,!0)},d.onkeypress=function(a){var b=!0;a=a||window.event;a=a.which||a.keyCode;8==a||9==a?b=!1:e.bb&64?e.bb&=-65:e.bb&40?b=!1:(e.Ak&&a==Q["`"]&&(a=27),b=!Mj(e,a));return b},d.onkeyup=function(a){return Lj(e,a,!1)},!0;case "caps-lock":return this.wa[a]=d,d.onclick=function(){e.T&&e.T.Tc();Mj(e,1020,!0)},!0;case "num-lock":return this.wa[a]=d,d.onclick=function(){e.T&&
e.T.Tc();Mj(e,1144,!0)},!0;case "scroll-lock":return this.wa[a]=d,d.onclick=function(){e.T&&e.T.Tc();Mj(e,1145,!0)},!0;default:if(void 0!==Jj[c]&&"button"==b)return this.wa[a]=d,d.onclick=function(a,b,c){return function(){a.T&&a.T.Tc();Nj(a,c);return!Mj(a,c)}}(this,c,Jj[c]),!0;if(void 0!==Kj[c])return this.wa[a]=d,b=function(a,b,c){return function(){Oj(a,c)}}(this,c,Kj[c]),c=function(a,b,c){return function(){Oj(a,c)}}(this,c,Kj[c]|128),"ontouchstart"in window?(d.ontouchstart=b,d.ontouchend=c):(d.onmousedown=
b,d.onmouseup=d.onmouseout=c),!0}return!1};k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;this.oa=eb(a,"ChipSet")};k.Ua=function(){this.Dk=(this.Pm=Aa("iOS"))||Aa("Android");this.Sa("mobile keyboard support: "+(this.Dk?"true":"false"));return z.prototype.Ua.call(this)};function sj(a){a.Sa("keyboard reset",Pj);a.yc=[170];a.oa&&vj(a.oa)}function nj(a,b,c){var d=!1;a.Bi!==c&&(a.Bi=a.Fi=c);a.ph!==b&&(a.ph=b)&&!a.Fi&&uj(a);a.ph&&a.Fi&&(sj(a),a.Fi=!1,d=!0);return d}
k.Db=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.wa[e])switch(b){case "kbd":return this.wa[e]=c,c.onkeydown=function(a){return Lj(d,a,!0)},c.onkeypress=function(a){var b=!0;a=a||window.event;a=a.which||a.keyCode;8==a||9==a?b=!1:d.bb&64?d.bb&=-65:d.bb&40?b=!1:(d.Ak&&a==Q["`"]&&(a=27),b=!Mj(d,a));return b},c.onkeyup=function(a){return Lj(d,a,!1)},!0;case "caps-lock":return this.wa[e]=c,c.onclick=function(){d.T&&d.T.Tc();Mj(d,1020,!0)},!0;case "num-lock":return this.wa[e]=c,c.onclick=function(){d.T&&
d.T.Tc();Mj(d,1144,!0)},!0;case "scroll-lock":return this.wa[e]=c,c.onclick=function(){d.T&&d.T.Tc();Mj(d,1145,!0)},!0;default:if(void 0!==Jj[b]&&"button"==a)return this.wa[e]=c,c.onclick=function(a,b,c){return function(){a.T&&a.T.Tc();Nj(a,c);return!Mj(a,c)}}(this,b,Jj[b]),!0;if(void 0!==Kj[b])return this.wa[e]=c,a=function(a,b,c){return function(){Oj(a,c)}}(this,b,Kj[b]),b=function(a,b,c){return function(){Oj(a,c)}}(this,b,Kj[b]|128),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=b):(c.onmousedown=
a,c.onmouseup=c.onmouseout=b),!0}return!1};k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;this.oa=eb(a,"ChipSet")};k.Ua=function(){this.Dk=(this.Pm=Aa("iOS"))||Aa("Android");this.Sa("mobile keyboard support: "+(this.Dk?"true":"false"));return z.prototype.Ua.call(this)};function sj(a){a.Sa("keyboard reset",Pj);a.yc=[170];a.oa&&vj(a.oa)}function nj(a,b,c){var d=!1;a.Bi!==c&&(a.Bi=a.Fi=c);a.ph!==b&&(a.ph=b)&&!a.Fi&&uj(a);a.ph&&a.Fi&&(sj(a),a.Fi=!1,d=!0);return d}
function kj(a,b){var c=0;a.yc.length&&(c=a.yc[0],a.Sa("scan code 0x"+t(c)+" delivered"),b&&uj(a));return c}function uj(a,b){0<a.yc.length&&(b?a.yc=[]:(a.yc.shift(),0<a.yc.length&&a.oa&&vj(a.oa)))}k.$b=function(a,b){return!b&&(this.reset(),a&&this.restore&&!this.restore(a))?!1:!0};k.Zb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.le();this.bb=0;this.yc=[];if(this.ud)for(var a in this.ud)ca(a)||this.ud[a]&&clearTimeout(this.ud[a]);this.ud=[];this.Yl=this.Ue=0};
k.save=function(){var a=new gd(this);a.set(0,this.Wj());return a.data()};k.restore=function(a){return this.le(a[0])};k.le=function(a){var b=0;void 0===a&&(a=[]);this.Bi=a[b++];this.ph=a[b];return!0};k.Wj=function(){var a=0,b=[];b[a++]=this.Bi;b[a]=this.ph;return b};
function Oj(a,b){var c=b&127,d=c==b;if(a.yc)if(20>a.yc.length){if(!(!d&&!a.di[c]||d&&a.di[c])){a.di[c]=d;a.Sa("scan code 0x"+t(b)+" buffered");a.yc.push(b);1==a.yc.length&&a.oa&&vj(a.oa);for(var e in Kj)if(Kj[e]==c){(c=a.wa["key-"+e])&&void 0!==d&&(c.style.color=d?"#ffffff":"#000000",c.style.backgroundColor=d?"#000000":"#ffffff");break}}}else 20==a.yc.length&&a.yc.push(255),a.Sa("scan code buffer overflow")}function Qj(a,b){var c=b?a.Un:a.Tn;a.T&&a.T.ca.pd&&(c/=a.T.ca.pd);return c}
@ -527,7 +527,7 @@ a.Dh;c[16]=a.Ij;c[17]=a.ob;c[18]=a.qd;c[19]=a.vb;c[20]=a.Jh;c[21]=a.re;c[22]=a.S
fk.prototype.Uh=function(a){if(null!=a&&a!=this.Dh){var b=a&255,c=wk[b];c||b&1&&(c=wk[1]);var b=a&65280,d=wk[b];d||b&256&&(d=wk[256]);this.Rf||(this.Rf=[null,uk,null,vk]);this.Rf[0]=c;this.Rf[2]=d;this.Dh=a}};var gk=[,["MDA",948,720896,4096,0,3],,["CGA",980,753664,16384,0,2],,["EGA",980,753664,16384,65536,4]];k=T.prototype;
k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;tb(b,this,zk);zb(b,this,Ak);"ega"==this.Ia&&(tb(b,this,Bk),zb(b,this,Ck));if(d){var e=this;oi(d,Dk,function(a){if(e.Ha)if(a){var b=e.Ha;if(b.hd){a=da(a);a=void 0!==a?a-b.Va:b.cp||0;0>a&&(a=0);for(var c="",d=0;8>d;d++){for(var f=p(b.Va+a)+":",r=0;8>r&&a<b.hd.length;r++)var s=b.hd[a++],f=f+(" "+p(s));c&&(c+="\n");c+=f}c&&b.fa.message(c);b.cp=a}else b.fa.message("no buffer")}else{e.fa.message("BIOSMODE: "+t(e.Nd));b=e.Ha;yk(b,"CRTC",b.oc,b.ec,b.Tg);
if(1==b.ke||3==b.ke)yk(b," MODEREG",b.Fc),yk(b," STATUS1",b.Ff);3==b.ke&&yk(b," COLOR",b.jf);5==b.ke&&(b.fa.message(" ATCDATA: "+b.nd),yk(b," ATC",b.Fd,b.Td,b.gi),yk(b," GRC",b.Gd,b.ye,b.hi),yk(b," SEQ",b.Hd,b.Mf,b.ii),yk(b," FEAT",b.wh),yk(b," MISC",b.gg),yk(b," STATUS0",b.Xh),yk(b," LATCHES",b.Gb),b.fa.message(" ACCESS: "+v(b.Dh)),b.fa.message("Use 'dump video buffer' to dump video memory"))}else e.fa.message("no active video card")})}if((this.Ra=eb(a,"Keyboard"))&&this.fb){for(var f in this.wa)0<
f.indexOf("lock")&&this.Ra.Db("input","led",f,this.wa[f]);this.Ra.Db("input",this.km?"textarea":"canvas","kbd",this.km||this.fb)}this.Vg=9;(this.oa=eb(a,"ChipSet"))&&this.fm&&(this.Vg=bi(this.fm,this.Vg));this.Ra&&this.Im&&Ek(this)};k.Db=function(a,b,c,d){var e=this;if(!this.wa[c])switch(this.wa[c]=d,c){case "lockPointer":return this.jp=d.innerHTML,this.fb&&this.fb.vf?d.onclick=function(){e.vf(!0)}:d.parentNode.removeChild(d),!0;case "refresh":return d.onclick=function(){Mb(e,!0)},!0}return!1};
f.indexOf("lock")&&this.Ra.Db("led",f,this.wa[f]);this.Ra.Db(this.km?"textarea":"canvas","kbd",this.km||this.fb)}this.Vg=9;(this.oa=eb(a,"ChipSet"))&&this.fm&&(this.Vg=bi(this.fm,this.Vg));this.Ra&&this.Im&&Ek(this)};k.Db=function(a,b,c){var d=this;if(!this.wa[b])switch(this.wa[b]=c,b){case "lockPointer":return this.jp=c.innerHTML,this.fb&&this.fb.vf?c.onclick=function(){d.vf(!0)}:c.parentNode.removeChild(c),!0;case "refresh":return c.onclick=function(){Mb(d,!0)},!0}return!1};
k.Tc=function(){this.fb&&this.fb.focus()};k.vf=function(a){if(this.fb)if(a){if(this.fb.vf)return this.fb.vf(),this.me.yg(!0),!0}else if(this.fb.lm)return this.fb.lm(),this.me.yg(!1),!0;return!1};k.yg=function(a){this.me&&(this.me.yg(a),this.Ra&&(this.Ra.Ak=a));var b=this.wa.lockPointer;b&&(b.innerHTML=a?"Press Esc to Unlock Pointer":this.jp)};
function Ek(a){var b=a.fb;b&&!a.Ai&&(b.addEventListener("touchstart",function(b){Fk(a,b)},!1),b.addEventListener("touchmove",function(b){Fk(a,b)},!0),b.addEventListener("touchend",function(){},!1),a.Ai=!0)}
function Fk(a,b){a.Ci&&b.preventDefault();var c=0,d=0,e=a.fb;do isNaN(e.offsetLeft)||(c+=e.offsetLeft,d+=e.offsetTop);while(e=e.offsetParent);c=a.Bd/a.fb.offsetWidth*(b.targetTouches[0].pageX-c)/(a.Bd/3)|0;d=a.ie/a.fb.offsetHeight*(b.targetTouches[0].pageY-d)/(a.ie/3)|0;1!=d?d?Mj(a.Ra,40,!0):Mj(a.Ra,38,!0):1!=c&&(c?Mj(a.Ra,39,!0):Mj(a.Ra,37,!0))}k.$b=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Zb=function(a){return a&&this.save?this.save():!0};
@ -565,8 +565,8 @@ var zk={948:T.prototype.vn,949:T.prototype.un,952:T.prototype.wn,954:T.prototype
960:T.prototype.Wl,961:T.prototype.Wl,962:T.prototype.Oo,964:T.prototype.Vo,965:T.prototype.Uo,970:T.prototype.Go,972:T.prototype.Fo,974:T.prototype.Eo,975:T.prototype.Do,986:T.prototype.Xl};
Ha(function(){for(var a=D(window.document,"pcjs","video"),b=0;b<a.length;b++){var c=a[b],d=C(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","pcjs-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=c.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 f=e.getContext("2d"),d=new T(d,e,f);Za(d,c)}});
function Zk(a){this.Jk=a.adapter;switch(this.Jk){case 1:this.Oj=1016;this.rg=4;break;case 2:this.Oj=760;this.rg=3;break;default:x("Unrecognized serial adapter #"+this.Jk);return}this.fe=null;z.call(this,"SerialPort",a,Zk);var b=a.binding,c;a=$k;b&&(void 0===c&&(c="Panel"),(c=Xa(c,this.id))&&(b=c.wa[b])&&this.Db(null,null,a,b))}A(z,Zk);var $k="buffer";k=Zk.prototype;k.hk=function(a,b){return a==this.yh?(this.me=b,this):null};
k.Db=function(a,b,c,d){var e=this;switch(c){case $k:return this.wa[c]=this.fe=d,d.onkeydown=function(a){a=a||window.event;var b=a.keyCode;8===b&&(a.preventDefault&&a.preventDefault(),al(e,[b]))},d.onkeypress=function(a){a=a||window.event;al(e,[a.which||a.keyCode])},!0}return!1};k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;this.oa=eb(a,"ChipSet");tb(b,this,bl,this.Oj);zb(b,this,cl,this.Oj);this.Ua()};
function Zk(a){this.Jk=a.adapter;switch(this.Jk){case 1:this.Oj=1016;this.rg=4;break;case 2:this.Oj=760;this.rg=3;break;default:x("Unrecognized serial adapter #"+this.Jk);return}this.fe=null;z.call(this,"SerialPort",a,Zk);var b=a.binding,c;a=$k;b&&(void 0===c&&(c="Panel"),(c=Xa(c,this.id))&&(b=c.wa[b])&&this.Db(null,a,b))}A(z,Zk);var $k="buffer";k=Zk.prototype;k.hk=function(a,b){return a==this.yh?(this.me=b,this):null};
k.Db=function(a,b,c){var d=this;switch(b){case $k:return this.wa[b]=this.fe=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;8===b&&(a.preventDefault&&a.preventDefault(),al(d,[b]))},c.onkeypress=function(a){a=a||window.event;al(d,[a.which||a.keyCode])},!0}return!1};k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;this.oa=eb(a,"ChipSet");tb(b,this,bl,this.Oj);zb(b,this,cl,this.Oj);this.Ua()};
k.$b=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Zb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.le()};k.save=function(){var a=new gd(this),b=0,c=[];c[b++]=this.mi;c[b++]=this.lk;c[b++]=this.bf;c[b++]=this.Wg;c[b++]=this.be;c[b++]=this.Wc;c[b++]=this.kd;c[b++]=this.Lc;c[b++]=this.jk;c[b]=this.Of;a.set(0,c);return a.data()};k.restore=function(a){return this.le(a[0])};
k.le=function(a){var b=0;void 0===a&&(a=[0,0,384,0,1,0,0,96,48,[]]);this.mi=a[b++];this.lk=a[b++];this.bf=a[b++];this.Wg=a[b++];this.be=a[b++];this.Wc=a[b++];this.kd=a[b++];this.Lc=a[b++];this.jk=a[b++];this.Of=a[b];return!0};function al(a,b){a.Of=a.Of.concat(b);dl(a)}function dl(a){0<a.Of.length&&!(a.Lc&1)&&(a.mi=a.Of.shift(),a.Lc|=1);var b=-1;a.Lc&1&&a.Wg&1&&(b=4);0<=b?(a.be&=-8,a.be|=b,a.oa&&a.rg&&ej(a.oa,a.rg)):(a.be|=1,a.oa&&a.rg&&fj(a.oa,a.rg))}
k.En=function(a,b){var c=this.Wc&128?this.bf&255:this.mi;this.ea(a,null,b,this.Wc&128?"DLL":"RBR",c);this.Lc&=-2;dl(this);return c};k.pn=function(a,b){var c=this.Wc&128?this.bf>>8:this.Wg;this.ea(a,null,b,this.Wc&128?"DLM":"IER",c);return c};k.qn=function(a,b){var c=this.be;this.ea(a,null,b,"IIR",c);return c};k.rn=function(a,b){var c=this.Wc;this.ea(a,null,b,"LCR",c);return c};k.tn=function(a,b){var c=this.kd;this.ea(a,null,b,"MCR",c);return c};
@ -603,8 +603,8 @@ k.restore=function(a){var b=0,c="unsupported restore format";if(a&&0<a.length){v
b+" changes applied)";b=-1;break}if(this.rf){c="unable to modify write-protected disk";b=-1;break}e=g[f++];f=g[f++];g=e+f.length;if(h=this.cb[h][l][n]){for(l=h.data.length;l<e;)h.data[l++]=h.pattern;l=0;h.bd=e;for(h.Bc=f.length;e<g;)h.data[e++]=f[l++];b++}}}0>b&&this.ia.Ja("unable to restore disk '"+this.sd+": "+c);return b};k.Sa=function(a){this.fa&&E(this.fa,wl)&&this.fa.message(a)};
function xl(a){z.call(this,"FDC",a,xl);this.dmaRead=this.ui;this.dmaWrite=this.vi;this.dmaFormat=this.xm;this.Je=null;if(a.autoMount&&(this.Je=a.autoMount,"string"==typeof this.Je))try{this.Je=eval("("+a.autoMount+")")}catch(b){x("FDC auto-mount error: "+b.message+" ("+a.autoMount+")"),this.Je=null}this.uc=[];this.Ck=!1}A(z,xl);m={};aa={};
var yl={3:{Ad:3,ee:0,name:aa.Xp},4:{Ad:2,ee:1,name:aa.Vp},5:{Ad:9,ee:7,name:aa.iq},6:{Ad:9,ee:7,name:aa.Pp},7:{Ad:2,ee:0,name:aa.Rp},8:{Ad:1,ee:2,name:aa.Wp},10:{Ad:2,ee:7,name:aa.Qp},13:{Ad:6,ee:7,name:aa.Bp},15:{Ad:3,ee:0,name:aa.Up}};k=xl.prototype;
k.Db=function(a,b,c,d){var e=this;switch(c){case "listDisks":return this.wa[c]=d,d.onchange=function(){var a=e.wa.descDisk,b=d.options[d.selectedIndex];if(a&&b){var c={};if(b=b.getAttribute("data-value"))try{c=eval("({"+b+"})")}catch(l){x("FDC option error: "+l.message)}b=c.desc;void 0===b&&(b="");c=c.href;void 0!==c&&(b='<a href="'+c+'" target="_blank">'+b+"</a>");a.innerHTML=b}},!0;case "descDisk":case "listDrives":return this.wa[c]=d,d.onchange=function(){var a=da(d.value,10);null!=a&&zl(e,a)},
!0;case "loadDrive":return this.wa[c]=d,d.onclick=function(){var a=e.wa.listDisks;a&&Al(e,a.options[a.selectedIndex].text,a.value)},!0;case "mountDrive":return window&&"FileReader"in window?(this.Ck=!0,this.wa[c]=d,d.addEventListener("change",function(){var a=d.children[0];a.children[1].disabled=0==a.children[0].files.length}),d.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;Al(e,fa(b,!0),b,a)}return!1}):d.parentNode.removeChild(d),!0}return!1};
k.Db=function(a,b,c){var d=this;switch(b){case "listDisks":return this.wa[b]=c,c.onchange=function(){var a=d.wa.descDisk,b=c.options[c.selectedIndex];if(a&&b){var g={};if(b=b.getAttribute("data-value"))try{g=eval("({"+b+"})")}catch(h){x("FDC option error: "+h.message)}b=g.desc;void 0===b&&(b="");g=g.href;void 0!==g&&(b='<a href="'+g+'" target="_blank">'+b+"</a>");a.innerHTML=b}},!0;case "descDisk":case "listDrives":return this.wa[b]=c,c.onchange=function(){var a=da(c.value,10);null!=a&&zl(d,a)},!0;
case "loadDrive":return this.wa[b]=c,c.onclick=function(){var a=d.wa.listDisks;a&&Al(d,a.options[a.selectedIndex].text,a.value)},!0;case "mountDrive":return window&&"FileReader"in window?(this.Ck=!0,this.wa[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=0==a.children[0].files.length}),c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;Al(d,fa(b,!0),b,a)}return!1}):c.parentNode.removeChild(c),!0}return!1};
k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;this.Ka=a;this.oa=eb(a,"ChipSet");this.Id();tb(b,this,Bl);zb(b,this,Cl);this.Ck&&Dl(this,"Local Disk","?");Dl(this,"Remote Disk","??");this.Sf()||this.Ua()};
k.$b=function(a,b){if(!b){if(!a||!this.restore){if(this.reset(),this.Ka.Ei){this.uc=[];for(var c=0;c<this.Ea.length;c++)El(this,c,!0);this.Sf(!0)}}else if(!this.restore(a))return!1;if(c=this.wa.listDrives){for(;c.firstChild;)c.removeChild(c.firstChild);c.innerHTML="";for(var d=0;d<this.Wi;d++){var e=window.document.createElement("option");e.value=d;e.innerHTML=String.fromCharCode(65+d)+":";c.appendChild(e)}0<this.Wi&&(c.value="0",zl(this,0))}}return!0};
k.Zb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.Id()};k.save=function(){var a=new gd(this);a.set(0,this.Tj());return a.data()};k.restore=function(a){return this.Id(a[0])};
@ -683,7 +683,7 @@ Z="AL CL DL BL AH CH DH BH AX CX DX BX SP BP SI DI ES CS SS DS IP".split(" "),bm
82:"get system variables (es:bx)",83:"translate bpb DS:SI to dpb (es:bp)",84:"get verify flag (al)",85:"create child psp at segment DX",86:"rename file DS:DX to name ES:DI",87:"get(0)/set(1) file date DX and time CX (AL)",88:"get(0)/set(1) memory allocation strategy (AL)",89:"get extended error information",90:"create temporary file DS:DX with attributes CX",91:"create file DS:DX with attributes CX",92:"lock(0)/unlock(1) file BX region CX:DX length SI:DI (AL)"}};k=Ul.prototype;
k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.Ka=a;this.Jm=eb(a,"FDC");this.Ik=eb(a,"HDC");this.Nf=dm;80186<=this.T.Ia&&(this.Nf=dm.slice(),this.Nf[15]=$,80286<=this.T.Ia&&(this.Nf[15]=cm));oi(this,2097152,function(a){if(a)for(d.da("dumpDOS("+a+")"),a=da(a);a;){var b=[0,a,void 0],c=d.tb(b,1),e=d.ua(b,2),n=d.ua(b,5);if(77!=c&&90!=c)break;d.da(ea(0,a)+": '"+String.fromCharCode(c)+"' PID="+v(e)+" LEN="+v(n)+' "'+hm(d,b)+'"');a+=1+n}});this.Ua();if(this.Sj){a=Xl(this,this.Sj);delete this.Sj;for(var e in a)im(this,
a[e])}};
k.Db=function(a,b,c,d){var e=this;switch(c){case "debugInput":return this.Zf=this.wa[c]=d,d.onkeypress=function(a){if(13==a.keyCode){var b=d.value;d.value="";var c=Xl(e,b,!0);for(b in c)im(e,c[b]);a.preventDefault&&a.preventDefault()}},!0;case "debugEnter":return this.wa[c]=d,Ca(d,function(){if(e.Zf){var a=e.Zf.value;e.Zf.value="";var b=Xl(e,a,!0);for(a in b)im(e,b[a]);return!0}return!1}),!0;case "step":return this.wa[c]=d,Ca(d,function(a){var b=!1;ab(e,!0)||($a(e,!0),b=e.Gf(a?1:0),$a(e,!1));return b}),
k.Db=function(a,b,c){var d=this;switch(b){case "debugInput":return this.Zf=this.wa[b]=c,c.onkeypress=function(a){if(13==a.keyCode){var b=c.value;c.value="";var g=Xl(d,b,!0);for(b in g)im(d,g[b]);a.preventDefault&&a.preventDefault()}},!0;case "debugEnter":return this.wa[b]=c,Ca(c,function(){if(d.Zf){var a=d.Zf.value;d.Zf.value="";var b=Xl(d,a,!0);for(a in b)im(d,b[a]);return!0}return!1}),!0;case "step":return this.wa[b]=c,Ca(c,function(a){var b=!1;ab(d,!0)||($a(d,!0),b=d.Gf(a?1:0),$a(d,!1));return b}),
!0}return!1};k.Tc=function(){this.Zf&&this.Zf.focus()};function hm(a,b){var c,d="";for(c=8;d.length<c;){var e=a.tb(b,1);if(!e)break;d+=32<=e&&128>e?String.fromCharCode(e):"."}return d}function oi(a,b,c){for(var d in Yl)if(b==Yl[d]){a.fi[d]=c;break}}function E(a,b){return(a.kc&b)===b}
function $c(a,b,c){var d=Zl[b],e=d&&E(a,d);if(e){var f=a.T.H>>8,g=a.T.K&255;if(33==b&&11==f||d==zj&&128<=g||d==Tl&&128>g)e=!1}if(e){if(d=(d=gm[b])&&d[f]||"")g=a.T,a.pb[Z[0]]=t(g.H&255),a.pb[Z[1]]=t(g.J&255),a.pb[Z[2]]=t(g.K&255),a.pb[Z[3]]=t(g.C&255),a.pb[Z[4]]=t(g.H>>8),a.pb[Z[5]]=t(g.J>>8),a.pb[Z[6]]=t(g.K>>8),a.pb[Z[7]]=t(g.C>>8),a.pb[Z[8]]=v(g.H),a.pb[Z[9]]=v(g.J),a.pb[Z[10]]=v(g.K),a.pb[Z[11]]=v(g.C),a.pb[Z[12]]=v(g.Y),a.pb[Z[13]]=v(g.I),a.pb[Z[14]]=v(g.G),a.pb[Z[15]]=v(g.F),a.pb[Z[16]]=v(g.ab.sa),
a.pb[Z[17]]=v(g.ya.sa),a.pb[Z[18]]=v(g.Cb.sa),a.pb[Z[19]]=v(g.Hb.sa),a.pb[Z[20]]=v(g.va),d=" "+ka(a.pb,d);a.message("INT 0x"+t(b)+": AH="+t(f)+" at "+ea(c-a.T.ya.Ya,a.T.ya.sa)+d)}return e}function bd(a,b,c,d,e){a.message("INT 0x"+t(b)+": C="+(od(a.T)?1:0)+(e||"")+" (cycles="+d+(c?",level="+(c+1):"")+")")}
@ -752,7 +752,7 @@ function Om(a,b){if(ua("There may be a problem with your PCjs machine.\n\nTo hel
function Fm(a,b,c){var d,e="none",f=new gd(a,"1.16.0"),g=new gd(a,"1.16.0","validate"),h=pa();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.16.0");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.T&&a.T.Zb&&(c&&a.T.Fb(),d=a.T.Zb(b,c),"object"===typeof d&&f.set(a.T.id,d),c&&(a.T.qa.Qb=!1,!1===d&&(e=null)));for(var h=Va(a.id),l=0;l<h.length;l++){var n=h[l];n.qa.Qb&&(n.Zb&&(d=n.Zb(b,c),"object"===typeof d&&f.set(n.id,d)),c&&(n.qa.Qb=
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.Sc&&Qm(a,a.Sc,f.toString()),Im(g)&&Im(f)||(e=null,d=h=!0)):a.Rc&&(d=!0,h=3==a.Rc),d&&f.clear(h)):e=f.toString());c&&(a.qa.Qb=!1);return e}k.reset=function(){this.ra&&this.ra.reset&&(this.Sa("Resetting "+this.ra.type,!0),this.ra.reset());for(var a=Va(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ra&&c.reset&&(this.Sa("Resetting "+c.type,!0),c.reset())}};
k.start=function(a,b){for(var c=Va(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};k.stop=function(a,b){for(var c=Va(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
k.Db=function(a,b,c,d){var e=this;switch(c){case "save":return this.wa[c]=d,d.onclick=function(){var a=Lm(e,!0);if(a){var b=!(!e.Rc||e.Th),c=Fm(e,b);b?Qm(e,a,c):e.Ja("Resume disabled, machine state not saved")}},!0;case "reset":return this.wa[c]=d,d.onclick=function(){Vb(e)},!0}return!1};
k.Db=function(a,b,c){var d=this;switch(b){case "save":return this.wa[b]=c,c.onclick=function(){var a=Lm(d,!0);if(a){var b=!(!d.Rc||d.Th),c=Fm(d,b);b?Qm(d,a,c):d.Ja("Resume disabled, machine state not saved")}},!0;case "reset":return this.wa[b]=c,c.onclick=function(){Vb(d)},!0}return!1};
function Lm(a,b){var c=a.Sc;c||(c=ya("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("To save machine states on the pcjs.org server, you need a user ID (email support@pcjs.org).\n\nOnce you have an ID, enter it below.","")),c&&((c=Rm(a,c))||a.Ja("Your user ID has not been approved."))):b&&a.Ja("Browser local storage is not available"));return c}
function Rm(a,b){a.Sc=null;var c=sa(ta()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(za("user",c.data),a.Sc=c.data)}catch(e){x(e.message+" ("+d+")")}return a.Sc}
function Qm(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Gm(a,"1.16.0");d.data=c;b=sa(ta()+"/api/v1/user",!1,d);d=b[1];if(b[0]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[0]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.Ja("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.Ja(c),za("user",""),a.Sc=null)}}

View file

@ -10,16 +10,16 @@ function v(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.na
if(window){Aa||(Aa=window.location.search.substr(1));for(var Ca,Da=/\+/g,Ea=/([^&=]+)=?([^&]*)/g;Ca=Ea.exec(Aa);)Ba[decodeURIComponent(Ca[1].replace(Da," "))]=decodeURIComponent(Ca[2].replace(Da," "))}function Fa(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 y(a,b){b.prototype=Fa(a.prototype)}var x=[];
function Ga(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<x.length;b++){var d=x[b];a&&d.id.indexOf(a)||c.push(d)}return c}function Ha(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<x.length;c++)if(x[c].id===a)return x[c]}return null}
function Ia(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<x.length;d++)if(c)c==x[d]&&(c=null);else if(!(a!=x[d].type||b&&x[d].id.indexOf(b)))return x[d]}return null}function z(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("({"+a+"})")}catch(c){s(c.message+" ("+a+")")}return b}window&&!window.document.ELEMENT_NODE&&(window.document.ELEMENT_NODE=1);
function Ja(a,b){for(var c=A(b.parentNode,"pcjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(h.nodeType===window.document.ELEMENT_NODE){var g=h.getAttribute("class");if(g)for(var m=g.split(" "),n=0;n<m.length;n++)switch(g=m[n],g){case "pcjs-input":case "pcjs-output":(n=z(h))&&n.binding&&a.Bb(g,n.type,n.binding,h),n=m.length}}}}
function Ja(a,b){for(var c=A(b.parentNode,"pcjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(h.nodeType===window.document.ELEMENT_NODE){var g=h.getAttribute("class");if(g)for(var m=g.split(" "),n=0;n<m.length;n++)switch(g=m[n],g){case "pcjs-binding":(g=z(h))&&g.binding&&a.Bb(g.type,g.binding,h),n=m.length}}}}
function A(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}
v.prototype={toString:function(){return this.name?this.name:this.id||this.type},Bb:function(a,b,c,d){switch(c){case "clear":return this.qa[c]||(this.qa[c]=d,d.onclick=function(a){return function(){a.qa.print&&(a.qa.print.value="")}}(this)),!0;case "print":return this.qa[c]||(this.Ah=this.qa[c]=d,d.value="",this.$b=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.ya=
function(a,b,c){this.$b(a,"notice",c)}),!0;default:return!1}},log:function(){},$b:function(){},status:function(a){this.$b(this.Wh+": "+a)},ya:function(a,b){b||s(a)},Na:function(a){this.na.Pc||(this.na.Cg=!1!==a,this.na.Cg&&(this.name&&this.log("ready"),a=this.Rh,this.Rh=null,a&&a()))},Sb:function(){return this.na.Hb=!0},Rb:function(a,b){b&&(this.na.Hb=!1);return!0}};
function Ka(a,b){if(a.na.Ih)return a.na.uc&&(a.na.uc=!1),a.na.Ih=!1;if(a.na.Pc)return a.$b(a.toString()+" error"),!1;a.na.uc=b;return a.na.uc}function La(a,b){b&&(a.na.Cg?b():a.Rh=b);return a.na.Cg}function Ma(a,b){a.na.Pc=!0;a.ya("Fatal error: "+b)}function Na(a){v.call(this,"Panel",a,Na)}y(v,Na);Na.prototype.Bb=function(a,b,c,d){return this.Ma&&this.Ma.Bb(a,b,c,d)||this.ka&&this.ka.Bb(a,b,c,d)||this.Ka&&this.Ka.Bb(a,b,c,d)?!0:v.prototype.Bb.call(this,a,b,c,d)};
Na.prototype.oc=function(a,b,c,d){this.Ma=a;this.ka=c;this.Va=d;this.Ka=B(a,"Keyboard")};Na.prototype.Sb=function(a,b){b||Oa();return!0};Na.prototype.Rb=function(){return!0};function Oa(){for(var a=!1,b=A(window.document,"pcjs","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=Ha(e.id);f||(a=!0,f=new Na(e));Ja(f,d);a&&f.Na()}}u(Oa);
function Pa(a,b,c){v.call(this,"Bus",a,Pa);this.ka=b;this.Va=c;this.sf=a.buswidth||20;this.qh=this.Zc=(1<<this.sf)-1;this.Pb=20>=this.sf?12:14;this.rc=1<<this.Pb;this.zj=this.rc>>2;this.nb=this.rc-1;this.og=(this.qh+this.rc)/this.rc|0;this.$d=this.og-1;this.$f=[];this.ag=[];this.Yh();this.Na()}y(v,Pa);Pa.prototype.Yh=function(){this.Ba=Array(this.og);for(var a=0;a<this.og;a++)this.Ba[a]=new Qa(a*this.rc);this.ka.Yh(this.Ba,this.qh,this.Pb,this.nb,this.$d);this.ka.Vd=this.Zc};
Pa.prototype.reset=function(){Ra(this,!0)};Pa.prototype.Sb=function(a,b){b||this.reset();return!0};function Sa(a,b,c,d,e){if(!(b&a.nb||!c||c&a.nb)){for(var f=b>>a.Pb;0<c&&f<a.Ba.length;){var h=a.Ba[f];if(void 0!==h&&h.size)return Ta(1,b,c);b=f*a.rc;a.Ba[f++]=new Qa(b,a.rc,d,e);c-=a.rc}return!0}return Ta(2,b,c)}function Ra(a,b){if(void 0!==b&&20<a.sf){var c=a.Zc&-1048577|(b?1048576:0);c!=a.Zc&&(a.Zc=c,a.ka&&(a.ka.Vd=c))}}
Pa.prototype.eh=function(a,b,c){if(!(a&this.nb||!b||b&this.nb)){for(var d=a>>this.Pb;0<b;){var e=this.Ba[d];if(!e.ea)return Ta(5,a,b);e.ue(c);b-=this.rc;d++}return!0}return Ta(3,a,b)};function Wa(a,b,c){if(!(b&a.nb||!c||c&a.nb)){for(var d=b>>a.Pb;0<c;)b=d*a.rc,a.Ba[d++]=new Qa(b),c-=a.rc;return!0}return Ta(4,b,c)}function Xa(a,b){return a.Ba[(b&a.Zc)>>a.Pb].aj(b&a.nb)}function Ya(a,b){var c=b&a.nb,d=(b&a.Zc)>>a.Pb;return c!=a.nb?a.Ba[d].eo(c):a.Ba[d++].aj(c)|a.Ba[d&a.$d].aj(0)<<8}
function Za(a,b,c){a.Ba[(b&a.Zc)>>a.Pb].ij(b&a.nb,c&255)}function $a(a,b,c){var d=b&a.nb;b=(b&a.Zc)>>a.Pb;d!=a.nb?a.Ba[b].qo(d,c&65535):(a.Ba[b++].ij(d,c&255),a.Ba[b&a.$d].ij(0,c>>8&255))}function ab(a){for(var b=0,c=[],d=0;d<a.og;d++){var e=a.Ba[d];if(e.fb||e.Hj){c[b++]=d;var f=c,h=b++;a:if(e=e.save()){for(var g=0,m=0,n=[];g<e.length;){for(var q=e[g],w=g+1;w<e.length&&e[w]===q;)w++;n[m++]=w-g;n[m++]=q;g=w}if(n.length<e.length){e=n;break a}}f[h]=e}}c[b]=a.qh==a.Zc;return c}
v.prototype={toString:function(){return this.name?this.name:this.id||this.type},Bb:function(a,b,c){switch(b){case "clear":return this.qa[b]||(this.qa[b]=c,c.onclick=function(a){return function(){a.qa.print&&(a.qa.print.value="")}}(this)),!0;case "print":return this.qa[b]||(this.Ah=this.qa[b]=c,c.value="",this.$b=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,
b,c){this.$b(a,"notice",c)}),!0;default:return!1}},log:function(){},$b:function(){},status:function(a){this.$b(this.Wh+": "+a)},ya:function(a,b){b||s(a)},Na:function(a){this.na.Pc||(this.na.Cg=!1!==a,this.na.Cg&&(this.name&&this.log("ready"),a=this.Rh,this.Rh=null,a&&a()))},Sb:function(){return this.na.Hb=!0},Rb:function(a,b){b&&(this.na.Hb=!1);return!0}};function Ka(a,b){if(a.na.Ih)return a.na.uc&&(a.na.uc=!1),a.na.Ih=!1;if(a.na.Pc)return a.$b(a.toString()+" error"),!1;a.na.uc=b;return a.na.uc}
function La(a,b){b&&(a.na.Cg?b():a.Rh=b);return a.na.Cg}function Ma(a,b){a.na.Pc=!0;a.ya("Fatal error: "+b)}function Na(a){v.call(this,"Panel",a,Na)}y(v,Na);Na.prototype.Bb=function(a,b,c){return this.Ma&&this.Ma.Bb(a,b,c)||this.ka&&this.ka.Bb(a,b,c)||this.Ka&&this.Ka.Bb(a,b,c)?!0:v.prototype.Bb.call(this,a,b,c)};Na.prototype.oc=function(a,b,c,d){this.Ma=a;this.ka=c;this.Va=d;this.Ka=B(a,"Keyboard")};Na.prototype.Sb=function(a,b){b||Oa();return!0};Na.prototype.Rb=function(){return!0};
function Oa(){for(var a=!1,b=A(window.document,"pcjs","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=Ha(e.id);f||(a=!0,f=new Na(e));Ja(f,d);a&&f.Na()}}u(Oa);function Pa(a,b,c){v.call(this,"Bus",a,Pa);this.ka=b;this.Va=c;this.sf=a.buswidth||20;this.qh=this.Zc=(1<<this.sf)-1;this.Pb=20>=this.sf?12:14;this.rc=1<<this.Pb;this.zj=this.rc>>2;this.nb=this.rc-1;this.og=(this.qh+this.rc)/this.rc|0;this.$d=this.og-1;this.$f=[];this.ag=[];this.Yh();this.Na()}y(v,Pa);
Pa.prototype.Yh=function(){this.Ba=Array(this.og);for(var a=0;a<this.og;a++)this.Ba[a]=new Qa(a*this.rc);this.ka.Yh(this.Ba,this.qh,this.Pb,this.nb,this.$d);this.ka.Vd=this.Zc};Pa.prototype.reset=function(){Ra(this,!0)};Pa.prototype.Sb=function(a,b){b||this.reset();return!0};function Sa(a,b,c,d,e){if(!(b&a.nb||!c||c&a.nb)){for(var f=b>>a.Pb;0<c&&f<a.Ba.length;){var h=a.Ba[f];if(void 0!==h&&h.size)return Ta(1,b,c);b=f*a.rc;a.Ba[f++]=new Qa(b,a.rc,d,e);c-=a.rc}return!0}return Ta(2,b,c)}
function Ra(a,b){if(void 0!==b&&20<a.sf){var c=a.Zc&-1048577|(b?1048576:0);c!=a.Zc&&(a.Zc=c,a.ka&&(a.ka.Vd=c))}}Pa.prototype.eh=function(a,b,c){if(!(a&this.nb||!b||b&this.nb)){for(var d=a>>this.Pb;0<b;){var e=this.Ba[d];if(!e.ea)return Ta(5,a,b);e.ue(c);b-=this.rc;d++}return!0}return Ta(3,a,b)};function Wa(a,b,c){if(!(b&a.nb||!c||c&a.nb)){for(var d=b>>a.Pb;0<c;)b=d*a.rc,a.Ba[d++]=new Qa(b),c-=a.rc;return!0}return Ta(4,b,c)}function Xa(a,b){return a.Ba[(b&a.Zc)>>a.Pb].aj(b&a.nb)}
function Ya(a,b){var c=b&a.nb,d=(b&a.Zc)>>a.Pb;return c!=a.nb?a.Ba[d].eo(c):a.Ba[d++].aj(c)|a.Ba[d&a.$d].aj(0)<<8}function Za(a,b,c){a.Ba[(b&a.Zc)>>a.Pb].ij(b&a.nb,c&255)}function $a(a,b,c){var d=b&a.nb;b=(b&a.Zc)>>a.Pb;d!=a.nb?a.Ba[b].qo(d,c&65535):(a.Ba[b++].ij(d,c&255),a.Ba[b&a.$d].ij(0,c>>8&255))}
function ab(a){for(var b=0,c=[],d=0;d<a.og;d++){var e=a.Ba[d];if(e.fb||e.Hj){c[b++]=d;var f=c,h=b++;a:if(e=e.save()){for(var g=0,m=0,n=[];g<e.length;){for(var q=e[g],w=g+1;w<e.length&&e[w]===q;)w++;n[m++]=w-g;n[m++]=q;g=w}if(n.length<e.length){e=n;break a}}f[h]=e}}c[b]=a.qh==a.Zc;return c}
function bb(a,b,c,d){void 0===d&&(d=0);for(var e in c){e=parseInt(e,10);var f=a,h=e+d,g=b,m=c[e];if(void 0!==m)for(var n=e+d;n<=h;n++)void 0!==f.$f[n]?s("Input port "+p(n,4)+" registered by "+f.$f[n][0].id+", ignoring "+g.id):f.$f[n]=[g,m,!1,!1]}}function cb(a,b,c){var d=255;a=a.$f[b];void 0!==a&&a[1]&&(d=a[1].call(a[0],b,c));return d}
function db(a,b,c,d){void 0===d&&(d=0);for(var e in c){e=parseInt(e,10);var f=a,h=e+d,g=b,m=c[e];if(void 0!==m)for(var n=e+d;n<=h;n++)void 0!==f.ag[n]?s("Output port "+p(n,4)+" registered by "+f.ag[n][0].id+", ignoring "+g.id):f.ag[n]=[g,m,!1,!1]}}function eb(a,b,c,d){a=a.ag[b];void 0!==a&&a[1]&&a[1].call(a[0],b,c,d)}function Ta(a,b,c){s("Memory block error ("+a+","+p(b)+","+p(c)+")");return!1}
function Qa(a,b,c,d){this.zl=b||0;this.pa=null;this.offset=0;this.Lj=c;this.ea=null;this.fb=this.Hj=!1;if(b)if(d)this.ea=d,a=[d.Wd,a-d.Ra],this.pa=a[0],this.offset=a[1],this.ue(d.df);else{this.pa=Array(b>>2);for(d=0;d<this.pa.length;d++)this.pa[d]=0;this.ue(fb)}else this.ue()}
@ -29,7 +29,7 @@ function gb(a,b){v.call(this,"CPU",a,gb);var c=a.cycles||b,d=a.multiplier||1;thi
k.oc=function(a,b,c,d){this.ra=b;this.Va=d;this.Ma=a;var e=B(a,"Video");e&&(this.pf=function(){ib(e)},this.od=function(){e.od()});this.ja=B(a,"ChipSet");this.Na()};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};k.Sb=function(a,b){if(!b){if(a&&this.restore){jb(this);if(!this.restore(a))return!1;kb(this)}else this.reset();this.$b("No debugger detected")}this.na.Hb=!0;!lb(this)&&this.Va&&this.Va.Lp();this.pf();this.of();return!0};
k.Rb=function(a){this.na.Hb=!1;return a&&this.save?this.save():!0};function lb(a){return!0===a.na.Hh||null===a.na.Hh&&void 0===a.qa.run?(hb(a),!0):!1}k.od=function(){};k.Pj=function(){return 0};function kb(a){void 0===a.ba.Pg&&(a.ba.Pg=0);void 0===a.ba.uf&&(a.ba.uf=-1);void 0===a.ba.vf&&(a.ba.vf=-1);a.na.xg=0<=a.ba.Pg&&0<a.ba.uf;a.na.xg&&(a.ba.Og=0,a.ba.Ue=a.ba.Pg-a.pe)}
function D(a,b,c,d){void 0!==a.qa[b]&&(void 0===d&&(d=4),void 0===c&&(Ma(a,"Register "+b+" is invalid"),mb(a)),c=p(c,d),a.qa[b].innerHTML!=c&&(a.qa[b].innerHTML=c))}k.of=function(){};k.pf=function(){};
k.Bb=function(a,b,c,d){var e=this;a=!1;switch(c){case "run":this.qa[c]=d;d.onclick=function(){e.na.vc?mb(e,!0):hb(e,!0)};a=!0;break;case "reset":this.qa[c]=d;d.onclick=function(){e.Ma&&nb(e.Ma)};a=!0;break;case "speed":this.qa[c]=d;a=!0;break;case "setSpeed":this.qa[c]=d,d.onclick=function(){ob(e,e.ba.Gd<<1,!0)},d.innerHTML=this.ba.Se.toFixed(2)+"Mhz",a=!0}return a};function pb(a,b,c){a.pe+=b;c&&(a.Sc=a.A=0)}
k.Bb=function(a,b,c){var d=this;a=!1;switch(b){case "run":this.qa[b]=c;c.onclick=function(){d.na.vc?mb(d,!0):hb(d,!0)};a=!0;break;case "reset":this.qa[b]=c;c.onclick=function(){d.Ma&&nb(d.Ma)};a=!0;break;case "speed":this.qa[b]=c;a=!0;break;case "setSpeed":this.qa[b]=c,c.onclick=function(){ob(d,d.ba.Gd<<1,!0)},c.innerHTML=this.ba.Se.toFixed(2)+"Mhz",a=!0}return a};function pb(a,b,c){a.pe+=b;c&&(a.Sc=a.A=0)}
function qb(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1<a.ba.Gd&&a.ba.Rc&&(d=a.ba.Rc/a.ba.Jg);a.ba.Vj=Math.round(1E3/30);a.ba.Zm=Math.floor(a.ba.ld/c*d);a.ba.ei=Math.floor(a.ba.ld/30*d);a.ba.Zj=Math.floor(a.ba.ld/60*d);a.ba.Yj=Math.floor(a.ba.ld/2*d);b||(a.ba.yf=a.ba.ei,a.ba.xf=a.ba.Zj,a.ba.wf=a.ba.Yj);a.ba.fi=0}function rb(a,b){var c=a.pe+a.Ld+a.Sc-a.A;b&&1<a.ba.Gd&&a.ba.Rc>a.ba.Jg&&(c=Math.round(c/a.ba.Gd));return c}function jb(a){a.ba.Rc=0;a.Mg=1;a.pe=a.Ld=a.Sc=a.A=0;kb(a);ob(a,1)}
function ob(a,b,c){if(void 0!==b){0.8>a.ba.Rc/a.ba.Se&&(b=1);a.ba.Gd=b;b=a.ba.Jg*a.ba.Gd;if(a.ba.Se!=b){a.ba.Se=b;b=a.ba.Se.toFixed(2)+"Mhz";var d=a.qa.setSpeed;d&&(d.innerHTML=b);a.$b("target speed: "+b)}c&&a.od()}pb(a,a.Ld);a.Ld=0;a.ba.Te=ha();a.ba.me=0;qb(a)}
function hb(a,b){if(Ka(a,!0)){if(!a.na.vc){ob(a);a.Ma&&a.Ma.start(a.ba.Te,rb(a));a.na.vc=!0;a.ja&&sb(a.ja);var c=a.qa.run;c&&(c.innerHTML="Halt");b&&a.od()}a.ba.fi>=a.ba.ld&&qb(a,!0);a.ba.zf=0;a.ba.Lg=ha();a.ba.me&&(c=a.ba.Lg-a.ba.me,c>a.ba.Vj&&(a.ba.Te+=c,a.ba.Te>a.ba.Lg&&(a.ba.Te=a.ba.Lg)));try{do{a.ol(a.na.xg?1:Math.round(a.ba.Zm/a.Mg));var d=a.Sc-a.A;a.Ld+=d;a.ba.zf+=d;pb(a,0,!0);var c=a,e=d;if(c.na.xg){var f=!1;c.ba.Og=c.ba.Og+c.Pj()|0;c.ba.Ue-=e;0>=c.ba.Ue&&(c.ba.Ue+=c.ba.uf,f=!0);0<=c.ba.vf&&
@ -54,7 +54,7 @@ function sc(a,b){switch(b){case "CS":return a.za;case "DS":return a.ac;case "SS"
function uc(a,b){a.Ha=a.za.load(b)+a.va;a.Z|=a.Xf}function vc(a,b){a.ac.load(b);a.Z|=a.Xf}function wc(a,b){a.Vb.load(b);a.Z|=4}function xc(a,b){a.qb.load(b);a.Z|=a.Xf}function I(a,b){a.Ha=a.za.rb+(a.va=b&65535)}function jc(a,b,c){a.Ha=a.za.load(c)+(a.va=b)}function J(a,b){a.Ha=a.za.rb+(a.va=a.va+b&65535)}function yc(a){return a.X&a.ca?1:0}function Bc(a){return ub[a.ia&255]?4:0}function Cc(a){return(a.ia^a.la)&16?16:0}function Dc(a){return a.X&a.ca-1?0:64}function Ec(a){return a.ia&a.ca>>1?128:0}
function Fc(a){return(a.ia^a.la^a.ia>>1)&a.ca>>1?2048:0}function Gc(a){a.X&=~a.ca}function Hc(a){a.la=a.ia&16|a.la&-17}function Ic(a){a.X|=a.ca-1}function Jc(a){a.ia&=~a.ca;a.la=a.ia&32896|a.la&-32897}function Kc(a){a.X|=a.ca}function Lc(a){a.la=~(a.ia&16)&16|a.la&-17}function Mc(a){a.X&=~(a.ca-1)}function Nc(a){Ec(a)||(a.ia^=a.ca>>1|a.ca>>2,a.la^=32896)}function Oc(a){a.ia|=a.ca;a.la=a.ia&32896|a.la&-32897}function mc(a){return a.Ga&-2262|yc(a)|Bc(a)|Cc(a)|Dc(a)|Ec(a)|Fc(a)}
function kc(a,b){a.ca=256;a.X=a.ia=a.la=0;b&1&&Kc(a);b&4||(a.ia|=1);b&16&&(a.la|=16);b&64||Ic(a);b&128&&Nc(a);b&2048&&Oc(a);a.za.sc?b=b&-12289|a.Ga&12288:(a.Hd=(b&12288)>>12,!a.Hd||a.Lc&1||(a.Hd=0));a.za.sc>a.Hd&&(b=b&-513|a.Ga&512);a.Ga=a.Ga&-1793|b&1792|a.oj;a.Ga&256&&(a.gb|=2,a.Z|=4)}
k.Bb=function(a,b,c,d){var e=!1;switch(c){case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "CS":case "DS":case "SS":case "ES":case "IP":case "PC":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "O":this.qa[c]=d;e=!0;break;default:e=gb.prototype.Bb.call(this,a,b,c,d)}return e};function Pc(a,b){return a.Ba[(b&a.Vd)>>a.Pb].yc(b&a.nb)}
k.Bb=function(a,b,c){var d=!1;switch(b){case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "CS":case "DS":case "SS":case "ES":case "IP":case "PC":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "O":this.qa[b]=c;d=!0;break;default:d=gb.prototype.Bb.call(this,a,b,c)}return d};function Pc(a,b){return a.Ba[(b&a.Vd)>>a.Pb].yc(b&a.nb)}
function E(a,b){var c=b&a.nb,d=(b&a.Vd)>>a.Pb;a.A-=a.B.Vi;return c!=a.nb?a.Ba[d].co(c):a.Ba[d++].yc(c)|a.Ba[d&a.$d].yc(0)<<8}function Qc(a,b,c){a.Ba[(b&a.Vd)>>a.Pb].Bc(b&a.nb,c&255)}function Rc(a,b,c){var d=b&a.nb;b=(b&a.Vd)>>a.Pb;a.A-=a.B.Vi;d!=a.nb?a.Ba[b].po(d,c&65535):(a.Ba[b++].Bc(d,c&255),a.Ba[b&a.$d].Bc(0,c>>8&255))}k.Pl=function(a,b){this.Sf=a;this.ha=a.cd(this.Lf=b,0);return this.Z&1?0:Pc(this,this.ha)};k.Ql=function(a,b){this.Sf=a;this.ha=a.cd(this.Lf=b,1);return this.Z&1?0:E(this,this.ha)};
k.Tm=function(a,b){this.Sf=a;this.Fa=this.ha=a.cd(this.Lf=b,0);return this.Z&1?0:Pc(this,this.ha)};k.Um=function(a,b){this.Sf=a;this.Fa=this.ha=a.cd(this.Lf=b,1);return this.Z&1?0:E(this,this.ha)};k.mo=function(a){this.Z&2||Qc(this,this.Sf.dc(this.Lf,1),a)};k.no=function(a){this.Z&2||Rc(this,this.Sf.dc(this.Lf,2),a)};k.da=function(){var a=Pc(this,this.Ha);this.Ha=this.za.rb+(this.va=this.va+1&65535);return a};
k.M=function(){var a=Pc(this,this.Ha)<<24>>24;this.Ha=this.za.rb+(this.va=this.va+1&65535);return a&65535};k.L=function(){var a=E(this,this.Ha);this.Ha=this.za.rb+(this.va=this.va+2&65535);return a};k.Ea=function(){var a=this.Y;this.Y=this.Y+2&65535;return E(this,this.Vb.cd(a,1))};function L(a,b){var c=a.Y=a.Y-2&65535;Rc(a,a.Vb.dc(c,1),b)}
@ -419,7 +419,7 @@ this.da();eb(this.ra,a,this.H&255,this.Ha-2);this.A-=this.B.Fi},function(){var a
ec,Fd)}];
function R(a){v.call(this,"ChipSet",a,R);this.Da=(this.Da=a.model)?parseInt(this.Da,10):ih;this.Mb=0;var b=a.sw1;if(b)this.Mb=jh(b,kh|lh.vl);else{this.rd=[360,360];(b=a.floppies)&&b.length&&(this.rd=b);if(b=this.rd.length)this.Mb|=mh.jh,b--,this.Mb|=(b&3)<<mh.$e;if(b=a.monitor||(this.Da<nh?"mono":"ega"),void 0!==oh[b])this.Mb|=oh[b]<<lh.$e}this.Qd=jh(a.sw2||"11110000",0);this.Sm=this.Da==ih?16:64;this.pg=this.qg=1;this.Da>=nh&&(this.pg=this.qg=2);this.Dg=a.scaleTimers||!1;this.lo=a.rtcDate;this.Nj=
!1;a.sound&&window&&"webkitAudioContext"in window&&(this.zh=new window.webkitAudioContext);this.reset(!0);this.Na()}y(v,R);var ih=5150,nh=5170,oh={none:0,tv:1,color:2,mono:3,ega:0},mh={jh:1,ONE:0,dp:64,bp:128,Bo:192,Ze:192,$e:6},kh=12,lh={cp:16,uo:32,vl:48,Ze:48,$e:4};k=R.prototype;
k.Bb=function(a,b,c,d){switch(c){case "sw1":return this.qa[c]=d,ph(this,c,d,this.Mb,{0:this.Da==ih?"Bootable Floppy Drive":"Loop on POST",1:this.Da==ih?"Reserved":"Coprocessor",2:"Base Memory Size",4:"Monitor Type",6:"Number of Floppy Drives"}),!0;case "sw2":if(this.Da==ih)return this.qa[c]=d,ph(this,c,d,this.Qd,{0:"Expansion Memory Size",4:"Reserved"}),!0;break;case "swdesc":return this.qa[c]=d,!0}return!1};
k.Bb=function(a,b,c){switch(b){case "sw1":return this.qa[b]=c,ph(this,b,c,this.Mb,{0:this.Da==ih?"Bootable Floppy Drive":"Loop on POST",1:this.Da==ih?"Reserved":"Coprocessor",2:"Base Memory Size",4:"Monitor Type",6:"Number of Floppy Drives"}),!0;case "sw2":if(this.Da==ih)return this.qa[b]=c,ph(this,b,c,this.Qd,{0:"Expansion Memory Size",4:"Reserved"}),!0;break;case "swdesc":return this.qa[b]=c,!0}return!1};
k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.Ma=a;this.Ka=B(a,"Keyboard");this.al=Math.round(c.ba.ld/1193181);bb(b,this,qh);db(b,this,rh);this.Da<nh?(bb(b,this,sh),db(b,this,th)):(bb(b,this,uh),db(b,this,vh))};k.Sb=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.Rb=function(a){return a&&this.save?this.save():!0};
k.reset=function(a){var b;this.Mc=this.Mb;this.we=this.Qd;wh(this);this.Xa=Array(this.pg);for(b=0;b<this.pg;b++)xh(this,b);this.ub=Array(this.qg);yh(this,0,32);1<this.qg&&yh(this,1,160);this.vh=null;this.Nb=Array(3);for(b=0;b<this.Nb.length;b++)zh(this,b);this.hf=this.th=this.kc=this.lg=null;this.kg=0;if(this.Da>=nh){this.lb=16;this.$c=0;this.Nc=16;this.fg=0;this.Xd=160;512<=Ah(this)&&(this.Xd|=16);3==Bh(this)&&(this.Xd|=64);this.rh=3;this.ig=0;this.Ob=Array(7);this.Fe=0;a&&(this.oa=Array(64));Ch(this,
this.lo);for(a=21;24>=a;a++)this.oa[a]=0;for(a=14;46>a;a++)void 0===this.oa[a]&&(this.oa[a]=0);this.oa[20]=this.Mc&(lh.Ze|2|mh.jh|mh.Ze);this.oa[16]=Dh(this,0)<<4|Dh(this,1);Eh(this)}};
@ -474,9 +474,9 @@ bs:14,tab:15,q:16,w:17,e:18,r:19,t:20,y:21,u:22,i:23,o:24,p:25,"[":26,"]":27,ent
T[S["7"]]=8;T[S["&"]]=10760;T[S["8"]]=9;T[S["*"]]=10761;T[S["9"]]=10;T[S["("]]=10762;T[S["0"]]=11;T[S[")"]]=10763;T[S["-"]]=12;T[S._]=10764;T[S["="]]=13;T[S["+"]]=10765;T[1008]=14;T[1009]=15;T[113]=16;T[81]=10768;T[119]=17;T[87]=10769;T[101]=18;T[69]=10770;T[114]=19;T[82]=10771;T[116]=20;T[84]=10772;T[121]=21;T[89]=10773;T[117]=22;T[85]=10774;T[105]=23;T[73]=10775;T[111]=24;T[79]=10776;T[112]=25;T[80]=10777;T[S["["]]=26;T[S["{"]]=10778;T[S["]"]]=27;T[S["}"]]=10779;T[13]=28;T[1017]=29;T[97]=30;
T[65]=10782;T[115]=31;T[83]=10783;T[100]=32;T[68]=10784;T[102]=33;T[70]=10785;T[103]=34;T[71]=10786;T[104]=35;T[72]=10787;T[106]=36;T[74]=10788;T[107]=37;T[75]=10789;T[108]=38;T[76]=10790;T[S[";"]]=39;T[S[":"]]=10791;T[S["'"]]=40;T[S['"']]=10792;T[S["`"]]=41;T[S["~"]]=10793;T[1016]=42;T[S["\\"]]=43;T[S["|"]]=10795;T[122]=44;T[90]=10796;T[120]=45;T[88]=10797;T[99]=46;T[67]=10798;T[118]=47;T[86]=10799;T[98]=48;T[66]=10800;T[110]=49;T[78]=10801;T[109]=50;T[77]=10802;T[S[","]]=51;T[S["<"]]=10803;
T[S["."]]=52;T[S[">"]]=10804;T[S["/"]]=53;T[S["?"]]=10805;T[3016]=54;T[1018]=56;T[S[" "]]=57;T[1020]=58;T[1112]=59;T[1113]=60;T[1114]=61;T[1115]=62;T[1116]=63;T[1117]=64;T[1118]=65;T[1119]=66;T[1120]=67;T[1121]=68;T[1144]=69;T[1145]=70;T[1036]=71;T[1038]=72;T[1033]=73;T[1037]=75;T[1039]=77;T[1035]=79;T[1040]=80;T[1034]=81;T[1045]=82;T[1046]=83;T[1122]=87;T[1123]=88;T[4003]=7470;T[4063]=7494;T[4081]=3677523;k=Bi.prototype;
k.Bb=function(a,b,c,d){var e=this;a=b+"-"+c;if(void 0===this.qa[a])switch(c){case "kbd":return this.qa[a]=d,d.onkeydown=function(a){return Gi(e,a,!0)},d.onkeypress=function(a){var b=!0;a=a||window.event;a=a.which||a.keyCode;8==a||9==a?b=!1:e.Qa&64?e.Qa&=-65:e.Qa&40?b=!1:(e.Ij&&a==S["`"]&&(a=27),b=!Hi(e,a));return b},d.onkeyup=function(a){return Gi(e,a,!1)},!0;case "caps-lock":return this.qa[a]=d,d.onclick=function(){e.ka&&e.ka.od();Hi(e,1020,!0)},!0;case "num-lock":return this.qa[a]=d,d.onclick=function(){e.ka&&
e.ka.od();Hi(e,1144,!0)},!0;case "scroll-lock":return this.qa[a]=d,d.onclick=function(){e.ka&&e.ka.od();Hi(e,1145,!0)},!0;default:if(void 0!==Ei[c]&&"button"==b)return this.qa[a]=d,d.onclick=function(a,b,c){return function(){a.ka&&a.ka.od();Ii(a,c);return!Hi(a,c)}}(this,c,Ei[c]),!0;if(void 0!==Fi[c])return this.qa[a]=d,b=function(a,b,c){return function(){Ji(a,c)}}(this,c,Fi[c]),c=function(a,b,c){return function(){Ji(a,c)}}(this,c,Fi[c]|128),"ontouchstart"in window?(d.ontouchstart=b,d.ontouchend=c):
(d.onmousedown=b,d.onmouseup=d.onmouseout=c),!0}return!1};k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.ja=B(a,"ChipSet")};k.Na=function(){this.Ll=(this.Ul=qa("iOS"))||qa("Android");return v.prototype.Na.call(this)};function qi(a,b,c){var d=!1;a.Kh!==c&&(a.Kh=a.Oh=c);a.zg!==b&&(a.zg=b)&&!a.Oh&&vi(a);a.zg&&a.Oh&&(a.cc=[170],a.ja&&ui(a.ja),a.Oh=!1,d=!0);return d}function oi(a,b){var c=0;a.cc.length&&(c=a.cc[0],b&&vi(a));return c}
k.Bb=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.qa[e])switch(b){case "kbd":return this.qa[e]=c,c.onkeydown=function(a){return Gi(d,a,!0)},c.onkeypress=function(a){var b=!0;a=a||window.event;a=a.which||a.keyCode;8==a||9==a?b=!1:d.Qa&64?d.Qa&=-65:d.Qa&40?b=!1:(d.Ij&&a==S["`"]&&(a=27),b=!Hi(d,a));return b},c.onkeyup=function(a){return Gi(d,a,!1)},!0;case "caps-lock":return this.qa[e]=c,c.onclick=function(){d.ka&&d.ka.od();Hi(d,1020,!0)},!0;case "num-lock":return this.qa[e]=c,c.onclick=function(){d.ka&&
d.ka.od();Hi(d,1144,!0)},!0;case "scroll-lock":return this.qa[e]=c,c.onclick=function(){d.ka&&d.ka.od();Hi(d,1145,!0)},!0;default:if(void 0!==Ei[b]&&"button"==a)return this.qa[e]=c,c.onclick=function(a,b,c){return function(){a.ka&&a.ka.od();Ii(a,c);return!Hi(a,c)}}(this,b,Ei[b]),!0;if(void 0!==Fi[b])return this.qa[e]=c,a=function(a,b,c){return function(){Ji(a,c)}}(this,b,Fi[b]),b=function(a,b,c){return function(){Ji(a,c)}}(this,b,Fi[b]|128),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=b):
(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}return!1};k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.ja=B(a,"ChipSet")};k.Na=function(){this.Ll=(this.Ul=qa("iOS"))||qa("Android");return v.prototype.Na.call(this)};function qi(a,b,c){var d=!1;a.Kh!==c&&(a.Kh=a.Oh=c);a.zg!==b&&(a.zg=b)&&!a.Oh&&vi(a);a.zg&&a.Oh&&(a.cc=[170],a.ja&&ui(a.ja),a.Oh=!1,d=!0);return d}function oi(a,b){var c=0;a.cc.length&&(c=a.cc[0],b&&vi(a));return c}
function vi(a,b){0<a.cc.length&&(b?a.cc=[]:(a.cc.shift(),0<a.cc.length&&a.ja&&ui(a.ja)))}k.Sb=function(a,b){return!b&&(this.reset(),a&&this.restore&&!this.restore(a))?!1:!0};k.Rb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.Ed();this.Qa=0;this.cc=[];if(this.Xc)for(var a in this.Xc)ca(a)||this.Xc[a]&&clearTimeout(this.Xc[a]);this.Xc=[];this.dl=this.qe=0};k.save=function(){var a=new G(this);a.set(0,this.gj());return a.data()};k.restore=function(a){return this.Ed(a[0])};
k.Ed=function(a){var b=0;void 0===a&&(a=[]);this.Kh=a[b++];this.zg=a[b];return!0};k.gj=function(){var a=0,b=[];b[a++]=this.Kh;b[a]=this.zg;return b};function Ji(a,b){var c=b&127,d=c==b;if(a.cc)if(20>a.cc.length){if(!(!d&&!a.oh[c]||d&&a.oh[c])){a.oh[c]=d;a.cc.push(b);1==a.cc.length&&a.ja&&ui(a.ja);for(var e in Fi)if(Fi[e]==c){(c=a.qa["key-"+e])&&void 0!==d&&(c.style.color=d?"#ffffff":"#000000",c.style.backgroundColor=d?"#000000":"#ffffff");break}}}else 20==a.cc.length&&a.cc.push(255)}
function Ki(a,b){var c=b?a.Wm:a.Vm;a.ka&&a.ka.ba.Rc&&(c/=a.ka.ba.Rc);return c}function Li(a,b){!a.qe||void 0!==b&&b==a.qe||(clearTimeout(a.Xc[a.qe]),Mi(a,a.qe,!1))}function Ni(a,b){var c,d;for(d in Di){var e="led-"+d,f=Di[d];b&&b!=f||!(c=a.qa[e])||(c.style.backgroundColor=a.Qa&f?"#00ff00":"#000000")}}function Ii(a,b){var c;if(T[b]){var d=Math.floor(b/1E3)&2,e=Ci[Math.floor(b%1E3)]||0;e&&(d&&(e>>=1),e&1792&&(c=!(a.Qa&e)),a.Qa&=~e,c&&(a.Qa|=e),Ni(a,e))}}
@ -502,8 +502,8 @@ Y[4096]=function(a){a+=this.offset;var b=this.pa[a]&~this.ea.cb|this.ea.xb&this.
Y[40960]=function(a,b){var c=a+this.offset,d=Wi[b&15],d=d|this.ea.xb,d=d&this.ea.cb|this.pa[c]&~this.ea.cb,d=d&this.ea.hb|this.ea.xb&~this.ea.hb;this.pa[c]!=d&&(this.pa[c]=d,this.fb=!0)};Y[57344]=function(a,b){var c=a+this.offset,d=Wi[b&15],d=d^this.ea.xb,d=d&this.ea.cb|this.pa[c]&~this.ea.cb,d=d&this.ea.hb|this.ea.xb&~this.ea.hb;this.pa[c]!=d&&(this.pa[c]=d,this.fb=!0)};
function cj(a){var b=[];if(void 0!==a.Gg){b[0]=a.Jc;b[1]=a.pc;b[2]=a.kf;b[3]=a.Uf;b[4]=a.wc|a.Fg<<8;b[5]=a.bc;if(5==a.Gg){var c=[];c[0]=a.Cd;c[1]=a.le;c[2]=a.Sd;c[3]=a.hj;c[4]=a.Kg;c[5]=a.Qh;c[6]=a.Qe;c[7]=a.bg;c[8]=a.Th;c[9]=a.Uh;c[10]=a.Pe;c[11]=a.Be;c[12]=a.xb;c[13]=[a.Ra,a.Db,a.Hc];var d;a:if(d=a.Wd){var e=0,f=[];if(void 0!==d[0])for(var h=0;2>h;h++)for(var g=h;g<d.length;){for(var m=d[g],n=g+2;n<d.length&&d[n]===m;)n+=2;f[e++]=n-g>>1;f[e++]=m;g=n}if(f.length<d.length){d=f;break a}}c[14]=d;c[15]=
a.Zh;c[16]=a.Ui;c[17]=a.cb;c[18]=a.Tc;c[19]=a.hb;c[20]=a.Tg;c[21]=a.Md;c[22]=a.oe;c[23]=a.bi;c[24]=a.ci;b[6]=c}b[7]=a.ki}return b}Xi.prototype.eh=function(a){if(null!=a&&a!=this.Zh){var b=a&255,c=Y[b];c||b&1&&(c=Y[1]);var b=a&65280,d=Y[b];d||b&256&&(d=Y[256]);this.df||(this.df=[null,aj,null,bj]);this.df[0]=c;this.df[2]=d;this.Zh=a}};var Yi=[,["MDA",948,720896,4096,0,3],,["CGA",980,753664,16384,0,2],,["EGA",980,753664,16384,65536,4]];k=U.prototype;
k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;bb(b,this,dj);db(b,this,ej);"ega"==this.Da&&(bb(b,this,fj),db(b,this,gj));if((this.Ka=B(a,"Keyboard"))&&this.Ta){for(var e in this.qa)0<e.indexOf("lock")&&this.Ka.Bb("input","led",e,this.qa[e]);this.Ka.Bb("input",this.pl?"textarea":"canvas","kbd",this.pl||this.Ta)}this.gg=9;(this.ja=B(a,"ChipSet"))&&this.kl&&(this.gg=jh(this.kl,this.gg));this.Ka&&this.Ol&&hj(this)};
k.Bb=function(a,b,c,d){var e=this;if(!this.qa[c])switch(this.qa[c]=d,c){case "lockPointer":return this.jo=d.innerHTML,this.Ta&&this.Ta.Re?d.onclick=function(){e.Re(!0)}:d.parentNode.removeChild(d),!0;case "refresh":return d.onclick=function(){ib(e,!0)},!0}return!1};k.od=function(){this.Ta&&this.Ta.focus()};k.Re=function(a){if(this.Ta)if(a){if(this.Ta.Re)return this.Ta.Re(),this.Fd.Kf(!0),!0}else if(this.Ta.ql)return this.Ta.ql(),this.Fd.Kf(!1),!0;return!1};
k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;bb(b,this,dj);db(b,this,ej);"ega"==this.Da&&(bb(b,this,fj),db(b,this,gj));if((this.Ka=B(a,"Keyboard"))&&this.Ta){for(var e in this.qa)0<e.indexOf("lock")&&this.Ka.Bb("led",e,this.qa[e]);this.Ka.Bb(this.pl?"textarea":"canvas","kbd",this.pl||this.Ta)}this.gg=9;(this.ja=B(a,"ChipSet"))&&this.kl&&(this.gg=jh(this.kl,this.gg));this.Ka&&this.Ol&&hj(this)};
k.Bb=function(a,b,c){var d=this;if(!this.qa[b])switch(this.qa[b]=c,b){case "lockPointer":return this.jo=c.innerHTML,this.Ta&&this.Ta.Re?c.onclick=function(){d.Re(!0)}:c.parentNode.removeChild(c),!0;case "refresh":return c.onclick=function(){ib(d,!0)},!0}return!1};k.od=function(){this.Ta&&this.Ta.focus()};k.Re=function(a){if(this.Ta)if(a){if(this.Ta.Re)return this.Ta.Re(),this.Fd.Kf(!0),!0}else if(this.Ta.ql)return this.Ta.ql(),this.Fd.Kf(!1),!0;return!1};
k.Kf=function(a){this.Fd&&(this.Fd.Kf(a),this.Ka&&(this.Ka.Ij=a));var b=this.qa.lockPointer;b&&(b.innerHTML=a?"Press Esc to Unlock Pointer":this.jo)};function hj(a){var b=a.Ta;b&&!a.Jh&&(b.addEventListener("touchstart",function(b){ij(a,b)},!1),b.addEventListener("touchmove",function(b){ij(a,b)},!0),b.addEventListener("touchend",function(){},!1),a.Jh=!0)}
function ij(a,b){a.Lh&&b.preventDefault();var c=0,d=0,e=a.Ta;do isNaN(e.offsetLeft)||(c+=e.offsetLeft,d+=e.offsetTop);while(e=e.offsetParent);c=a.dd/a.Ta.offsetWidth*(b.targetTouches[0].pageX-c)/(a.dd/3)|0;d=a.Bd/a.Ta.offsetHeight*(b.targetTouches[0].pageY-d)/(a.Bd/3)|0;1!=d?d?Hi(a.Ka,40,!0):Hi(a.Ka,38,!0):1!=c&&(c?Hi(a.Ka,39,!0):Hi(a.Ka,37,!0))}k.Sb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Rb=function(a){return a&&this.save?this.save():!0};
k.reset=function(){var a=!0,b=0;this.ja&&(b=Bh(this.ja));var c=!1;if(this.Da)switch(this.Da){case "ega":var c=!0,d=Qi[this.gg];d&&(b=d[0]);b||(b=4);break;case "mda":b=3;break;default:b=2}this.Jd!==b&&(this.Jd=b,a=!0);this.Ca=null;this.Gc=this.xh=new Xi(this,1);this.Xb=this.rg=new Xi(this,3);c?(this.ma=new Xi(this,5,null,this.Hc),jj(this)):this.ma=new Xi;kj(this);this.Id=null;this.Uc=3==b?Oi:3;this.ce=this.xc=-1;this.be=0;lj(this,this.Uc);if(this.Ca.Ra&&a){a=this.Ca.Ra+this.yh;for(b=this.Ca.Ra;b<a;b+=
@ -537,8 +537,8 @@ var dj={948:U.prototype.zm,949:U.prototype.ym,952:U.prototype.Am,954:U.prototype
960:U.prototype.bl,961:U.prototype.bl,962:U.prototype.Nn,964:U.prototype.Un,965:U.prototype.Tn,970:U.prototype.Fn,972:U.prototype.En,974:U.prototype.Dn,975:U.prototype.Cn,986:U.prototype.cl};
u(function(){for(var a=A(window.document,"pcjs","video"),b=0;b<a.length;b++){var c=a[b],d=z(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","pcjs-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=c.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 f=e.getContext("2d"),d=new U(d,e,f);Ja(d,c)}});
function Z(a){this.Qj=a.adapter;switch(this.Qj){case 1:this.$i=1016;this.Df=4;break;case 2:this.$i=760;this.Df=3;break;default:s("Unrecognized serial adapter #"+this.Qj);return}this.yd=null;v.call(this,"SerialPort",a,Z);var b=a.binding,c;a=Aj;b&&(void 0===c&&(c="Panel"),(c=Ia(c,this.id))&&(b=c.qa[b])&&this.Bb(null,null,a,b))}y(v,Z);var Aj="buffer";k=Z.prototype;k.tj=function(a,b){return a==this.Wh?(this.Fd=b,this):null};
k.Bb=function(a,b,c,d){var e=this;switch(c){case Aj:return this.qa[c]=this.yd=d,d.onkeydown=function(a){a=a||window.event;var b=a.keyCode;8===b&&(a.preventDefault&&a.preventDefault(),Bj(e,[b]))},d.onkeypress=function(a){a=a||window.event;Bj(e,[a.which||a.keyCode])},!0}return!1};k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.ja=B(a,"ChipSet");bb(b,this,Cj,this.$i);db(b,this,Dj,this.$i);this.Na()};
function Z(a){this.Qj=a.adapter;switch(this.Qj){case 1:this.$i=1016;this.Df=4;break;case 2:this.$i=760;this.Df=3;break;default:s("Unrecognized serial adapter #"+this.Qj);return}this.yd=null;v.call(this,"SerialPort",a,Z);var b=a.binding,c;a=Aj;b&&(void 0===c&&(c="Panel"),(c=Ia(c,this.id))&&(b=c.qa[b])&&this.Bb(null,a,b))}y(v,Z);var Aj="buffer";k=Z.prototype;k.tj=function(a,b){return a==this.Wh?(this.Fd=b,this):null};
k.Bb=function(a,b,c){var d=this;switch(b){case Aj:return this.qa[b]=this.yd=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;8===b&&(a.preventDefault&&a.preventDefault(),Bj(d,[b]))},c.onkeypress=function(a){a=a||window.event;Bj(d,[a.which||a.keyCode])},!0}return!1};k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.ja=B(a,"ChipSet");bb(b,this,Cj,this.$i);db(b,this,Dj,this.$i);this.Na()};
k.Sb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Rb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.Ed()};k.save=function(){var a=new G(this),b=0,c=[];c[b++]=this.uh;c[b++]=this.xj;c[b++]=this.xe;c[b++]=this.hg;c[b++]=this.ud;c[b++]=this.Zd;c[b++]=this.Oc;c[b++]=this.qc;c[b++]=this.vj;c[b]=this.bf;a.set(0,c);return a.data()};k.restore=function(a){return this.Ed(a[0])};
k.Ed=function(a){var b=0;void 0===a&&(a=[0,0,384,0,1,0,0,96,48,[]]);this.uh=a[b++];this.xj=a[b++];this.xe=a[b++];this.hg=a[b++];this.ud=a[b++];this.Zd=a[b++];this.Oc=a[b++];this.qc=a[b++];this.vj=a[b++];this.bf=a[b];return!0};function Bj(a,b){a.bf=a.bf.concat(b);Ej(a)}function Ej(a){0<a.bf.length&&!(a.qc&1)&&(a.uh=a.bf.shift(),a.qc|=1);var b=-1;a.qc&1&&a.hg&1&&(b=4);0<=b?(a.ud&=-8,a.ud|=b,a.ja&&a.Df&&hi(a.ja,a.Df)):(a.ud|=1,a.ja&&a.Df&&ii(a.ja,a.Df))}
k.Im=function(){var a=this.Zd&128?this.xe&255:this.uh;this.qc&=-2;Ej(this);return a};k.tm=function(){return this.Zd&128?this.xe>>8:this.hg};k.um=function(){return this.ud};k.vm=function(){return this.Zd};k.xm=function(){return this.Oc};k.wm=function(){return this.qc};k.Dm=function(){return this.vj};
@ -571,9 +571,9 @@ k.restore=function(a){var b=0,c="unsupported restore format";if(a&&0<a.length){v
b+" changes applied)";b=-1;break}if(this.Me){c="unable to modify write-protected disk";b=-1;break}e=h[f++];f=h[f++];h=e+f.length;if(g=this.Ya[g][m][n]){for(m=g.data.length;m<e;)g.data[m++]=g.pattern;m=0;g.Kc=e;for(g.lc=f.length;e<h;)g.data[e++]=f[m++];b++}}}0>b&&this.ea.ya("unable to restore disk '"+this.Vc+": "+c);return b};
function Uj(a){v.call(this,"FDC",a,Uj);this.dmaRead=this.Dh;this.dmaWrite=this.Eh;this.dmaFormat=this.Bl;this.ee=null;if(a.autoMount&&(this.ee=a.autoMount,"string"==typeof this.ee))try{this.ee=eval("("+a.autoMount+")")}catch(b){s("FDC auto-mount error: "+b.message+" ("+a.autoMount+")"),this.ee=null}this.ic=[];this.Kj=!1}y(v,Uj);l={};aa={};
var Vj={3:{bd:3,xd:0,name:aa.Wo},4:{bd:2,xd:1,name:aa.Uo},5:{bd:9,xd:7,name:aa.hp},6:{bd:9,xd:7,name:aa.Oo},7:{bd:2,xd:0,name:aa.Qo},8:{bd:1,xd:2,name:aa.Vo},10:{bd:2,xd:7,name:aa.Po},13:{bd:6,xd:7,name:aa.Ao},15:{bd:3,xd:0,name:aa.To}};k=Uj.prototype;
k.Bb=function(a,b,c,d){var e=this;switch(c){case "listDisks":return this.qa[c]=d,d.onchange=function(){var a=e.qa.descDisk,b=d.options[d.selectedIndex];if(a&&b){var c={};if(b=b.getAttribute("data-value"))try{c=eval("({"+b+"})")}catch(m){s("FDC option error: "+m.message)}b=c.desc;void 0===b&&(b="");c=c.href;void 0!==c&&(b='<a href="'+c+'" target="_blank">'+b+"</a>");a.innerHTML=b}},!0;case "descDisk":case "listDrives":return this.qa[c]=d,d.onchange=function(){var a;a=d.value;var b=10,c;if(a){b||(b=
16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var m=a.charAt(a.length-1).toLowerCase();"h"==m?(b=16,m=null):"."==m&&(b=10,m=null);null===m&&(a=a.substr(0,a.length-1))}var n;ca(a,b)&&!isNaN(n=parseInt(a,b))&&(c=n)}a=c;null!=a&&Wj(e,a)},!0;case "loadDrive":return this.qa[c]=d,d.onclick=function(){var a=e.qa.listDisks;a&&Xj(e,a.options[a.selectedIndex].text,a.value)},!0;case "mountDrive":return window&&"FileReader"in window?(this.Kj=!0,this.qa[c]=d,d.addEventListener("change",
function(){var a=d.children[0];a.children[1].disabled=0==a.children[0].files.length}),d.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;Xj(e,da(b,!0),b,a)}return!1}):d.parentNode.removeChild(d),!0}return!1};k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.Ma=a;this.ja=B(a,"ChipSet");this.hd();bb(b,this,Yj);db(b,this,Zj);this.Kj&&ak(this,"Local Disk","?");ak(this,"Remote Disk","??");this.ef()||this.Na()};
k.Bb=function(a,b,c){var d=this;switch(b){case "listDisks":return this.qa[b]=c,c.onchange=function(){var a=d.qa.descDisk,b=c.options[c.selectedIndex];if(a&&b){var h={};if(b=b.getAttribute("data-value"))try{h=eval("({"+b+"})")}catch(g){s("FDC option error: "+g.message)}b=h.desc;void 0===b&&(b="");h=h.href;void 0!==h&&(b='<a href="'+h+'" target="_blank">'+b+"</a>");a.innerHTML=b}},!0;case "descDisk":case "listDrives":return this.qa[b]=c,c.onchange=function(){var a;a=c.value;var b=10,h;if(a){b||(b=16);
if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var g=a.charAt(a.length-1).toLowerCase();"h"==g?(b=16,g=null):"."==g&&(b=10,g=null);null===g&&(a=a.substr(0,a.length-1))}var m;ca(a,b)&&!isNaN(m=parseInt(a,b))&&(h=m)}a=h;null!=a&&Wj(d,a)},!0;case "loadDrive":return this.qa[b]=c,c.onclick=function(){var a=d.qa.listDisks;a&&Xj(d,a.options[a.selectedIndex].text,a.value)},!0;case "mountDrive":return window&&"FileReader"in window?(this.Kj=!0,this.qa[b]=c,c.addEventListener("change",
function(){var a=c.children[0];a.children[1].disabled=0==a.children[0].files.length}),c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;Xj(d,da(b,!0),b,a)}return!1}):c.parentNode.removeChild(c),!0}return!1};k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.Ma=a;this.ja=B(a,"ChipSet");this.hd();bb(b,this,Yj);db(b,this,Zj);this.Kj&&ak(this,"Local Disk","?");ak(this,"Remote Disk","??");this.ef()||this.Na()};
k.Sb=function(a,b){if(!b){if(!a||!this.restore){if(this.reset(),this.Ma.Nh){this.ic=[];for(var c=0;c<this.xa.length;c++)bk(this,c,!0);this.ef(!0)}}else if(!this.restore(a))return!1;if(c=this.qa.listDrives){for(;c.firstChild;)c.removeChild(c.firstChild);c.innerHTML="";for(var d=0;d<this.hi;d++){var e=window.document.createElement("option");e.value=d;e.innerHTML=String.fromCharCode(65+d)+":";c.appendChild(e)}0<this.hi&&(c.value="0",Wj(this,0))}}return!0};
k.Rb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.hd()};k.save=function(){var a=new G(this);a.set(0,this.dj());return a.data()};k.restore=function(a){return this.hd(a[0])};
k.hd=function(a){var b=0,c,d=!0;void 0===a&&(a=[0,0,128,Array(9),0,0,0,[]]);this.$a=a[b++];b++;this.wa=a[b++];this.Ub=a[b++];this.sb=a[b++];this.eb=a[b++];this.Xe=a[b++];var e=a[b++];c=a[b++];null!=c&&(this.ic=c);void 0===this.xa&&(this.hi=4,this.ja&&(this.hi=Lh(this.ja)),this.xa=Array(4));for(c=0;c<this.xa.length;c++){var f=this.xa[c];if(void 0===f){var f=this.xa[c]={},h;if(this.ja)a:{h=this.ja;if(c<Lh(h)){if(!h.rd){h=360;break a}if(c<h.rd.length){h=h.rd[c];break a}}h=0}else h=0;switch(h){case 160:case 180:f.kb=
@ -635,7 +635,7 @@ k.Fj=function(a){var b=a[0],c=0>a[1];a=a[2];this.na.Hb=!0;this.Jj||(this.$b("PCj
function Ak(a,b){if(ma("There may be a problem with your PCjs machine.\n\nTo help us diagnose it, click OK to send this PCjs machine state to http://www.pcjs.org.")){var c=a.Dd(),d=b.toString(),e={app:"PCjs",ver:"1.16.0"};e.url=a.url;e.user=c;e.type="bug";e.data=d;r("http://www.pcjs.org/api/v1/report",!0,e)}}
function Ck(a,b,c){var d,e="none",f=new G(a,"1.16.0"),h=new G(a,"1.16.0","validate"),g=ia();h.set("timestamp",g);f.set("timestamp",g);f.set("version","1.16.0");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.ka&&a.ka.Rb&&(c&&mb(a.ka),d=a.ka.Rb(b,c),"object"===typeof d&&f.set(a.ka.id,d),c&&(a.ka.na.Hb=!1,!1===d&&(e=null)));for(var g=Ga(a.id),m=0;m<g.length;m++){var n=g[m];n.na.Hb&&(n.Rb&&(d=n.Rb(b,c),"object"===typeof d&&f.set(n.id,d)),c&&(n.na.Hb=
!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.Ac&&Dk(a,a.Ac,f.toString()),uk(h)&&uk(f)||(e=null,d=g=!0)):a.zc&&(d=!0,g=3==a.zc),d&&f.clear(g)):e=f.toString());c&&(a.na.Hb=!1);return e}k.reset=function(){this.ra&&this.ra.reset&&this.ra.reset();for(var a=Ga(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ra&&c.reset&&c.reset()}};k.start=function(a,b){for(var c=Ga(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
k.stop=function(a,b){for(var c=Ga(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};k.Bb=function(a,b,c,d){var e=this;switch(c){case "save":return this.qa[c]=d,d.onclick=function(){var a=xk(e,!0);if(a){var b=!(!e.zc||e.dh),c=Ck(e,b);b?Dk(e,a,c):e.ya("Resume disabled, machine state not saved")}},!0;case "reset":return this.qa[c]=d,d.onclick=function(){nb(e)},!0}return!1};
k.stop=function(a,b){for(var c=Ga(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};k.Bb=function(a,b,c){var d=this;switch(b){case "save":return this.qa[b]=c,c.onclick=function(){var a=xk(d,!0);if(a){var b=!(!d.zc||d.dh),c=Ck(d,b);b?Dk(d,a,c):d.ya("Resume disabled, machine state not saved")}},!0;case "reset":return this.qa[b]=c,c.onclick=function(){nb(d)},!0}return!1};
function xk(a,b){var c=a.Ac;c||(c=oa("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("To save machine states on the pcjs.org server, you need a user ID (email support@pcjs.org).\n\nOnce you have an ID, enter it below.","")),c&&((c=Ek(a,c))||a.ya("Your user ID has not been approved."))):b&&a.ya("Browser local storage is not available"));return c}
function Ek(a,b){a.Ac=null;var c=r(la()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(pa("user",c.data),a.Ac=c.data)}catch(e){s(e.message+" ("+d+")")}return a.Ac}
function Dk(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=qk(a,"1.16.0");d.data=c;b=r(la()+"/api/v1/user",!1,d);d=b[1];if(b[0]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[0]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ya("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ya(c),pa("user",""),a.Ac=null)}}

View file

@ -163,13 +163,12 @@ C1PComputer.prototype.stop = function(msStart, nCycles)
/**
* @this {C1PComputer}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
C1PComputer.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
C1PComputer.prototype.setBinding = function(sHTMLType, sBinding, control)
{
switch(sBinding) {
case "reset":

View file

@ -502,13 +502,12 @@ C1PCPU.prototype.reset = function(fPowerOn)
/**
* @this {C1PCPU}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "run")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
C1PCPU.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
C1PCPU.prototype.setBinding = function(sHTMLType, sBinding, control)
{
var fBound = false;
switch(sBinding) {

View file

@ -487,48 +487,47 @@ if (DEBUGGER) {
/**
* @this {C1PDebugger}
* @param {string|null} c is the class of the HTML control (eg, "input", "output")
* @param {string|null} t is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} s is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "debugInput")
* @param {Object} e is the HTML control DOM object (eg, HTMLButtonElement)
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
C1PDebugger.prototype.setBinding = function(c, t, s, e)
C1PDebugger.prototype.setBinding = function(sHTMLType, sBinding, control)
{
var dbg = this;
switch(s) {
switch(sBinding) {
case "debugInput":
this.bindings[s] = e;
this.eDebug = e;
this.bindings[sBinding] = control;
this.eDebug = control;
this.eDebug.focus();
e.onkeypress = function(dbg, e) {
control.onkeypress = function(dbg, e) {
return function(event) {
if (event.keyCode == 13) {
s = e.value;
sBinding = e.value;
e.value = "";
C1PDebugger.input(dbg, s);
C1PDebugger.input(dbg, sBinding);
}
};
}(this, e);
}(this, control);
return true;
case "debugEnter":
this.bindings[s] = e;
this.bindings[sBinding] = control;
/*
* I've replaced the standard "onclick" code with a call to our onClickRepeat() helper in
* component.js, so that the "Enter" button can be held to repeat, just like the "Step" button.
*/
web.onClickRepeat(
e, 500, 100,
control, 500, 100,
function(fRepeat) {
if (dbg.eDebug) {
s = dbg.eDebug.value;
sBinding = dbg.eDebug.value;
//
// If we want to use the debugEnter button to repeatedly enter the same command,
// then don't clear the command string.
//
// dbg.eDebug.value = "";
//
C1PDebugger.input(dbg, s);
C1PDebugger.input(dbg, sBinding);
return true;
}
if (DEBUG) dbg.log("no debugger input buffer");
@ -537,9 +536,9 @@ if (DEBUGGER) {
);
return true;
case "step":
this.bindings[s] = e;
this.bindings[sBinding] = control;
web.onClickRepeat(
e, 500, 100,
control, 500, 100,
function(fRepeat) {
var fCompleted = false;
if (!dbg.isBusy(true)) {

View file

@ -657,13 +657,12 @@ C1PDiskController.prototype.resetDrive = function(iDrive, iDriveType, nMaxTracks
/**
* @this {C1PDiskController}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "listDisk")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
C1PDiskController.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
C1PDiskController.prototype.setBinding = function(sHTMLType, sBinding, control)
{
switch(sBinding) {

View file

@ -388,13 +388,12 @@ C1PKeyboard.prototype.reset = function()
/**
* @this {C1PKeyboard}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "esc", "ctrl-c")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
C1PKeyboard.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
C1PKeyboard.prototype.setBinding = function(sHTMLType, sBinding, control)
{
/*
* I want to bind to the first caller (ie, the Screen), not subsequent ones (eg, the Panel)

View file

@ -22,8 +22,8 @@
<rom id="romSystem" size="0x0800" image="/devices/c1p/rom/system.hex"/>
<video id="video" screenwidth="256" screenheight="192" cols="32" rows="32" charset="/devices/c1p/video/chargen1x.png" padding="8px"/>
<keyboard id="keyboard">
<control type="button" class="input" binding="ctrl-c">CTRL-C</control>
<control type="button" class="input" binding="break">BREAK</control>
<control type="button" binding="ctrl-c">CTRL-C</control>
<control type="button" binding="break">BREAK</control>
</keyboard>
<serial id="serialPort" demo="true"/>
</machine>
@ -80,9 +80,9 @@
<lt/>video id="video" screenwidth="256" screenheight="192" cols="32" rows="32"
charset="/devices/c1p/video/chargen1x.png" width="256px" padding="8px"/<gt/>
<lt/>keyboard id="keyboard"<gt/>
<lt/>control type="button" class="input" binding="ctrl-c"<gt/>CTRL-C<lt/>/control<gt/>
<lt/>control type="button" class="input" binding="ctrl-o"<gt/>CTRL-O<lt/>/control<gt/>
<lt/>control type="button" class="input" binding="break"<gt/>BREAK<lt/>/control<gt/>
<lt/>control type="button" binding="ctrl-c"<gt/>CTRL-C<lt/>/control<gt/>
<lt/>control type="button" binding="ctrl-o"<gt/>CTRL-O<lt/>/control<gt/>
<lt/>control type="button" binding="break"<gt/>BREAK<lt/>/control<gt/>
<lt/>/keyboard<gt/>
<lt/>/machine<gt/>
</pre>

View file

@ -55,19 +55,18 @@ Component.subclass(Component, C1PPanel);
* component that doesn't recognize the specified binding should simply ignore it.
*
* @this {C1PPanel}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
C1PPanel.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
C1PPanel.prototype.setBinding = function(sHTMLType, sBinding, control)
{
if (this.cmp && this.cmp.setBinding(sHTMLClass, sHTMLType, sBinding, control)) return true;
if (this.cpu && this.cpu.setBinding(sHTMLClass, sHTMLType, sBinding, control)) return true;
if (this.kbd && this.kbd.setBinding(sHTMLClass, sHTMLType, sBinding, control)) return true;
if (DEBUGGER && this.dbg && this.dbg.setBinding(sHTMLClass, sHTMLType, sBinding, control)) return true;
return Component.prototype.setBinding.call(this, sHTMLClass, sHTMLType, sBinding, control);
if (this.cmp && this.cmp.setBinding(sHTMLType, sBinding, control)) return true;
if (this.cpu && this.cpu.setBinding(sHTMLType, sBinding, control)) return true;
if (this.kbd && this.kbd.setBinding(sHTMLType, sBinding, control)) return true;
if (DEBUGGER && this.dbg && this.dbg.setBinding(sHTMLType, sBinding, control)) return true;
return Component.prototype.setBinding.call(this, sHTMLType, sBinding, control);
};
/**

View file

@ -100,13 +100,12 @@ C1PSerialPort.prototype.start = function()
/**
* @this {C1PSerialPort}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "listSerial")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
C1PSerialPort.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
C1PSerialPort.prototype.setBinding = function(sHTMLType, sBinding, control)
{
var serial = this;

View file

@ -172,13 +172,12 @@ C1PVideo.prototype.reset = function(fPowerOn)
/**
* @this {C1PVideo}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "refresh")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
C1PVideo.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
C1PVideo.prototype.setBinding = function(sHTMLType, sBinding, control)
{
switch(sBinding) {
case "refresh":
@ -322,9 +321,9 @@ C1PVideo.prototype.setPower = function(fOn, cmp)
*/
this.kbd = cmp.getComponentByType("keyboard");
if (this.kbd) {
this.kbd.setBinding("input", "canvas", "keyDown", this.eCanvas);
this.kbd.setBinding("input", "canvas", "keyPress", this.eCanvas);
this.kbd.setBinding("input", "canvas", "keyUp", this.eCanvas);
this.kbd.setBinding("canvas", "keyDown", this.eCanvas);
this.kbd.setBinding("canvas", "keyPress", this.eCanvas);
this.kbd.setBinding("canvas", "keyUp", this.eCanvas);
}
}
else

View file

@ -266,27 +266,27 @@
</xsl:if>
<xsl:choose>
<xsl:when test="@type = 'button'">
<button class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></button>
<button class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></button>
</xsl:when>
<xsl:when test="@type = 'list'">
<select class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}">
<select class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}">
<xsl:apply-templates select="item" mode="component"/>
</select>
</xsl:when>
<xsl:when test="@type = 'text'">
<input class="{$APPCLASS}-{@class}" type="text" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" value="" autocapitalize="off" autocorrect="off"/>
<input class="{$APPCLASS}-binding" type="text" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" value="" autocapitalize="off" autocorrect="off"/>
</xsl:when>
<xsl:when test="@type = 'submit'">
<input class="{$APPCLASS}-{@class}" type="submit" style="{$border}{$fontsize}{$style}" data-value="{$type},{$binding}" value="{.}"/>
<input class="{$APPCLASS}-binding" type="submit" style="{$border}{$fontsize}{$style}" data-value="{$type},{$binding}" value="{.}"/>
</xsl:when>
<xsl:when test="@type = 'textarea'">
<textarea class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" readonly="readonly"></textarea>
<textarea class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" readonly="readonly"></textarea>
</xsl:when>
<xsl:when test="@type = 'heading'">
<div><xsl:value-of select="."/></div>
</xsl:when>
<xsl:when test="@type = 'file'">
<form class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}">
<form class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}">
<fieldset class="{$APPCLASS}-fieldset">
<input type="file"/>
<input type="submit" value="Load" disabled="true"/>
@ -300,7 +300,7 @@
<div style="clear:both"></div><br/>
</xsl:when>
<xsl:otherwise>
<div class="{$APPCLASS}-{@class}{$subclass}" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></div>
<div class="{$APPCLASS}-binding{$subclass}" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></div>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="@label">

View file

@ -889,13 +889,12 @@ ChipSet.COPROC = { // TODO: Define a variable for this
/**
* @this {ChipSet}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "sw1")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
ChipSet.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
ChipSet.prototype.setBinding = function(sHTMLType, sBinding, control)
{
switch (sBinding) {
case "sw1":

View file

@ -894,16 +894,15 @@ Computer.prototype.stop = function(ms, nCycles)
};
/**
* setBinding(sHTMLClass, sHTMLType, sBinding, control)
* setBinding(sHTMLType, sBinding, control)
*
* @this {Computer}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
Computer.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
Computer.prototype.setBinding = function(sHTMLType, sBinding, control)
{
var computer = this;
switch (sBinding) {

View file

@ -477,16 +477,15 @@ CPU.prototype.displayVideo = function()
};
/**
* setBinding(sHTMLClass, sHTMLType, sBinding, control)
* setBinding(sHTMLType, sBinding, control)
*
* @this {CPU}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "run")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
CPU.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
CPU.prototype.setBinding = function(sHTMLType, sBinding, control)
{
var cpu = this;
var fBound = false;

View file

@ -1207,16 +1207,15 @@ if (DEBUGGER) {
};
/**
* setBinding(sHTMLClass, sHTMLType, sBinding, control)
* setBinding(sHTMLType, sBinding, control)
*
* @this {Debugger}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "debugInput")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
Debugger.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
Debugger.prototype.setBinding = function(sHTMLType, sBinding, control)
{
var dbg = this;
switch (sBinding) {

View file

@ -407,16 +407,15 @@ FDC.aCmdInfo = {
};
/**
* setBinding(sHTMLClass, sHTMLType, sBinding, control)
* setBinding(sHTMLType, sBinding, control)
*
* @this {FDC}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "listDisks")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
FDC.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
FDC.prototype.setBinding = function(sHTMLType, sBinding, control)
{
var fdc = this;

View file

@ -493,16 +493,15 @@ HDC.BIOS.DISK_CMD = {
};
/**
* setBinding(sHTMLClass, sHTMLType, sBinding, control)
* setBinding(sHTMLType, sBinding, control)
*
* @this {HDC}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "listDisks")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
HDC.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
HDC.prototype.setBinding = function(sHTMLType, sBinding, control)
{
/*
* This is reserved for future use; for now, hard disk images can be specified during initialization only (no "hot-swapping")

View file

@ -770,29 +770,28 @@ Keyboard.LIMIT = {
};
/**
* setBinding(sHTMLClass, sHTMLType, sBinding, control)
* setBinding(sHTMLType, sBinding, control)
*
* @this {Keyboard}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "esc")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
Keyboard.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
Keyboard.prototype.setBinding = function(sHTMLType, sBinding, control)
{
/*
* There's a special binding that the Video component uses ("kbd") to effectively bind its
* canvas to the entire keyboard, in Video.powerUp(); ie:
*
* video.kbd.setBinding("input", "canvas", "kbd", video.canvasScreen);
* video.kbd.setBinding("canvas", "kbd", video.canvasScreen);
* or:
* video.kbd.setBinding("input", "textarea", "kbd", video.textareaScreen);
* video.kbd.setBinding("textarea", "kbd", video.textareaScreen);
*
* However, it's also possible for the keyboard XML definition to define a control that serves
* a similar purpose; eg:
*
* <control class="input" type="text" binding="kbd" width="2em">Kbd</control>
* <control type="text" binding="kbd" width="2em">Kbd</control>
*
* The latter is purely experimental, while we work on finding ways to trigger the soft keyboard on
* certain pesky devices (like the Kindle Fire). Note that even if you use the latter, the former will

View file

@ -53,29 +53,28 @@ function Panel(parmsPanel) {
Component.subclass(Component, Panel);
/**
* setBinding(sHTMLClass, sHTMLType, sBinding, control)
* setBinding(sHTMLType, sBinding, control)
*
* The Panel doesn't have any bindings of its own; it passes along all binding requests to
* the Computer, CPU, Keyboard and Debugger components. The order shouldn't matter, since any
* component that doesn't recognize the specified binding should simply ignore it.
*
* @this {Panel}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
Panel.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
Panel.prototype.setBinding = function(sHTMLType, sBinding, control)
{
if (this.cmp && this.cmp.setBinding(sHTMLClass, sHTMLType, sBinding, control)) return true;
if (this.cpu && this.cpu.setBinding(sHTMLClass, sHTMLType, sBinding, control)) return true;
if (this.kbd && this.kbd.setBinding(sHTMLClass, sHTMLType, sBinding, control)) return true;
if (DEBUGGER && this.dbg && this.dbg.setBinding(sHTMLClass, sHTMLType, sBinding, control)) return true;
if (this.cmp && this.cmp.setBinding(sHTMLType, sBinding, control)) return true;
if (this.cpu && this.cpu.setBinding(sHTMLType, sBinding, control)) return true;
if (this.kbd && this.kbd.setBinding(sHTMLType, sBinding, control)) return true;
if (DEBUGGER && this.dbg && this.dbg.setBinding(sHTMLType, sBinding, control)) return true;
/*
* TODO: Determine how to declare this superclass method in order to avoid a type warning
*/
return Component.prototype.setBinding.call(this, sHTMLClass, sHTMLType, sBinding, control);
return Component.prototype.setBinding.call(this, sHTMLType, sBinding, control);
};
/**

View file

@ -282,16 +282,15 @@ SerialPort.prototype.syncMouse = function() {
*/
/**
* setBinding(sHTMLClass, sHTMLType, sBinding, control)
* setBinding(sHTMLType, sBinding, control)
*
* @this {SerialPort}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "buffer")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
SerialPort.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control) {
SerialPort.prototype.setBinding = function(sHTMLType, sBinding, control) {
var serial = this;
switch (sBinding) {
case SerialPort.sIOBuffer:

View file

@ -1983,9 +1983,9 @@ Video.prototype.initBus = function(cmp, bus, cpu, dbg)
this.kbd = cmp.getComponentByType("Keyboard");
if (this.kbd && this.canvasScreen) {
for (var s in this.bindings) {
if (s.indexOf("lock") > 0) this.kbd.setBinding("input", "led", s, this.bindings[s]);
if (s.indexOf("lock") > 0) this.kbd.setBinding("led", s, this.bindings[s]);
}
this.kbd.setBinding("input", this.textareaScreen? "textarea" : "canvas", "kbd", this.textareaScreen || this.canvasScreen);
this.kbd.setBinding(this.textareaScreen? "textarea" : "canvas", "kbd", this.textareaScreen || this.canvasScreen);
}
this.bEGASW = 0x9; // our default "switches" setting (see aEGAMonitorSwitches)
@ -1998,16 +1998,15 @@ Video.prototype.initBus = function(cmp, bus, cpu, dbg)
};
/**
* setBinding(sHTMLClass, sHTMLType, sBinding, control)
* setBinding(sHTMLType, sBinding, control)
*
* @this {Video}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "refresh")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
Video.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
Video.prototype.setBinding = function(sHTMLType, sBinding, control)
{
var video = this;
var canvas, lockPointer;

View file

@ -1682,16 +1682,15 @@ X86CPU.prototype.traceLog = function(prop, dst, src, flagsIn, flagsOut, result)
};
/**
* setBinding(sHTMLClass, sHTMLType, sBinding, control)
* setBinding(sHTMLType, sBinding, control)
*
* @this {X86CPU}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "AX")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
X86CPU.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
X86CPU.prototype.setBinding = function(sHTMLType, sBinding, control)
{
var fBound = false;
switch (sBinding) {
@ -1723,7 +1722,7 @@ X86CPU.prototype.setBinding = function(sHTMLClass, sHTMLType, sBinding, control)
fBound = true;
break;
default:
fBound = CPU.prototype.setBinding.call(this, sHTMLClass, sHTMLType, sBinding, control);
fBound = CPU.prototype.setBinding.call(this, sHTMLType, sBinding, control);
break;
}
return fBound;

View file

@ -351,27 +351,27 @@
</xsl:if>
<xsl:choose>
<xsl:when test="@type = 'button'">
<button class="{$APPCLASS}-{@class}" style="-webkit-user-select:none;{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></button>
<button class="{$APPCLASS}-binding" style="-webkit-user-select:none;{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></button>
</xsl:when>
<xsl:when test="@type = 'list'">
<select class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}">
<select class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}">
<xsl:apply-templates select="disk|app|manifest" mode="component"/>
</select>
</xsl:when>
<xsl:when test="@type = 'text'">
<input class="{$APPCLASS}-{@class}" type="text" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" value="{.}" autocapitalize="off" autocorrect="off"/>
<input class="{$APPCLASS}-binding" type="text" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" value="{.}" autocapitalize="off" autocorrect="off"/>
</xsl:when>
<xsl:when test="@type = 'submit'">
<input class="{$APPCLASS}-{@class}" type="submit" style="{$border}{$fontsize}{$style}" data-value="{$type},{$binding}" value="{.}"/>
<input class="{$APPCLASS}-binding" type="submit" style="{$border}{$fontsize}{$style}" data-value="{$type},{$binding}" value="{.}"/>
</xsl:when>
<xsl:when test="@type = 'textarea'">
<textarea class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" readonly="readonly"> </textarea>
<textarea class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" readonly="readonly"> </textarea>
</xsl:when>
<xsl:when test="@type = 'heading'">
<div><xsl:value-of select="."/></div>
</xsl:when>
<xsl:when test="@type = 'file'">
<form class="{$APPCLASS}-{@class}" data-value="{$type},{$binding}">
<form class="{$APPCLASS}-binding" data-value="{$type},{$binding}">
<fieldset class="{$APPCLASS}-fieldset">
<input type="file"/>
<input type="submit" value="Load" disabled="true"/>
@ -379,7 +379,7 @@
</form>
</xsl:when>
<xsl:when test="@type = 'led'">
<div class="{$APPCLASS}-{@class} {$APPCLASS}-{@type}" data-value="{$type},{$binding}"><xsl:value-of select="."/></div>
<div class="{$APPCLASS}-binding {$APPCLASS}-{@type}" data-value="{$type},{$binding}"><xsl:value-of select="."/></div>
</xsl:when>
<xsl:when test="@type = 'separator'">
<hr/>
@ -391,7 +391,7 @@
<div style="clear:both"> </div>
</xsl:when>
<xsl:otherwise>
<div class="{$APPCLASS}-{@class}{$subClass} {$APPCLASS}-{@type}" style="-webkit-user-select:none;{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></div>
<div class="{$APPCLASS}-binding{$subClass} {$APPCLASS}-{@type}" style="-webkit-user-select:none;{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></div>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="@label">

View file

@ -189,10 +189,6 @@ Component.extend = function(o, p)
/**
* Component.subclass(superclass, subclass, methods, statics)
*
* TODO: Determine why every subclass created by this function ends up with a name prefix of "Component.subclass"
* in Chrome's call stack, rather than the (more logical) name of the subclass constructor. Is there a different
* design pattern I should be using that creates subclasses more to Chrome's liking?
*
* See: Flanagan, David (2011-04-18). JavaScript: The Definitive Guide: The Definitive Guide (Kindle Locations 9854-9903). OReilly Media - A. Kindle Edition (Example 9-11)
*
* @param {Object} superclass is the constructor of the superclass
@ -492,7 +488,7 @@ Component.bindExternalControl = function(component, sControl, sBinding, sType)
if (target) {
var eBinding = target.bindings[sControl];
if (eBinding) {
component.setBinding(null, null, sBinding, eBinding);
component.setBinding(null, sBinding, eBinding);
}
}
}
@ -527,11 +523,10 @@ Component.bindComponentControls = function(component, element, sAppClass)
var parms;
sClass = aClasses[iClass];
switch (sClass) {
case sAppClass + "-input":
case sAppClass + "-output":
case sAppClass + "-binding":
parms = Component.getComponentParms(control);
if (parms && parms['binding']) {
component.setBinding(sClass, parms['type'], parms['binding'], control);
component.setBinding(parms['type'], parms['binding'], control);
} else {
Component.log('Component.bindComponentControls("' + component.toString() + '"): missing binding' + (parms? ' for ' + parms['type'] : ''), "warning");
}
@ -610,18 +605,17 @@ Component.prototype = {
return nMachine;
},
/**
* setBinding(sHTMLClass, sHTMLType, sBinding, control)
* setBinding(sHTMLType, sBinding, control)
*
* Component's setBinding() method is intended to be overridden by subclasses.
*
* @this {Component}
* @param {string|null} sHTMLClass is the class of the HTML control (eg, "input", "output")
* @param {string|null} sHTMLType is the type of the HTML control (eg, "button", "list", "text", "submit", "textarea", "canvas")
* @param {string} sBinding is the value of the 'binding' parameter stored in the HTML control's "data-value" attribute (eg, "reset")
* @param {Object} control is the HTML control DOM object (eg, HTMLButtonElement)
* @return {boolean} true if binding was successful, false if unrecognized binding request
*/
setBinding: function(sHTMLClass, sHTMLType, sBinding, control) {
setBinding: function(sHTMLType, sBinding, control) {
switch (sBinding) {
case "clear":
if (!this.bindings[sBinding]) {

View file

@ -6,11 +6,11 @@ function y(a){if(w)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t("An unexpect
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.Hd=this.id.substr(0,b),this.Gd=this.id.substr(b+1)):this.Gd=this.id;this[a]=c;this.o={Ub:!1,Ta:!1,vc:!1,C:!1,Ua:!1};this.xc=null;this.o.Ua=!1;this.s={};this.m=null;A[A.length]=this}var ka=void 0;if(window){ka||(ka=window.location.search.substr(1));for(var la,ma=/\+/g,na=/([^&=]+)=?([^&]*)/g;la=na.exec(ka);)la[1].replace(ma," "),la[2].replace(ma," ")}
function oa(){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=oa()}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 D(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("({"+a+"})")}catch(c){t(c.message+" ("+a+")")}return b}window&&!window.document.ELEMENT_NODE&&(window.document.ELEMENT_NODE=1);
function E(a,b){for(var c=F(b.parentNode,"c1pjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,g=0;g<e.length;g++){var h=e[g];if(h.nodeType===window.document.ELEMENT_NODE){var k=h.getAttribute("class");if(k)for(var l=k.split(" "),m=0;m<l.length;m++)switch(k=l[m],k){case "c1pjs-input":case "c1pjs-output":(m=D(h))&&m.binding&&a.J(k,m.type,m.binding,h),m=l.length}}}}
function E(a,b){for(var c=F(b.parentNode,"c1pjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,g=0;g<e.length;g++){var h=e[g];if(h.nodeType===window.document.ELEMENT_NODE){var k=h.getAttribute("class");if(k)for(var l=k.split(" "),m=0;m<l.length;m++)switch(k=l[m],k){case "c1pjs-binding":(k=D(h))&&k.binding&&a.J(k.type,k.binding,h),m=l.length}}}}
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},J:function(a,b,c,d){switch(c){case "clear":return this.s[c]||(this.s[c]=d,d.onclick=function(a){return function(){a.s.print&&(a.s.print.value="")}}(this)),!0;case "print":return this.s[c]||(this.tc=this.s[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.Yb=function(a,
z.prototype={toString:function(){return this.name?this.name:this.id||this.type},J:function(a,b,c){switch(b){case "clear":return this.s[b]||(this.s[b]=c,c.onclick=function(a){return function(){a.s.print&&(a.s.print.value="")}}(this)),!0;case "print":return this.s[b]||(this.tc=this.s[b]=c,c.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}}(c),this.Yb=function(a,
b,c){this.i(a,"notice",c)}),!0;default:return!1}},log:function(){},i:function(){},status:function(a){this.i(this.Gd+": "+a)},Yb:function(a,b){b||t(a)},Q:function(a){this.o.Ua||(this.o.Ub=!1!==a,this.o.Ub&&(this.name&&this.log("ready"),a=this.xc,this.xc=null,a&&a()))}};function H(a,b){if(a.o.vc)return a.o.Ta&&(a.o.Ta=!1),a.o.vc=!1;if(a.o.Ua)return a.i(a.toString()+" error"),!1;a.o.Ta=b;return a.o.Ta}function I(a,b){a.o.Ta&&(b?a.o.vc=!0:void 0===b&&a.i(a.toString()+" busy"));return a.o.Ta}
function J(a,b){b&&(a.o.Ub?b():a.xc=b);return a.o.Ub}function K(a,b){a.o.Ua=!0;a.Yb("Fatal error: "+b)}function pa(a){z.call(this,"C1PPanel",a);this.o.C=!1}B(pa);pa.prototype.J=function(a,b,c,d){return this.O&&this.O.J(a,b,c,d)||this.l&&this.l.J(a,b,c,d)||this.H&&this.H.J(a,b,c,d)||this.m&&this.m.J(a,b,c,d)?!0:z.prototype.J.call(this,a,b,c,d)};pa.prototype.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.O=b,this.l=L(b,"cpu"),this.H=L(b,"keyboard"),this.m=L(b,"debugger"),qa())};
function J(a,b){b&&(a.o.Ub?b():a.xc=b);return a.o.Ub}function K(a,b){a.o.Ua=!0;a.Yb("Fatal error: "+b)}function pa(a){z.call(this,"C1PPanel",a);this.o.C=!1}B(pa);pa.prototype.J=function(a,b,c){return this.O&&this.O.J(a,b,c)||this.l&&this.l.J(a,b,c)||this.H&&this.H.J(a,b,c)||this.m&&this.m.J(a,b,c)?!0:z.prototype.J.call(this,a,b,c)};pa.prototype.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.O=b,this.l=L(b,"cpu"),this.H=L(b,"keyboard"),this.m=L(b,"debugger"),qa())};
function qa(){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 pa(e));E(g,d);a&&g.Q()}}x(qa);
function ra(a){z.call(this,"C1PCPU",a);sa(this);this.o.C=!1;this.o.ha=!1;this.Dd=a.autoStart;this.Ib=0;this.rd=1;this.Na=2;this.speed=this.Ib;this.qb=1E6;this.Dc=this.Fc=30;this.Cc=5;this.Rf=1;this.nb=8;this.xd=["Slow","Fast","Max"];this.Ff=["("+this.Rf+"Mhz)","(up to "+this.nb+"Mhz)","(unlimited)"];this.Da=[];this.ta=[];this.oc=65536;this.pc=0;this.Mb=65536;this.Nb=0;this.se=128;this.te=64;this.oe=16;this.qe=8;this.re=4;this.ue=2;this.pe=1;this.Bf=65532;this.Hb=32;this.hc=2;this.yf=0;this.qd=1;this.u=
[this.Eg,this.Yh,this.Pi,this.j,this.j,this.$h,this.ug,this.j,this.ci,this.Xh,this.tg,this.j,this.j,this.Uh,this.rg,this.j,this.Dg,this.Zh,this.j,this.j,this.j,this.ai,this.vg,this.j,this.Hg,this.Wh,this.j,this.j,this.j,this.Vh,this.sg,this.j,this.vh,this.ng,this.j,this.j,this.Ag,this.pg,this.ii,this.j,this.ei,this.mg,this.hi,this.j,this.zg,this.jg,this.fi,this.j,this.Bg,this.og,this.j,this.j,this.j,this.qg,this.ji,this.j,this.zi,this.lg,this.j,this.j,this.j,this.kg,this.gi,this.j,this.pi,this.jh,
@ -19,7 +19,7 @@ this.Hi,this.Ki,this.j,this.eh,this.j,this.Ti,this.j,this.Mi,this.Ci,this.Ji,thi
this.j,this.sh,this.Og,this.dh,this.j,this.Wg,this.Lg,this.Zg,this.j,this.Cg,this.Qg,this.j,this.j,this.j,this.Sg,this.bh,this.j,this.Ig,this.Ng,this.j,this.j,this.j,this.Mg,this.$g,this.j,this.Ug,this.ee,this.j,this.j,this.Vg,this.ge,this.ph,this.j,this.rh,this.de,this.Th,this.j,this.Tg,this.ae,this.nh,this.j,this.yg,this.fe,this.j,this.j,this.j,this.he,this.qh,this.j,this.Ai,this.ce,this.j,this.j,this.j,this.be,this.oh,this.j];this.Ef=[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]}B(ra);f=ra.prototype;
f.reset=function(a){this.o.ha&&this.U();sa(this);var b=this.Bf;this.d=this.a[b]|this.a[b+1]<<8;this.o.Ua=!1;this.m?this.m.reset():a&&(!0===this.Dd||null===this.Dd&&!this.m&&void 0===this.s.run)&&this.za()};
f.J=function(a,b,c,d){a=!1;switch(c){case "run":this.s[c]=d;d.onclick=function(a){return function(){a.o.ha?a.U():a.za()}}(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.s[c]=d;a=!0;break;case "setSpeed":this.s[c]=d,d.onclick=function(a){return function(){M(a,a.speed>=a.Na?a.Ib:a.speed+1,!0)}}(this),a=!0}return a};
f.J=function(a,b,c){a=!1;switch(b){case "run":this.s[b]=c;c.onclick=function(a){return function(){a.o.ha?a.U():a.za()}}(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.s[b]=c;a=!0;break;case "setSpeed":this.s[b]=c,c.onclick=function(a){return function(){M(a,a.speed>=a.Na?a.Ib:a.speed+1,!0)}}(this),a=!0}return a};
f.W=function(a,b,c){this.a=a;this.aa=b;this.sc=c-b+1;this.$a=this.aa+this.sc;this.aa?t("unsupported CPU address buffer offset ("+this.aa+")"):this.Q()};f.ca=function(a,b){if(a&&!this.o.C){this.O=b;(this.m=L(b,"debugger"))&&this.m.Pf();var c=L(b,"video");c&&(this.uc=function(a){return function(){ta(a)}}(c),this.X=function(a){return function(){a.X()}}(c));this.o.C=!0;this.reset(!0);this.update()}};function ua(a,b,c,d,e){0>va(a.Da,b,c,d,e)&&(a.oc>b&&(a.oc=b),a.pc<c&&(a.pc=c),a.Da.push([b,c,d,e]))}
function wa(a,b,c){for(var d=0;d<a.Da.length;d++)b>=a.Da[d][0]&&b<=a.Da[d][1]&&a.Da[d][3].call(a.Da[d][2],b,c)}function N(a,b,c,d,e){0>va(a.ta,b,c,d,e)&&(a.Mb>b&&(a.Mb=b),a.Nb<c&&(a.Nb=c),a.ta.push([b,c,d,e]))}function xa(a,b,c){for(var d=0;d<a.ta.length;d++)b>=a.ta[d][0]&&b<=a.ta[d][1]&&a.ta[d][3].call(a.ta[d][2],b,c)}function va(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.s.setSpeed&&(a.s.setSpeed.innerHTML=a.xd[2<=b?0:b+1]),a.i("running at "+a.xd[b].toLowerCase()+" speed "+a.Ff[b]),c&&a.X());a.Za=0;a.Jd=r();ya(a)}f.uc=function(){};f.X=function(){};function O(a,b,c,d){void 0!==a.s[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.s[b].innerHTML=c.slice(c.length-d).toUpperCase())}
@ -86,8 +86,8 @@ this.k[57]=26112;this.k[41]=26112+this.p;this.k[48]=25856;this.k[58]=25600;this.
this.k[84]=17408+this.p;this.k[121]=17152;this.k[89]=17152+this.p;this.k[117]=16896;this.k[85]=16896+this.p;this.k[105]=16640;this.k[73]=16640+this.p;this.k[115]=14080;this.k[83]=14080+this.p;this.k[100]=13824;this.k[68]=13824+this.p;this.k[102]=13568;this.k[70]=13568+this.p;this.k[103]=13312;this.k[71]=13312+this.p;this.k[104]=13056;this.k[72]=13056+this.p;this.k[106]=12800;this.k[74]=12800+this.p;this.k[107]=12544;this.k[75]=12544+this.p;this.k[91]=12544+this.p;this.k[120]=9984;this.k[88]=9984+
this.p;this.k[99]=9728;this.k[67]=9728+this.p;this.k[118]=9472;this.k[86]=9472+this.p;this.k[98]=9216;this.k[66]=9216+this.p;this.k[110]=8960;this.k[78]=8960+this.p;this.k[94]=8960+this.p;this.k[109]=8704;this.k[77]=8704+this.p;this.k[93]=8704+this.p;this.k[44]=8448;this.k[60]=8448+this.p;this.k[113]=5888;this.k[81]=5888+this.p;this.k[97]=5632;this.k[65]=5632+this.p;this.k[122]=5376;this.k[90]=5376+this.p;this.k[32]=5120;this.k[47]=4864;this.k[63]=4864+this.p;this.k[59]=4608;this.k[43]=4608+this.p;
this.k[112]=4352;this.k[80]=4352+this.p;this.k[64]=4352+this.p;this.k[this.Ab]=1536;this.k[this.Mc]=1280;this.k[this.p]=512;this.k[this.dc]=256;this.k[this.Nc]=0;this.reset()}B(Ja);f=Ja.prototype;f.reset=function(){this.vb(this.zc);this.B=this.zb;this.zd=0;this.N=[this.zb,0,0,0,0,0,0,0];this.lc=[];if(this.ea)for(var a in this.ea)isNaN(a)||this.ea[a]&&clearTimeout(this.ea[a]);this.ea=[];this.ie=this.ya=0;this.Ad=-1;this.yd=this.N;this.Md=this.Ec=0;this.Ka=""};
f.J=function(a,b,c,d){if(void 0===this.s[c])switch(c){case "keyDown":return this.s[c]=d,d.onkeydown=function(a){return function(b){return Ka(a,b,!0)}}(this),!0;case "keyPress":return this.s[c]=d,d.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.Ka="";a.B&a.bb?a.B&=~a.bb:c=!La(a,b);a.m&&T(a.m,a.m.Aa)&&a.m.message("keyPress("+n(b)+"): "+(c?"pass":"consume"));return c}}(this),!0;case "keyUp":return this.s[c]=d,d.onkeyup=function(a){return function(b){return Ka(a,
b,!1)}}(this),!0;case "break":return this.s[c]=d,d.onclick=function(a){return function(){a.O&&a.O.reset(!0)}}(this),!0;default:if(void 0!==this.Oa[c])return this.s[c]=d,d.onclick=function(a,b,c){return function(){a.l&&a.l.X();return!La(a,c)}}(this,c,this.Oa[c]),!0}return!1};f.W=function(a,b,c,d){this.a=a;this.Rd=b;this.Gf=c-b+1;this.ag=this.Rd+this.Gf;d&&(this.l=d,N(d,b,c,this,this.P));this.Q()};f.vb=function(a){this.sb=a;this.rc=255;600!=this.sb&&(this.rc=0,this.i("updated keyboard model: "+this.sb))};
f.J=function(a,b,c){if(void 0===this.s[b])switch(b){case "keyDown":return this.s[b]=c,c.onkeydown=function(a){return function(b){return Ka(a,b,!0)}}(this),!0;case "keyPress":return this.s[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.Ka="";a.B&a.bb?a.B&=~a.bb:c=!La(a,b);a.m&&T(a.m,a.m.Aa)&&a.m.message("keyPress("+n(b)+"): "+(c?"pass":"consume"));return c}}(this),!0;case "keyUp":return this.s[b]=c,c.onkeyup=function(a){return function(b){return Ka(a,
b,!1)}}(this),!0;case "break":return this.s[b]=c,c.onclick=function(a){return function(){a.O&&a.O.reset(!0)}}(this),!0;default:if(void 0!==this.Oa[b])return this.s[b]=c,c.onclick=function(a,b,c){return function(){a.l&&a.l.X();return!La(a,c)}}(this,b,this.Oa[b]),!0}return!1};f.W=function(a,b,c,d){this.a=a;this.Rd=b;this.Gf=c-b+1;this.ag=this.Rd+this.Gf;d&&(this.l=d,N(d,b,c,this,this.P));this.Q()};f.vb=function(a){this.sb=a;this.rc=255;600!=this.sb&&(this.rc=0,this.i("updated keyboard model: "+this.sb))};
f.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.O=b,this.m=L(b,"debugger"))};f.Q=function(){this.wc=(this.Of=u("iOS"))||u("Android");this.m&&T(this.m,this.m.Aa)&&this.m.message("mobile keyboard support: "+(this.wc?"true":"false")+" ("+window.navigator.userAgent+")");z.prototype.Q.call(this)};function Ma(a,b){var c=b?a.Vf:a.Uf;a.l&&a.l.va&&(c/=a.l.va);return c}
function Na(a,b){!a.ya||void 0!==b&&b==a.ya||(a.m&&T(a.m,a.m.Aa)&&a.m.message("autoClear("+n(a.ya)+")"),clearTimeout(a.ea[a.ya]),U(a,a.ya,!1,a.uf))}function V(a,b,c){a.Ka=b;Oa(a,c||a.Sf)}function Oa(a,b){if(0<a.Ka.length){var c=a.Ka.charCodeAt(0);10==c&&(c=13);65<=c&&90>=c&&(c+=32);a.Ka=a.Ka.substr(1);La(a,c)}0<a.Ka.length&&setTimeout(function(a){return function(){Oa(a,b)}}(a),b)}
function Ka(a,b,c){var d,e=!c;b=b.keyCode;c&&(a.ie=b);b==a.p-a.T?(a.B&=~a.xb,c&&(a.B|=a.xb),b+=a.T,e=!1):b==a.dc-a.T?(a.B&=~a.yb,c&&(a.B|=a.yb),b+=a.T,e=!1):b==a.Ab-a.T?(a.B&=~a.wb,c&&(a.B|=a.wb),b+=a.T,e=!1):b==a.Nc-a.T?(c=!c,a.B&=~a.zb,c&&(a.B|=a.zb),b+=a.T,e=!1):b==a.De?(a.B&=~a.bb,c&&(a.B|=a.bb),e=!1,d=!0):d=b==a.Ie?e=!1:b==a.Sc||b==a.Rc?c?!La(a,b):!1:!0;e&&(a.B&=~a.bb,a.wc||b!=a.ie||Na(a));void 0===d&&(d=!U(a,b,c,a.vf));a.m&&T(a.m,a.m.Aa)&&a.m.message("key"+(c?"Down":"Up")+"("+n(b)+"): "+(d?
@ -95,17 +95,17 @@ function Ka(a,b,c){var d,e=!c;b=b.keyCode;c&&(a.ie=b);b==a.p-a.T?(a.B&=~a.xb,c&&
function U(a,b,c,d){var e=!1;c||(a.ea[b]=null,a.ya==b&&(a.ya=0));var g=0,h=a.k[b];void 0===h&&(1<=b&&26>=b&&(b+=64,g=a.Ab),h=a.k[b]);void 0!==h&&(b=h>>12,e=h>>8&15,g||(g=h&255),c?(a.N[b]|=1<<e,a.N[0]=g==a.Ab?a.N[0]|a.wb:g==a.p?a.N[0]|a.xb:g==a.dc?a.N[0]|a.yb:a.N[0]&~a.cc):(a.N[b]&=~(1<<e),a.N[0]&=~a.cc,a.N[0]|=a.B&a.cc),c=d==a.pd&&!a.lc.length,a.lc.push(a.N.slice()),a.bc(c),e=!0);return e}f.I=function(){};f.P=function(a){var b=this.l.I(a);this.zd=b^this.rc;this.Ec++;this.bc(!1,a,b)};
f.bc=function(a,b){var c=Ea(this.l);if(!a)if(this.l.speed==this.l.Na)a=void 0!==b&&32<=this.Ec;else{var d=c-this.Md;a=0>d||d>=this.Xf}a&&(d=this.lc.shift(),void 0!==d&&(this.yd=d),this.Ec=0,this.Md=c);for(d=c=0;8>d;d++)this.zd&1<<d&&(c|=this.yd[d]);c^=this.rc;if(void 0!==b)this.a[b]=c;else if(b=this.Rd,c!=this.Ad)for(d=b;d<this.ag;d++)this.a[d]=c;this.Ad=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 Ja(d);E(d,c)}});
function Pa(a,b,c,d){z.call(this,"C1PVideo",a);this.zc=a.model;this.Nd=a.charCols;this.Od=a.charRows;this.Lf=a.screenWidth;this.Mf=a.screenHeight;this.Pb=a.charWidth;this.Qb=a.charHeight;Qa(this);this.Rb=b;this.Jf=c;this.mb=d;this.kb=56832}B(Pa);f=Pa.prototype;f.reset=function(a){this.vb(this.zc);if(this.a)for(var b=this.Zb;b<this.Ic;b++)this.a[b]=a?Math.floor(256*Math.random()):32};
f.J=function(a,b,c,d){switch(c){case "refresh":return this.s[c]=d,d.onclick=function(a){return function(){Ra(a);ta(a)}}(this),!0}return!1};f.W=function(a,b,c,d){this.a=a;this.Zb=b;this.If=c-b+1;this.Ic=this.Zb+this.If;d&&(this.l=d,void 0!==this.kb&&(ua(d,this.kb,this.kb,this,this.I),N(d,this.kb,this.kb,this,this.P)));this.reset(!0)};
f.J=function(a,b,c){switch(b){case "refresh":return this.s[b]=c,c.onclick=function(a){return function(){Ra(a);ta(a)}}(this),!0}return!1};f.W=function(a,b,c,d){this.a=a;this.Zb=b;this.If=c-b+1;this.Ic=this.Zb+this.If;d&&(this.l=d,void 0!==this.kb&&(ua(d,this.kb,this.kb,this,this.I),N(d,this.kb,this.kb,this,this.P)));this.reset(!0)};
function Qa(a,b,c,d,e){a.Wb=void 0!==b?b:a.Nd;a.Yf=void 0!==c?c:a.Od;a.Sa=a.Wb*a.Yf;a.Ic=a.Zb+a.Sa;a.Fd=void 0!==d?d:0;a.Pd=void 0!==e?e:c;a.Bd=Math.floor(a.Lf/a.Wb);a.Cd=Math.floor(a.Mf/a.Pd)}f.X=function(){this.Rb.focus()};f.vb=function(a){this.sb=a;600==this.sb?(Qa(this,this.Nd,this.Od,4,24),1024==this.Sa&&this.l&&(this.Lb=this.Ic+this.Sa-1,N(this.l,this.Lb,this.Lb,this,this.ne))):(this.i("updated video model: "+this.sb),Qa(this,64,32));Ra(this);ta(this)};
f.ca=function(a,b){if(a&&!this.o.C&&J(this)){if(this.o.C=!0,this.m=L(b,"debugger"),this.H=L(b,"keyboard"))this.H.J("input","canvas","keyDown",this.Rb),this.H.J("input","canvas","keyPress",this.Rb),this.H.J("input","canvas","keyUp",this.Rb)}else!a&&this.o.C&&(this.o.C=!1)};f.Q=function(){this.Pb||(this.Pb=Math.floor(this.mb.width/16));this.Qb||(this.Qb=Math.floor(this.mb.height/16));z.prototype.Q.call(this)};
f.ca=function(a,b){if(a&&!this.o.C&&J(this)){if(this.o.C=!0,this.m=L(b,"debugger"),this.H=L(b,"keyboard"))this.H.J("canvas","keyDown",this.Rb),this.H.J("canvas","keyPress",this.Rb),this.H.J("canvas","keyUp",this.Rb)}else!a&&this.o.C&&(this.o.C=!1)};f.Q=function(){this.Pb||(this.Pb=Math.floor(this.mb.width/16));this.Qb||(this.Qb=Math.floor(this.mb.height/16));z.prototype.Q.call(this)};
f.I=function(a,b){var c=this.l.I(a);void 0!==b&&this.m&&S(this.m,this,a,b,this.m.Bb);this.l.P(a,c&127|(Math.floor(Ea(this.l)/8333)&1?128:0))};f.P=function(a,b){void 0!==b&&this.m&&S(this.m,this,a,b,this.m.Bb)};
f.ne=function(a,b){if(void 0!==b){this.m&&S(this.m,this,a,b,this.m.Bb,!0);this.vb(540);this.H&&this.H.vb(542);var c=this.l,d=c.ta,e=[],g=va(d,this.Lb,this.Lb,this,this.ne);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.Mb=e[2],c.Nb=e[3])}};function Ra(a){a.mc=Array(a.Sa);for(var b=0;b<=a.Sa;b++)a.mc[b]=-1}
function ta(a){var b=0;if(a.o.C)for(;b<a.Sa;){var c=a.a[a.Zb+b];if(a.mc[b]!=c){var d=Math.floor(b/a.Wb);if(d>=a.Fd&&(d-=a.Fd,d<a.Pd)){var e=c*a.Pb;a.Jf.drawImage(a.mb,e%a.mb.width,Math.floor(e/a.mb.width)*a.Qb,a.Pb,a.Qb,b%a.Wb*a.Bd,d*a.Cd,a.Bd,a.Cd)}a.mc[b]=c}b++}}
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 Pa(d,e,h,g);g.onload=function(a){return function(){a.Q()}}(e,d.charSet);g.src=d.charSet;E(e,c)}});
function Sa(a){z.call(this,"C1PSerialPort",a);this.o.C=!1;this.Ed=a.demo;this.Af=0;this.zf=1;this.reset()}B(Sa);f=Sa.prototype;f.reset=function(){if(2!=this.Ga){this.Ob=this.qc=0;var a=1;if(this.Hd){var b=this.Hd.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.ab='10 PRINT "HELLO OSI #'+a+'"\n';this.Ga=this.Vb=0}};f.start=function(){this.H&&this.Ed&&(V(this.H," C\n\n",3E3),setTimeout(function(a){return function(){a.Ga=1;V(a.H,"LOAD\n")}}(this),12E3));this.Ed=!1};
f.J=function(a,b,c,d){var e=this;switch(c){case "listSerial":return this.s[c]=d,!0;case "loadSerial":return this.s[c]=d,d.onclick=function(){e.s.listSerial&&s(e.s.listSerial.value,e,e.Id)},!0;case "mountSerial":return window&&"FileReader"in window?(this.s[c]=d,d.addEventListener("change",function(){var a=d.children[0];a.children[1].disabled=0==a.children[0].files.length}),d.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){e.Id(b.name,c.result.toString(),
0)};c.readAsText(b);return!1}):d.parentNode.removeChild(d),!0}return!1};f.W=function(a,b,c,d){this.a=a;this.Gc=b;this.Hf=c-b+1;this.Sd=this.Gc+this.Hf;if(this.l=d)ua(d,b,c,this,this.I),N(d,b,c,this,this.P);this.Q()};f.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.O=b,this.H=L(b,"keyboard"),this.m=L(b,"debugger"))};
f.J=function(a,b,c){var d=this;switch(b){case "listSerial":return this.s[b]=c,!0;case "loadSerial":return this.s[b]=c,c.onclick=function(){d.s.listSerial&&s(d.s.listSerial.value,d,d.Id)},!0;case "mountSerial":return window&&"FileReader"in window?(this.s[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=0==a.children[0].files.length}),c.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){d.Id(b.name,c.result.toString(),0)};
c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};f.W=function(a,b,c,d){this.a=a;this.Gc=b;this.Hf=c-b+1;this.Sd=this.Gc+this.Hf;if(this.l=d)ua(d,b,c,this,this.I),N(d,b,c,this,this.P);this.Q()};f.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.O=b,this.H=L(b,"keyboard"),this.m=L(b,"debugger"))};
f.Id=function(a,b,c){b?(this.ab=b,this.Ga=this.Vb=0,this.O&&this.H&&this.l.o.ha?(this.i("auto-loading "+a),this.l.X(),"."!=this.ab.charAt(0)?(this.Ga=1,V(this.H,"NEW\nLOAD\n")):(this.Ga=2,this.O.reset(!0),V(this.H,"ML"))):this.i(a+" ready to load")):this.i(a+" load error ("+c+")")};f.I=function(a,b){void 0!==b&&(a&1?Ta(this):this.ab&&!this.Vb&&Ta(this))};f.P=function(a,b){void 0!==b&&this.m&&S(this.m,this,a,b,this.m.Tc,!0)};
function Ta(a){if(void 0!==a.ab){a.qc=0;a.Ob=0;if(a.Vb<a.ab.length){var b=a.ab.charCodeAt(a.Vb++);10==b&&(b=13);a.qc=b;a.Ob=1}else 1==a.Ga&&a.H&&V(a.H," \nRUN\n"),a.Ga=0;a.bc()}}f.bc=function(){var a;for(a=this.Gc+0;a<this.Sd;a+=2)this.a[a]=this.Ob?this.zf:this.Af;for(a=this.Gc+1;a<this.Sd;a+=2)this.a[a]=this.Ob?this.qc: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 Sa(d);E(d,c)}});
function Ua(a){z.call(this,"C1PDiskController",a);this.o.C=!1;this.rf=this.nd=0;this.kd=1;this.sf=this.od=2;this.ld=3;this.Oc=128;this.Pc=64;this.La=4;this.mf=1;this.fd=2;this.lf=4;this.of=8;this.nf=16;this.gd=32;this.ed=64;this.kc=128;this.jd=4;this.hd=8;this.pf=32;this.tf=this.qf=16;this.md=17;this.Qc=3;this.ud=1;this.vd=2;this.td=4;this.sd=8;this.Ae=0;this.Je=40;this.reset(!0)}B(Ua);f=Ua.prototype;
@ -114,7 +114,7 @@ function Va(a){a.je={t:a.ed,ba:function(){},update:function(a){return function(c
{t:0,ba:function(){},update:function(a){return function(c){void 0!==c&&(this.t=c&~(a.Oc|a.Pc));W(a,a.kd,this);a.Ia.update();a.je.update()}}(a)};a.ke={t:255,ba:function(){},update:function(a){return function(c){void 0!==c&&(this.t=c);a.ac.t&a.La||W(a,a.sf,this)}}(a)};a.tb={t:255,ba:function(){},update:function(a){return function(c){void 0===c?c=a.tb.t:Wa(a,a.Ia.t,c);if(0<=a.L&&a.L<a.V.length){var d=a.V[a.L];d.Kb.length&&a.tb.t&a.hd&&!(c&a.hd)&&(c&a.jd?d.ia--:d.ia++,a.m&&T(a.m,a.m.Ma)&&a.m.message("stepping "+
(c&a.jd?"down":"up")+" to track "+d.ia),d.ia>=d.Qd&&(d.ia=d.Qd),0>d.ia&&(d.ia=0),d.Ya=20,a.Ia.update(a.Ia.t|a.kc),Xa(a))}this.t=c;a.ac.t&a.La&&W(a,a.od,this)}}(a)};a.ac={t:0,ba:function(){},update:function(a){return function(c){void 0!==c&&(this.t=c&~(a.Oc|a.Pc));W(a,a.ld,this);a.tb.update();a.ke.update()}}(a)};a.Wi={t:0,ba:function(){},update:function(a){return function(c){void 0!==c&&((c&a.Qc)==a.Qc&&(a.Ja.t=a.vd|a.td|a.sd),this.t=c);a.Ja.update()}}(a)};a.Ja={t:a.vd|a.td|a.sd,ba:function(){},update:function(a){return function(c){void 0===
c&&(c=a.Ja.t);c&=~a.ud;0<=a.L&&0<=a.V[a.L].Wa&&(c|=a.ud);this.t=c;W(a,a.tf,this)}}(a)};a.Kc={t:0,ba:function(a){return function(){Ya(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.t=c);W(a,a.md,this)}}(a)};a.Xi={t:0,ba:function(){},update:function(){return function(){}}(a)}}
f.J=function(a,b,c,d){switch(c){case "listDisk":return this.s[c]=d,!0;case "loadDisk":return this.s[c]=d,d.onclick=function(a){return function(){if(a.s.listDisk){var b=a.s.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.Qf)}}}(this),!0}return!1};f.W=function(a,b,c,d){this.a=a;this.nc=b;if(this.l=d)ua(d,b,c,this,this.I),N(d,b,c,this,this.P);this.Q()};
f.J=function(a,b,c){switch(b){case "listDisk":return this.s[b]=c,!0;case "loadDisk":return this.s[b]=c,c.onclick=function(a){return function(){if(a.s.listDisk){var b=a.s.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.Qf)}}}(this),!0}return!1};f.W=function(a,b,c,d){this.a=a;this.nc=b;if(this.l=d)ua(d,b,c,this,this.I),N(d,b,c,this,this.P);this.Q()};
f.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.m=L(b,"debugger"))};
f.Qf=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.V[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){Za(c,g,"trackSig");$a(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]);Za(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].me=c;this.m&&T(this.m,this.m.Ma)&&this.m.message("track "+e+": "+c.length+" bytes")}this.V[0].Kb=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: "+
@ -130,7 +130,7 @@ this.wd=["HLT","MSG"];cb(this,!0);this.Z=[[this.Le],[this.qa,1,this.ja],[this.hc
[],[this.Ba,1,this.ja],[],[],[this.jc,1,this.F],[this.Ba,1,this.F],[this.ic,1,this.F],[],[this.Se],[],[this.hf],[],[this.jc,2,this.D],[this.Ba,2,this.D],[this.ic,2,this.D],[],[this.Wc,1,this.Y],[this.Ba,1,this.ka],[],[],[this.jc,1,this.K],[this.Ba,1,this.K],[this.ic,1,this.Vc],[],[this.kf],[this.Ba,2,this.da],[this.jf],[],[],[this.Ba,2,this.M],[],[],[this.fb,1,this.S],[this.pa,1,this.ja],[this.eb,1,this.S],[],[this.fb,1,this.F],[this.pa,1,this.F],[this.eb,1,this.F],[],[this.ff],[this.pa,1,this.S],
[this.ef],[],[this.fb,2,this.D],[this.pa,2,this.D],[this.eb,2,this.D],[],[this.Xc,1,this.Y],[this.pa,1,this.ka],[],[],[this.fb,1,this.K],[this.pa,1,this.K],[this.eb,1,this.Vc],[],[this.Pe],[this.pa,2,this.da],[this.gf],[],[this.fb,2,this.M],[this.pa,2,this.M],[this.eb,2,this.da],[],[this.gc,1,this.S],[this.na,1,this.ja],[],[],[this.gc,1,this.F],[this.na,1,this.F],[this.Eb,1,this.F],[],[this.Ue],[this.na,1,this.S],[this.Re],[],[this.gc,2,this.D],[this.na,2,this.D],[this.Eb,2,this.D],[],[this.ad,1,
this.Y],[this.na,1,this.ka],[],[],[],[this.na,1,this.K],[this.Eb,1,this.K],[],[this.Ne],[this.na,2,this.da],[],[],[],[this.na,2,this.M],[this.Eb,2,this.M],[],[this.fc,1,this.S],[this.ra,1,this.ja],[],[],[this.fc,1,this.F],[this.ra,1,this.F],[this.Fb,1,this.F],[],[this.Te],[this.ra,1,this.S],[this.Ve],[],[this.fc,2,this.D],[this.ra,2,this.D],[this.Fb,2,this.D],[],[this.Yc,1,this.Y],[this.ra,1,this.ka],[],[],[],[this.ra,1,this.K],[this.Fb,1,this.K],[],[this.cf],[this.ra,2,this.da],[],[],[],[this.ra,
2,this.M],[this.Fb,2,this.M],[]]}B(bb);f=bb.prototype;f.J=function(a,b,c,d){var e=this;switch(c){case "debugInput":return this.Sb=this.s[c]=d,this.Sb.focus(),d.onkeypress=function(a,b){return function(d){13==d.keyCode&&(c=b.value,b.value="",db(a,c))}}(this,d),!0;case "debugEnter":return this.s[c]=d,fa(d,function(){return e.Sb?(c=e.Sb.value,db(e,c),!0):!1}),!0;case "step":return this.s[c]=d,fa(d,function(a){var b=!1;I(e,!0)||(H(e,!0),b=e.step(a?1:0),H(e,!1));return b}),!0}return!1};
2,this.M],[this.Fb,2,this.M],[]]}B(bb);f=bb.prototype;f.J=function(a,b,c){var d=this;switch(b){case "debugInput":return this.Sb=this.s[b]=c,this.Sb.focus(),c.onkeypress=function(a,c){return function(d){13==d.keyCode&&(b=c.value,c.value="",db(a,b))}}(this,c),!0;case "debugEnter":return this.s[b]=c,fa(c,function(){return d.Sb?(b=d.Sb.value,db(d,b),!0):!1}),!0;case "step":return this.s[b]=c,fa(c,function(a){var b=!1;I(d,!0)||(H(d,!0),b=d.step(a?1:0),H(d,!1));return b}),!0}return!1};
f.W=function(a,b,c){this.a=a;this.aa=b;this.sc=c-b+1;this.$a=this.aa+this.sc;this.Q()};f.ca=function(a,b){a&&!this.o.C&&(this.o.C=!0,this.l=L(b,"cpu"))};f.X=function(){this.Sb.focus()};
function cb(a,b){a.Cb=0;a.S=1;a.M=2;a.da=3;a.Db=4;a.Uc=5;a.K=6;a.Vc=7;a.ja=8;a.ka=9;a.D=10;a.F=11;a.Y=a.Db;var c="",d,e;if(b)for(a.fa="A #$nn $nnnn,X $nnnn,Y $nnnn ($nnnn) $nn,X $nn,Y ($nn,X) ($nn),Y $nnnn $nn".split(" "),d=0;d<a.fa.length;d++)e=a.fa[d],c+="("+e.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.fa="A nn [nnnn+X] [nnnn+Y] nnnn [nnnn] [nn+X] [nn+Y] [[nn+X]] [[nn]+Y] [nnnn] [nn]".split(" "),
d=0;d<a.fa.length;d++)e=a.fa[d],c+="("+e.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.Yi=new RegExp(c);a.Df=[a.Gb,a.Hb,a.bd,a.$c,a.cd,a.dd,a.Wc,a.Xc,a.ad,a.Yc]}f.U=function(){this.l.U()};function T(a,b){return(a.Ha&b)===b}function S(a,b,c,d,e,g,h){(a.Ha&e)==e&&(e=a.l.I(c),a.message(b.id+"."+(g?"setByte":"getByte")+"("+p(c)+")"+(void 0!==d?" @"+p(d):"")+": "+(h?h+"=":"")+n(e)))}
@ -157,7 +157,7 @@ case "h":a.U();break;case "o":if(void 0===c[1]||"?"==c[1])a.i("\noption commands
case "modern":cb(a,!1);a.i("modern syntax enabled");break;case "msg":e=0;void 0!==c[2]&&("all"==c[2]?e=255:void 0!==a.Jb[c[2]]&&(e=a.Jb[c[2]]),e&&("on"==c[3]?a.Ha|=e:"off"==c[3]&&(a.Ha&=~e)));for(d in a.Jb)if(void 0===c[2]||"all"==c[2]||c[2]==d)e=a.Jb[d],a.i(d+" messages: "+(a.Ha&e?"on":"off"));break;default:a.i("unknown option: "+e)}break;case "p":l=c[1];e=10;c=a.lb;d=a.Ea;if(void 0!==d){g=void 0===l?a.Zf: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.Ac=0,a.i(g+" instructions earlier:"));l=a.Ac?a.Ac:1;c-=g;for(0>c&&(c=d.length-1);e&&c!=a.lb;){h=d[c];if(0>h)break;a.i(lb(a,h,l++));++c==d.length&&(c=0);e--;g--}a.Zf=g;a.Ac=l}10==e&&a.i("no history available");break;case "r":gb(a,c);break;case "s":a.I(a.l.d)==a.l.Hb?(kb(a,a.l.d+3),a.Va=!0,a.za()||a.l.X()):nb(a);break;case "t":nb(a,c[1]);break;case "u":fb(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=F(window.document,"c1pjs","debugger"),b=0;b<a.length;b++){var c=a[b],d=D(c),d=new bb(d);E(d,c)}});function $(a,b){z.call(this,"C1PComputer",a);this.R=b}B($);$.prototype.reset=function(a){var b=null,c;for(c in this.R)for(var d=0;d<this.R[c].length;d++){var e=this.R[c][d];e&&e.reset&&(e.reset(),"cpu"==c&&(b=e))}b&&(b.update(),a&&b.za())};
$.prototype.start=function(){for(var a in this.R)if("cpu"!=a)for(var b=0;b<this.R[a].length;b++){var c=this.R[a][b];c&&c.start&&c.start()}};$.prototype.stop=function(a,b){for(var c in this.R)if("cpu"!=c)for(var d=0;d<this.R[c].length;d++){var e=this.R[c][d];e&&e.stop&&e.stop(a,b)}};$.prototype.J=function(a,b,c,d){switch(c){case "reset":return this.s[c]=d,d.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function L(a,b){return a.R[b]?a.R[b][0]:null}
$.prototype.start=function(){for(var a in this.R)if("cpu"!=a)for(var b=0;b<this.R[a].length;b++){var c=this.R[a][b];c&&c.start&&c.start()}};$.prototype.stop=function(a,b){for(var c in this.R)if("cpu"!=c)for(var d=0;d<this.R[c].length;d++){var e=this.R[c][d];e&&e.stop&&e.stop(a,b)}};$.prototype.J=function(a,b,c){switch(b){case "reset":return this.s[b]=c,c.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function L(a,b){return a.R[b]?a.R[b][0]:null}
function ob(a){var b=null,c;for(c in a.R)for(var d=0;d<a.R[c].length;d++){var e=a.R[c][d];if(e){if(!J(e)){J(e,function(a){return function(){ob(a)}}(a));return}"cpu"==c?b=e:e.ca&&e.ca(!0,a)}}a.Q();a.i("C1Pjs v1.16.0\nCopyright \u00a9 2012-2014 Jeff Parsons <Jeff@pcjs.org>");b&&b.ca(!0,a)}
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.W&&void 0!==q.start&&e.W(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.W&&e.W(h,k,l,g.cpu[0]);k=new $(d,g);if(l=C("panel",d.id))if(g.panel=[l],l.tc){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.Yb=l.Yb,e.i=l.i,e.tc=l.tc)}E(k,c);ob(k)}});var pb=0;function qb(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)):rb(k,a,b,c,d,e,g)})}

View file

@ -5,11 +5,11 @@ function x(a){if(u)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){r("An unexpect
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.fc=this.id.substr(0,b),this.ec=this.id.substr(b+1)):this.ec=this.id;this[a]=c;this.m={Pa:!1,ra:!1,mb:!1,B:!1,sa:!1};this.nb=null;this.m.sa=!1;this.p={};A[A.length]=this}var B=void 0;if(window){B||(B=window.location.search.substr(1));for(var D,fa=/\+/g,ga=/([^&=]+)=?([^&]*)/g;D=ga.exec(B);)D[1].replace(fa," "),D[2].replace(fa," ")}
function ha(){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=ha()}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}window&&!window.document.ELEMENT_NODE&&(window.document.ELEMENT_NODE=1);
function H(a,b){for(var c=I(b.parentNode,"c1pjs-control"),d=0;d<c.length;d++)for(var f=c[d].childNodes,g=0;g<f.length;g++){var k=f[g];if(k.nodeType===window.document.ELEMENT_NODE){var h=k.getAttribute("class");if(h)for(var l=h.split(" "),m=0;m<l.length;m++)switch(h=l[m],h){case "c1pjs-input":case "c1pjs-output":(m=G(k))&&m.binding&&a.I(h,m.type,m.binding,k),m=l.length}}}}
function H(a,b){for(var c=I(b.parentNode,"c1pjs-control"),d=0;d<c.length;d++)for(var f=c[d].childNodes,g=0;g<f.length;g++){var k=f[g];if(k.nodeType===window.document.ELEMENT_NODE){var h=k.getAttribute("class");if(h)for(var l=h.split(" "),m=0;m<l.length;m++)switch(h=l[m],h){case "c1pjs-binding":(h=G(k))&&h.binding&&a.I(h.type,h.binding,k),m=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}
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.p[c]||(this.p[c]=d,d.onclick=function(a){return function(){a.p.print&&(a.p.print.value="")}}(this)),!0;case "print":return this.p[c]||(this.kb=this.p[c]=d,d.value="",this.u=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.Ua=function(a,
z.prototype={toString:function(){return this.name?this.name:this.id||this.type},I:function(a,b,c){switch(b){case "clear":return this.p[b]||(this.p[b]=c,c.onclick=function(a){return function(){a.p.print&&(a.p.print.value="")}}(this)),!0;case "print":return this.p[b]||(this.kb=this.p[b]=c,c.value="",this.u=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,
b,c){this.u(a,"notice",c)}),!0;default:return!1}},log:function(){},u:function(){},status:function(a){this.u(this.ec+": "+a)},Ua:function(a,b){b||r(a)},K:function(a){this.m.sa||(this.m.Pa=!1!==a,this.m.Pa&&(this.name&&this.log("ready"),a=this.nb,this.nb=null,a&&a()))}};function ia(a,b){if(a.m.mb)return a.m.ra&&(a.m.ra=!1),a.m.mb=!1;if(a.m.sa)return a.u(a.toString()+" error"),!1;a.m.ra=b;return a.m.ra}function J(a,b){b&&(a.m.Pa?b():a.nb=b);return a.m.Pa}
function K(a,b){a.m.sa=!0;a.Ua("Fatal error: "+b)}function L(a){z.call(this,"C1PPanel",a);this.m.B=!1}E(L);L.prototype.I=function(a,b,c,d){return this.H&&this.H.I(a,b,c,d)||this.t&&this.t.I(a,b,c,d)||this.D&&this.D.I(a,b,c,d)?!0:z.prototype.I.call(this,a,b,c,d)};L.prototype.T=function(a,b){a&&!this.m.B&&(this.m.B=!0,this.H=b,this.t=M(b,"cpu"),this.D=M(b,"keyboard"),ja())};
function K(a,b){a.m.sa=!0;a.Ua("Fatal error: "+b)}function L(a){z.call(this,"C1PPanel",a);this.m.B=!1}E(L);L.prototype.I=function(a,b,c){return this.H&&this.H.I(a,b,c)||this.t&&this.t.I(a,b,c)||this.D&&this.D.I(a,b,c)?!0:z.prototype.I.call(this,a,b,c)};L.prototype.T=function(a,b){a&&!this.m.B&&(this.m.B=!0,this.H=b,this.t=M(b,"cpu"),this.D=M(b,"keyboard"),ja())};
function ja(){for(var a=!1,b=I(window.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 L(f));H(g,d);a&&g.K()}}w(ja);
function N(a){z.call(this,"C1PCPU",a);ka(this);this.m.B=!1;this.m.S=!1;this.ac=a.autoStart;this.bb=0;this.zd=1;this.pa=2;this.speed=this.bb;this.wa=1E6;this.sb=this.ub=30;this.rb=5;this.Pd=1;this.Ra=8;this.Vb=["Slow","Fast","Max"];this.Ed=["("+this.Pd+"Mhz)","(up to "+this.Ra+"Mhz)","(unlimited)"];this.Z=[];this.U=[];this.gb=65536;this.hb=0;this.Ja=65536;this.Ka=0;this.Rc=128;this.Sc=64;this.Nc=16;this.Pc=8;this.Qc=4;this.Tc=2;this.Oc=1;this.Cd=65532;this.xd=0;this.yd=1;this.r=[this.Ae,this.Uf,this.Lg,
this.i,this.i,this.Wf,this.qe,this.i,this.Zf,this.Tf,this.pe,this.i,this.i,this.Qf,this.ne,this.i,this.ze,this.Vf,this.i,this.i,this.i,this.Xf,this.re,this.i,this.De,this.Sf,this.i,this.i,this.i,this.Rf,this.oe,this.i,this.rf,this.je,this.i,this.i,this.we,this.le,this.eg,this.i,this.ag,this.ie,this.dg,this.i,this.ve,this.fe,this.bg,this.i,this.xe,this.ke,this.i,this.i,this.i,this.me,this.fg,this.i,this.vg,this.he,this.i,this.i,this.i,this.ge,this.cg,this.i,this.lg,this.ef,this.i,this.i,this.i,this.gf,
@ -18,7 +18,7 @@ this.i,this.Pg,this.i,this.Ig,this.yg,this.Fg,this.i,this.se,this.Cg,this.i,this
this.i,this.Se,this.He,this.Ve,this.i,this.ye,this.Me,this.i,this.i,this.i,this.Oe,this.Ye,this.i,this.Ee,this.Je,this.i,this.i,this.i,this.Ie,this.We,this.i,this.Qe,this.Ec,this.i,this.i,this.Re,this.Gc,this.lf,this.i,this.nf,this.Dc,this.Pf,this.i,this.Pe,this.Ac,this.jf,this.i,this.ue,this.Fc,this.i,this.i,this.i,this.Hc,this.mf,this.i,this.wg,this.Cc,this.i,this.i,this.i,this.Bc,this.kf,this.i];this.Dd=[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]}E(N);e=N.prototype;
e.reset=function(a){this.m.S&&O(this);ka(this);var b=this.Cd;this.d=this.a[b]|this.a[b+1]<<8;this.m.sa=!1;a&&(!0===this.ac||null===this.ac&&void 0===this.p.run)&&P(this)};
e.I=function(a,b,c,d){a=!1;switch(c){case "run":this.p[c]=d;d.onclick=function(a){return function(){a.m.S?O(a):P(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.p[c]=d;a=!0;break;case "setSpeed":this.p[c]=d,d.onclick=function(a){return function(){la(a,a.speed>=a.pa?a.bb:a.speed+1,!0)}}(this),a=!0}return a};
e.I=function(a,b,c){a=!1;switch(b){case "run":this.p[b]=c;c.onclick=function(a){return function(){a.m.S?O(a):P(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.p[b]=c;a=!0;break;case "setSpeed":this.p[b]=c,c.onclick=function(a){return function(){la(a,a.speed>=a.pa?a.bb:a.speed+1,!0)}}(this),a=!0}return a};
e.Q=function(a,b){this.a=a;(this.qc=b)?r("unsupported CPU address buffer offset ("+this.qc+")"):this.K()};e.T=function(a,b){if(a&&!this.m.B){this.H=b;var c=M(b,"video");c&&(this.lb=function(a){return function(){ma(a)}}(c),this.ea=function(a){return function(){a.ea()}}(c));this.m.B=!0;this.reset(!0);this.update()}};function na(a,b,c,d,f){0>oa(a.Z,b,c,d,f)&&(a.gb>b&&(a.gb=b),a.hb<c&&(a.hb=c),a.Z.push([b,c,d,f]))}
function Q(a,b,c,d,f){0>oa(a.U,b,c,d,f)&&(a.Ja>b&&(a.Ja=b),a.Ka<c&&(a.Ka=c),a.U.push([b,c,d,f]))}function oa(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 la(a,b,c){void 0!==b&&(a.speed=b,a.p.setSpeed&&(a.p.setSpeed.innerHTML=a.Vb[2<=b?0:b+1]),a.u("running at "+a.Vb[b].toLowerCase()+" speed "+a.Ed[b]),c&&a.ea());a.ma=0;a.hc=Date.now()||+new Date;pa(a)}e.lb=function(){};e.ea=function(){};
function R(a,b,c,d){void 0!==a.p[b]&&(void 0===d&&(d=1),c="0000"+c.toString(16),a.p[b].innerHTML=c.slice(c.length-d).toUpperCase())}function qa(a){R(a,"A",a.e,2);R(a,"X",a.k,2);R(a,"Y",a.n,2);var b=ra(a);R(a,"C",b&a.Oc?1:0);R(a,"Z",b&a.Tc?1:0);R(a,"I",b&a.Qc?1:0);R(a,"D",b&a.Pc?1:0);R(a,"B",b&a.Nc?1:0);R(a,"V",b&a.Sc?1:0);R(a,"N",b&a.Rc?1:0);R(a,"S",a.o,4);R(a,"PC",a.d,4);a.p.speed&&a.X&&(a.p.speed.innerHTML=a.X.toFixed(1)+"Mhz")}
@ -84,24 +84,24 @@ this.j[57]=26112;this.j[41]=26112+this.l;this.j[48]=25856;this.j[58]=25600;this.
this.j[84]=17408+this.l;this.j[121]=17152;this.j[89]=17152+this.l;this.j[117]=16896;this.j[85]=16896+this.l;this.j[105]=16640;this.j[73]=16640+this.l;this.j[115]=14080;this.j[83]=14080+this.l;this.j[100]=13824;this.j[68]=13824+this.l;this.j[102]=13568;this.j[70]=13568+this.l;this.j[103]=13312;this.j[71]=13312+this.l;this.j[104]=13056;this.j[72]=13056+this.l;this.j[106]=12800;this.j[74]=12800+this.l;this.j[107]=12544;this.j[75]=12544+this.l;this.j[91]=12544+this.l;this.j[120]=9984;this.j[88]=9984+
this.l;this.j[99]=9728;this.j[67]=9728+this.l;this.j[118]=9472;this.j[86]=9472+this.l;this.j[98]=9216;this.j[66]=9216+this.l;this.j[110]=8960;this.j[78]=8960+this.l;this.j[94]=8960+this.l;this.j[109]=8704;this.j[77]=8704+this.l;this.j[93]=8704+this.l;this.j[44]=8448;this.j[60]=8448+this.l;this.j[113]=5888;this.j[81]=5888+this.l;this.j[97]=5632;this.j[65]=5632+this.l;this.j[122]=5376;this.j[90]=5376+this.l;this.j[32]=5120;this.j[47]=4864;this.j[63]=4864+this.l;this.j[59]=4608;this.j[43]=4608+this.l;
this.j[112]=4352;this.j[80]=4352+this.l;this.j[64]=4352+this.l;this.j[this.Ga]=1536;this.j[this.Ab]=1280;this.j[this.l]=512;this.j[this.$a]=256;this.j[this.Bb]=0;this.reset()}E(xa);e=xa.prototype;e.reset=function(){this.Ba(this.pb);this.w=this.Fa;this.Xb=0;this.G=[this.Fa,0,0,0,0,0,0,0];this.cb=[];if(this.R)for(var a in this.R)isNaN(a)||this.R[a]&&clearTimeout(this.R[a]);this.R=[];this.Ic=this.aa=0;this.Yb=-1;this.Wb=this.G;this.kc=this.tb=0;this.da=""};
e.I=function(a,b,c,d){if(void 0===this.p[c])switch(c){case "keyDown":return this.p[c]=d,d.onkeydown=function(a){return function(b){return ya(a,b,!0)}}(this),!0;case "keyPress":return this.p[c]=d,d.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.da="";a.w&a.oa?a.w&=~a.oa:c=!V(a,b);return c}}(this),!0;case "keyUp":return this.p[c]=d,d.onkeyup=function(a){return function(b){return ya(a,b,!1)}}(this),!0;case "break":return this.p[c]=d,d.onclick=function(a){return function(){a.H&&
a.H.reset(!0)}}(this),!0;default:if(void 0!==this.ga[c])return this.p[c]=d,d.onclick=function(a,b,c){return function(){a.t&&a.t.ea();return!V(a,c)}}(this,c,this.ga[c]),!0}return!1};e.Q=function(a,b,c,d){this.a=a;this.pc=b;this.Fd=c-b+1;this.Xd=this.pc+this.Fd;d&&(this.t=d,Q(d,b,c,this,this.M));this.K()};e.Ba=function(a){this.ya=a;this.jb=255;600!=this.ya&&(this.jb=0,this.u("updated keyboard model: "+this.ya))};e.T=function(a,b){a&&!this.m.B&&(this.m.B=!0,this.H=b)};
e.I=function(a,b,c){if(void 0===this.p[b])switch(b){case "keyDown":return this.p[b]=c,c.onkeydown=function(a){return function(b){return ya(a,b,!0)}}(this),!0;case "keyPress":return this.p[b]=c,c.onkeypress=function(a){return function(b){var c=!0;b=b||window.event;b=b.which||b.keyCode;a.da="";a.w&a.oa?a.w&=~a.oa:c=!V(a,b);return c}}(this),!0;case "keyUp":return this.p[b]=c,c.onkeyup=function(a){return function(b){return ya(a,b,!1)}}(this),!0;case "break":return this.p[b]=c,c.onclick=function(a){return function(){a.H&&
a.H.reset(!0)}}(this),!0;default:if(void 0!==this.ga[b])return this.p[b]=c,c.onclick=function(a,b,c){return function(){a.t&&a.t.ea();return!V(a,c)}}(this,b,this.ga[b]),!0}return!1};e.Q=function(a,b,c,d){this.a=a;this.pc=b;this.Fd=c-b+1;this.Xd=this.pc+this.Fd;d&&(this.t=d,Q(d,b,c,this,this.M));this.K()};e.Ba=function(a){this.ya=a;this.jb=255;600!=this.ya&&(this.jb=0,this.u("updated keyboard model: "+this.ya))};e.T=function(a,b){a&&!this.m.B&&(this.m.B=!0,this.H=b)};
e.K=function(){this.cc=(this.Nd=s("iOS"))||s("Android");z.prototype.K.call(this)};function za(a,b){var c=b?a.Td:a.Sd;a.t&&a.t.X&&(c/=a.t.X);return c}function Aa(a,b){!a.aa||void 0!==b&&b==a.aa||(clearTimeout(a.R[a.aa]),W(a,a.aa,!1,a.td))}function X(a,b,c){a.da=b;Ba(a,c||a.Qd)}function Ba(a,b){if(0<a.da.length){var c=a.da.charCodeAt(0);10==c&&(c=13);65<=c&&90>=c&&(c+=32);a.da=a.da.substr(1);V(a,c)}0<a.da.length&&setTimeout(function(a){return function(){Ba(a,b)}}(a),b)}
function ya(a,b,c){var d,f=!c;b=b.keyCode;c&&(a.Ic=b);b==a.l-a.L?(a.w&=~a.Da,c&&(a.w|=a.Da),b+=a.L,f=!1):b==a.$a-a.L?(a.w&=~a.Ea,c&&(a.w|=a.Ea),b+=a.L,f=!1):b==a.Ga-a.L?(a.w&=~a.Ca,c&&(a.w|=a.Ca),b+=a.L,f=!1):b==a.Bb-a.L?(c=!c,a.w&=~a.Fa,c&&(a.w|=a.Fa),b+=a.L,f=!1):b==a.bd?(a.w&=~a.oa,c&&(a.w|=a.oa),f=!1,d=!0):d=b==a.gd?f=!1:b==a.Gb||b==a.Fb?c?!V(a,b):!1:!0;f&&(a.w&=~a.oa,a.cc||b!=a.Ic||Aa(a));void 0===d&&(d=!W(a,b,c,a.ud));return d}
function V(a,b){var c=!1;b==a.zb?a.H&&(a.H.reset(!0),c=!0):(a.cc&&65<=b&&90>=b&&(b+=32),Aa(a,b),W(a,b,!0,a.Qb)&&(a.t.speed==a.t.pa?W(a,b,!1,a.vd):(c=!1,a.R[b]&&(clearTimeout(a.R[b]),c=!0),c=za(a,c),a.R[a.aa=b]=setTimeout(function(a){return function(){W(a,b,!1,a.wd)}}(a),c)),c=!0));return c}
function W(a,b,c,d){var f=!1;c||(a.R[b]=null,a.aa==b&&(a.aa=0));var g=0,k=a.j[b];void 0===k&&(1<=b&&26>=b&&(b+=64,g=a.Ga),k=a.j[b]);void 0!==k&&(b=k>>12,f=k>>8&15,g||(g=k&255),c?(a.G[b]|=1<<f,a.G[0]=g==a.Ga?a.G[0]|a.Ca:g==a.l?a.G[0]|a.Da:g==a.$a?a.G[0]|a.Ea:a.G[0]&~a.Za):(a.G[b]&=~(1<<f),a.G[0]&=~a.Za,a.G[0]|=a.w&a.Za),c=d==a.Qb&&!a.cb.length,a.cb.push(a.G.slice()),a.Ya(c),f=!0);return f}e.O=function(){};e.M=function(a){var b=this.t.O(a);this.Xb=b^this.jb;this.tb++;this.Ya(!1,a,b)};
e.Ya=function(a,b){var c=ua(this.t);if(!a)if(this.t.speed==this.t.pa)a=void 0!==b&&32<=this.tb;else{var d=c-this.kc;a=0>d||d>=this.Vd}a&&(d=this.cb.shift(),void 0!==d&&(this.Wb=d),this.tb=0,this.kc=c);for(d=c=0;8>d;d++)this.Xb&1<<d&&(c|=this.Wb[d]);c^=this.jb;if(void 0!==b)this.a[b]=c;else if(b=this.pc,c!=this.Yb)for(d=b;d<this.Xd;d++)this.a[d]=c;this.Yb=c};w(function(){for(var a=I(window.document,"c1pjs","keyboard"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new xa(d);H(d,c)}});
function Ca(a,b,c,d){z.call(this,"C1PVideo",a);this.pb=a.model;this.lc=a.charCols;this.mc=a.charRows;this.Kd=a.screenWidth;this.Ld=a.screenHeight;this.Ma=a.charWidth;this.Na=a.charHeight;Da(this);this.Oa=b;this.Id=c;this.ta=d;this.qa=56832}E(Ca);e=Ca.prototype;e.reset=function(a){this.Ba(this.pb);if(this.a)for(var b=this.Va;b<this.xb;b++)this.a[b]=a?Math.floor(256*Math.random()):32};
e.I=function(a,b,c,d){switch(c){case "refresh":return this.p[c]=d,d.onclick=function(a){return function(){Ea(a);ma(a)}}(this),!0}return!1};e.Q=function(a,b,c,d){this.a=a;this.Va=b;this.Hd=c-b+1;this.xb=this.Va+this.Hd;d&&(this.t=d,void 0!==this.qa&&(na(d,this.qa,this.qa,this,this.O),Q(d,this.qa,this.qa,this,this.M)));this.reset(!0)};
e.I=function(a,b,c){switch(b){case "refresh":return this.p[b]=c,c.onclick=function(a){return function(){Ea(a);ma(a)}}(this),!0}return!1};e.Q=function(a,b,c,d){this.a=a;this.Va=b;this.Hd=c-b+1;this.xb=this.Va+this.Hd;d&&(this.t=d,void 0!==this.qa&&(na(d,this.qa,this.qa,this,this.O),Q(d,this.qa,this.qa,this,this.M)));this.reset(!0)};
function Da(a,b,c,d,f){a.Sa=void 0!==b?b:a.lc;a.Wd=void 0!==c?c:a.mc;a.ia=a.Sa*a.Wd;a.xb=a.Va+a.ia;a.dc=void 0!==d?d:0;a.nc=void 0!==f?f:c;a.Zb=Math.floor(a.Kd/a.Sa);a.$b=Math.floor(a.Ld/a.nc)}e.ea=function(){this.Oa.focus()};e.Ba=function(a){this.ya=a;600==this.ya?(Da(this,this.lc,this.mc,4,24),1024==this.ia&&this.t&&(this.Ia=this.xb+this.ia-1,Q(this.t,this.Ia,this.Ia,this,this.Mc))):(this.u("updated video model: "+this.ya),Da(this,64,32));Ea(this);ma(this)};
e.T=function(a,b){if(a&&!this.m.B&&J(this)){if(this.m.B=!0,this.D=M(b,"keyboard"))this.D.I("input","canvas","keyDown",this.Oa),this.D.I("input","canvas","keyPress",this.Oa),this.D.I("input","canvas","keyUp",this.Oa)}else!a&&this.m.B&&(this.m.B=!1)};e.K=function(){this.Ma||(this.Ma=Math.floor(this.ta.width/16));this.Na||(this.Na=Math.floor(this.ta.height/16));z.prototype.K.call(this)};e.O=function(a){var b=this.t.O(a);this.t.M(a,b&127|(Math.floor(ua(this.t)/8333)&1?128:0))};e.M=function(){};
e.T=function(a,b){if(a&&!this.m.B&&J(this)){if(this.m.B=!0,this.D=M(b,"keyboard"))this.D.I("canvas","keyDown",this.Oa),this.D.I("canvas","keyPress",this.Oa),this.D.I("canvas","keyUp",this.Oa)}else!a&&this.m.B&&(this.m.B=!1)};e.K=function(){this.Ma||(this.Ma=Math.floor(this.ta.width/16));this.Na||(this.Na=Math.floor(this.ta.height/16));z.prototype.K.call(this)};e.O=function(a){var b=this.t.O(a);this.t.M(a,b&127|(Math.floor(ua(this.t)/8333)&1?128:0))};e.M=function(){};
e.Mc=function(a,b){if(void 0!==b){this.Ba(540);this.D&&this.D.Ba(542);var c=this.t,d=c.U,f=[],g=oa(d,this.Ia,this.Ia,this,this.Mc);if(0<=g){f.push(d[g][0]);f.push(d[g][1]);d.splice(g,1);for(var k=65536,h=0,g=0;g<d.length;g++)k>d[g][0]&&(k=d[g][0]),h<d[g][1]&&(h=d[g][1]);f.push(k);f.push(h)}4==f.length&&(c.Ja=f[2],c.Ka=f[3])}};function Ea(a){a.eb=Array(a.ia);for(var b=0;b<=a.ia;b++)a.eb[b]=-1}
function ma(a){var b=0;if(a.m.B)for(;b<a.ia;){var c=a.a[a.Va+b];if(a.eb[b]!=c){var d=Math.floor(b/a.Sa);if(d>=a.dc&&(d-=a.dc,d<a.nc)){var f=c*a.Ma;a.Id.drawImage(a.ta,f%a.ta.width,Math.floor(f/a.ta.width)*a.Na,a.Ma,a.Na,b%a.Sa*a.Zb,d*a.$b,a.Zb,a.$b)}a.eb[b]=c}b++}}
w(function(){for(var a=I(window.document,"c1pjs","video"),b=0;b<a.length;b++){var c=a[b],d=G(c),f=window.document.createElement("canvas");if(void 0===f){c.innerHTML="<br/>Missing &lt;canvas&gt; support; try a new web browser.";break}f.setAttribute("class","c1pjs-canvas");f.setAttribute("width",d.screenWidth);f.setAttribute("height",d.screenHeight);f.setAttribute("contenteditable","true");f.setAttribute("autocapitalize","off");f.setAttribute("autocorrect","off");f.style.backgroundColor=d.screenColor;
f.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(f.style.height=(c.clientWidth*d.screenHeight/d.screenWidth|0)+"px",c.onresize=function(a,b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,f,d.screenWidth,d.screenHeight));c.appendChild(f);var g=new Image,k=f.getContext("2d"),f=new Ca(d,f,k,g);g.onload=function(a){return function(){a.K()}}(f,d.charSet);g.src=d.charSet;H(f,c)}});
function Fa(a){z.call(this,"C1PSerialPort",a);this.m.B=!1;this.bc=a.demo;this.Bd=0;this.Ad=1;this.reset()}E(Fa);e=Fa.prototype;e.reset=function(){if(2!=this.$){this.La=this.ib=0;var a=1;if(this.fc){var b=this.fc.match(/\d+/);null!==b&&(a=parseInt(b[0],10))}this.na='10 PRINT "HELLO OSI #'+a+'"\n';this.$=this.Qa=0}};e.start=function(){this.D&&this.bc&&(X(this.D," C\n\n",3E3),setTimeout(function(a){return function(){a.$=1;X(a.D,"LOAD\n")}}(this),12E3));this.bc=!1};
e.I=function(a,b,c,d){var f=this;switch(c){case "listSerial":return this.p[c]=d,!0;case "loadSerial":return this.p[c]=d,d.onclick=function(){f.p.listSerial&&q(f.p.listSerial.value,f,f.gc)},!0;case "mountSerial":return window&&"FileReader"in window?(this.p[c]=d,d.addEventListener("change",function(){var a=d.children[0];a.children[1].disabled=0==a.children[0].files.length}),d.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){f.gc(b.name,c.result.toString(),
0)};c.readAsText(b);return!1}):d.parentNode.removeChild(d),!0}return!1};e.Q=function(a,b,c,d){this.a=a;this.vb=b;this.Gd=c-b+1;this.rc=this.vb+this.Gd;if(this.t=d)na(d,b,c,this,this.O),Q(d,b,c,this,this.M);this.K()};e.T=function(a,b){a&&!this.m.B&&(this.m.B=!0,this.H=b,this.D=M(b,"keyboard"))};
e.I=function(a,b,c){var d=this;switch(b){case "listSerial":return this.p[b]=c,!0;case "loadSerial":return this.p[b]=c,c.onclick=function(){d.p.listSerial&&q(d.p.listSerial.value,d,d.gc)},!0;case "mountSerial":return window&&"FileReader"in window?(this.p[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=0==a.children[0].files.length}),c.onsubmit=function(a){var b=a.currentTarget[1].files[0],c=new FileReader;c.onload=function(){d.gc(b.name,c.result.toString(),0)};
c.readAsText(b);return!1}):c.parentNode.removeChild(c),!0}return!1};e.Q=function(a,b,c,d){this.a=a;this.vb=b;this.Gd=c-b+1;this.rc=this.vb+this.Gd;if(this.t=d)na(d,b,c,this,this.O),Q(d,b,c,this,this.M);this.K()};e.T=function(a,b){a&&!this.m.B&&(this.m.B=!0,this.H=b,this.D=M(b,"keyboard"))};
e.gc=function(a,b,c){b?(this.na=b,this.$=this.Qa=0,this.H&&this.D&&this.t.m.S?(this.u("auto-loading "+a),this.t.ea(),"."!=this.na.charAt(0)?(this.$=1,X(this.D,"NEW\nLOAD\n")):(this.$=2,this.H.reset(!0),X(this.D,"ML"))):this.u(a+" ready to load")):this.u(a+" load error ("+c+")")};e.O=function(a,b){void 0!==b&&(a&1?Ga(this):this.na&&!this.Qa&&Ga(this))};e.M=function(){};
function Ga(a){if(void 0!==a.na){a.ib=0;a.La=0;if(a.Qa<a.na.length){var b=a.na.charCodeAt(a.Qa++);10==b&&(b=13);a.ib=b;a.La=1}else 1==a.$&&a.D&&X(a.D," \nRUN\n"),a.$=0;a.Ya()}}e.Ya=function(){var a;for(a=this.vb+0;a<this.rc;a+=2)this.a[a]=this.La?this.Ad:this.Bd;for(a=this.vb+1;a<this.rc;a+=2)this.a[a]=this.La?this.ib:0};w(function(){for(var a=I(window.document,"c1pjs","serial"),b=0;b<a.length;b++){var c=a[b],d=G(c),d=new Fa(d);H(d,c)}});
function Ha(a){z.call(this,"C1PDiskController",a);this.m.B=!1;this.qd=this.Ob=0;this.Lb=1;this.rd=this.Pb=2;this.Mb=3;this.Cb=128;this.Db=64;this.fa=4;this.kd=1;this.Ib=2;this.jd=4;this.md=8;this.ld=16;this.Jb=32;this.Hb=64;this.ab=128;this.od=4;this.Kb=8;this.nd=32;this.sd=this.pd=16;this.Nb=17;this.Eb=3;this.Tb=1;this.Ub=2;this.Sb=4;this.Rb=8;this.Zc=0;this.hd=40;this.reset(!0)}E(Ha);e=Ha.prototype;
@ -110,14 +110,14 @@ function Ia(a){a.Jc={q:a.Hb,P:function(){},update:function(a){return function(c)
P:function(){},update:function(a){return function(c){void 0!==c&&(this.q=c&~(a.Cb|a.Db));Y(a,a.Lb,this);a.ba.update();a.Jc.update()}}(a)};a.Kc={q:255,P:function(){},update:function(a){return function(c){void 0!==c&&(this.q=c);a.Xa.q&a.fa||Y(a,a.rd,this)}}(a)};a.za={q:255,P:function(){},update:function(a){return function(c){void 0===c?c=a.za.q:Ja(a,a.ba.q,c);if(0<=a.F&&a.F<a.N.length){var d=a.N[a.F];d.Ha.length&&a.za.q&a.Kb&&!(c&a.Kb)&&(c&a.od?d.W--:d.W++,d.W>=d.oc&&(d.W=d.oc),0>d.W&&(d.W=0),d.la=
20,a.ba.update(a.ba.q|a.ab),Ka(a))}this.q=c;a.Xa.q&a.fa&&Y(a,a.Pb,this)}}(a)};a.Xa={q:0,P:function(){},update:function(a){return function(c){void 0!==c&&(this.q=c&~(a.Cb|a.Db));Y(a,a.Mb,this);a.za.update();a.Kc.update()}}(a)};a.Sg={q:0,P:function(){},update:function(a){return function(c){void 0!==c&&((c&a.Eb)==a.Eb&&(a.ca.q=a.Ub|a.Sb|a.Rb),this.q=c);a.ca.update()}}(a)};a.ca={q:a.Ub|a.Sb|a.Rb,P:function(){},update:function(a){return function(c){void 0===c&&(c=a.ca.q);c&=~a.Tb;0<=a.F&&0<=a.N[a.F].ja&&
(c|=a.Tb);this.q=c;Y(a,a.sd,this)}}(a)};a.yb={q:0,P:function(a){return function(){La(a)}}(a),update:function(a){return function(c){void 0!==c&&(this.q=c);Y(a,a.Nb,this)}}(a)};a.Tg={q:0,P:function(){},update:function(){return function(){}}(a)}}
e.I=function(a,b,c,d){switch(c){case "listDisk":return this.p[c]=d,!0;case "loadDisk":return this.p[c]=d,d.onclick=function(a){return function(){if(a.p.listDisk){var b=a.p.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.u("loading "+aa(b)+"...");q(c,a,a.Od)}}}(this),!0}return!1};e.Q=function(a,b,c,d){this.a=a;this.fb=b;if(this.t=d)na(d,b,c,this,this.O),Q(d,b,c,this,this.M);this.K()};e.T=function(a){a&&!this.m.B&&(this.m.B=!0)};
e.I=function(a,b,c){switch(b){case "listDisk":return this.p[b]=c,!0;case "loadDisk":return this.p[b]=c,c.onclick=function(a){return function(){if(a.p.listDisk){var b=a.p.listDisk.value,c=b;".json"!=b.substr(b.length-5)&&(c="http://"+window.location.host+"/api/v1/dump?disk="+b);a.u("loading "+aa(b)+"...");q(c,a,a.Od)}}}(this),!0}return!1};e.Q=function(a,b,c,d){this.a=a;this.fb=b;if(this.t=d)na(d,b,c,this,this.O),Q(d,b,c,this,this.M);this.K()};e.T=function(a){a&&!this.m.B&&(this.m.B=!0)};
e.Od=function(a,b,c){if(c)this.u("disk load error ("+c+")");else{c=[];this.u("mounting "+a+"...");try{if(c=eval("("+b+")"),c.length)if(c[0].length){var d=c[0];if(void 0===d[0].trackNum)this.u("data error: "+d[0]);else if(this.N[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){Ma(c,g,"trackSig");Na(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]);Ma(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].Lc=c}this.N[0].Ha=d;this.u("mount of "+a+" complete")}else this.u("no available drives")}else this.u("no tracks: "+a);else this.u("no data: "+a)}catch(C){this.u("disk data error: "+C.message)}}};
function Na(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 Ma(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 Oa(a,b,c){b&=63;16>b?b&=3:32>b&&(b&=17);switch(b){case a.Ob:a=a.Wa.q&a.fa?a.ba:a.Jc;break;case a.Lb:a=a.Wa;break;case a.Pb:a=a.Xa.q&a.fa?a.za:a.Kc;break;case a.Mb:a=a.Xa;break;case a.pd:a=c?a.Sg:a.ca;break;case a.Nb:a=a.yb;break;default:a=a.Tg}return a}e.O=function(a,b){void 0!==b&&Oa(this,a-this.fb,!1).P()};e.M=function(a,b){if(void 0!==b){var c=this.t.O(a);Oa(this,a-this.fb,!0).update(c)}};
function Ja(a,b,c){var d=-1;void 0!==b&&void 0!==c&&(d=0,c&a.nd||(d|=2),a.ba.q&a.Hb||(d|=1));a.F!=d&&(a.F=d,a.ca.update())}function Ka(a){0<=a.F&&(a.N[a.F].ja=-1,a.yb.update(255),a.ca.update())}function La(a){var b=null;if(0<=a.F){var b=a.N[a.F],c=b.Ha[b.W];void 0!==c&&(0<=b.ja&&b.ja<c.Lc.length?(b.la=100,b=c.Lc[b.ja++],a.yb.update(b),a.ca.update()):(b.la=10,Ka(a)))}}function Y(a,b,c){a.t.M(b+a.fb,c.q)}
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 Ha(d);H(d,c)}});function $(a,b){z.call(this,"C1PComputer",a);this.J=b}E($);$.prototype.reset=function(a){var b=null,c;for(c in this.J)for(var d=0;d<this.J[c].length;d++){var f=this.J[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.J)if("cpu"!=a)for(var b=0;b<this.J[a].length;b++){var c=this.J[a][b];c&&c.start&&c.start()}};
$.prototype.stop=function(a,b){for(var c in this.J)if("cpu"!=c)for(var d=0;d<this.J[c].length;d++){var f=this.J[c][d];f&&f.stop&&f.stop(a,b)}};$.prototype.I=function(a,b,c,d){switch(c){case "reset":return this.p[c]=d,d.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function M(a,b){return a.J[b]?a.J[b][0]:null}
$.prototype.stop=function(a,b){for(var c in this.J)if("cpu"!=c)for(var d=0;d<this.J[c].length;d++){var f=this.J[c][d];f&&f.stop&&f.stop(a,b)}};$.prototype.I=function(a,b,c){switch(b){case "reset":return this.p[b]=c,c.onclick=function(a){return function(){a.reset()}}(this),!0}return!1};function M(a,b){return a.J[b]?a.J[b][0]:null}
function Pa(a){var b=null,c;for(c in a.J)for(var d=0;d<a.J[c].length;d++){var f=a.J[c][d];if(f){if(!J(f)){J(f,function(a){return function(){Pa(a)}}(a));return}"cpu"==c?b=f:f.T&&f.T(!0,a)}}a.K();a.u("C1Pjs v1.16.0\nCopyright \u00a9 2012-2014 Jeff Parsons <Jeff@pcjs.org>");b&&b.T(!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 C=n.type;void 0===g[C]&&(g[C]=[]);g[C].push(f);f.Q&&void 0!==n.start&&f.Q(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.Q&&f.Q(k,h,l,g.cpu[0]);h=new $(d,g);if(l=F("panel",d.id))if(g.panel=[l],l.kb){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.Ua=l.Ua,f.u=l.u,f.kb=l.kb)}H(h,c);Pa(h)}});var Qa=0;function Ra(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)):Sa(h,a,b,c,d,f,g)})}

View file

@ -265,27 +265,27 @@
</xsl:if>
<xsl:choose>
<xsl:when test="@type = 'button'">
<button class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></button>
<button class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></button>
</xsl:when>
<xsl:when test="@type = 'list'">
<select class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}">
<select class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}">
<xsl:apply-templates select="item" mode="component"/>
</select>
</xsl:when>
<xsl:when test="@type = 'text'">
<input class="{$APPCLASS}-{@class}" type="text" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" value="" autocapitalize="off" autocorrect="off"/>
<input class="{$APPCLASS}-binding" type="text" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" value="" autocapitalize="off" autocorrect="off"/>
</xsl:when>
<xsl:when test="@type = 'submit'">
<input class="{$APPCLASS}-{@class}" type="submit" style="{$border}{$fontsize}{$style}" data-value="{$type},{$binding}" value="{.}"/>
<input class="{$APPCLASS}-binding" type="submit" style="{$border}{$fontsize}{$style}" data-value="{$type},{$binding}" value="{.}"/>
</xsl:when>
<xsl:when test="@type = 'textarea'">
<textarea class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" readonly="readonly"></textarea>
<textarea class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" readonly="readonly"></textarea>
</xsl:when>
<xsl:when test="@type = 'heading'">
<div><xsl:value-of select="."/></div>
</xsl:when>
<xsl:when test="@type = 'file'">
<form class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}">
<form class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}">
<fieldset class="{$APPCLASS}-fieldset">
<input type="file"/>
<input type="submit" value="Load" disabled="true"/>
@ -299,7 +299,7 @@
<div style="clear:both"></div><br/>
</xsl:when>
<xsl:otherwise>
<div class="{$APPCLASS}-{@class}{$subclass}" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></div>
<div class="{$APPCLASS}-binding{$subclass}" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></div>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="@label">

View file

@ -350,27 +350,27 @@
</xsl:if>
<xsl:choose>
<xsl:when test="@type = 'button'">
<button class="{$APPCLASS}-{@class}" style="-webkit-user-select:none;{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></button>
<button class="{$APPCLASS}-binding" style="-webkit-user-select:none;{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></button>
</xsl:when>
<xsl:when test="@type = 'list'">
<select class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}">
<select class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}">
<xsl:apply-templates select="disk|app|manifest" mode="component"/>
</select>
</xsl:when>
<xsl:when test="@type = 'text'">
<input class="{$APPCLASS}-{@class}" type="text" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" value="{.}" autocapitalize="off" autocorrect="off"/>
<input class="{$APPCLASS}-binding" type="text" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" value="{.}" autocapitalize="off" autocorrect="off"/>
</xsl:when>
<xsl:when test="@type = 'submit'">
<input class="{$APPCLASS}-{@class}" type="submit" style="{$border}{$fontsize}{$style}" data-value="{$type},{$binding}" value="{.}"/>
<input class="{$APPCLASS}-binding" type="submit" style="{$border}{$fontsize}{$style}" data-value="{$type},{$binding}" value="{.}"/>
</xsl:when>
<xsl:when test="@type = 'textarea'">
<textarea class="{$APPCLASS}-{@class}" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" readonly="readonly"> </textarea>
<textarea class="{$APPCLASS}-binding" style="{$border}{$width}{$height}{$style}" data-value="{$type},{$binding}" readonly="readonly"> </textarea>
</xsl:when>
<xsl:when test="@type = 'heading'">
<div><xsl:value-of select="."/></div>
</xsl:when>
<xsl:when test="@type = 'file'">
<form class="{$APPCLASS}-{@class}" data-value="{$type},{$binding}">
<form class="{$APPCLASS}-binding" data-value="{$type},{$binding}">
<fieldset class="{$APPCLASS}-fieldset">
<input type="file"/>
<input type="submit" value="Load" disabled="true"/>
@ -378,7 +378,7 @@
</form>
</xsl:when>
<xsl:when test="@type = 'led'">
<div class="{$APPCLASS}-{@class} {$APPCLASS}-{@type}" data-value="{$type},{$binding}"><xsl:value-of select="."/></div>
<div class="{$APPCLASS}-binding {$APPCLASS}-{@type}" data-value="{$type},{$binding}"><xsl:value-of select="."/></div>
</xsl:when>
<xsl:when test="@type = 'separator'">
<hr/>
@ -390,7 +390,7 @@
<div style="clear:both"> </div>
</xsl:when>
<xsl:otherwise>
<div class="{$APPCLASS}-{@class}{$subClass} {$APPCLASS}-{@type}" style="-webkit-user-select:none;{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></div>
<div class="{$APPCLASS}-binding{$subClass} {$APPCLASS}-{@type}" style="-webkit-user-select:none;{$border}{$width}{$height}{$fontsize}{$style}" data-value="{$type},{$binding}"><xsl:apply-templates/></div>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="@label">

View file

@ -13,13 +13,13 @@ function z(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.na
if(window){Na||(Na=window.location.search.substr(1));for(var Pa,Sa=/\+/g,Ta=/([^&=]+)=?([^&]*)/g;Pa=Ta.exec(Na);)Oa[decodeURIComponent(Pa[1].replace(Sa," "))]=decodeURIComponent(Pa[2].replace(Sa," "))}function Ua(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 A(a,b){b.prototype=Ua(a.prototype)}var La=[];
function Va(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<La.length;b++){var d=La[b];a&&d.id.indexOf(a)||c.push(d)}return c}function Wa(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<La.length;c++)if(La[c].id===a)return La[c]}return null}
function Xa(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<La.length;d++)if(c)c==La[d]&&(c=null);else if(!(a!=La[d].type||b&&La[d].id.indexOf(b)))return La[d]}return null}function C(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("({"+a+"})")}catch(c){x(c.message+" ("+a+")")}return b}window&&!window.document.ELEMENT_NODE&&(window.document.ELEMENT_NODE=1);
function Za(a,b){for(var c=D(b.parentNode,"pcjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var g=e[f];if(g.nodeType===window.document.ELEMENT_NODE){var h=g.getAttribute("class");if(h)for(var l=h.split(" "),n=0;n<l.length;n++)switch(h=l[n],h){case "pcjs-input":case "pcjs-output":(n=C(g))&&n.binding&&a.Db(h,n.type,n.binding,g),n=l.length}}}}
function Za(a,b){for(var c=D(b.parentNode,"pcjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var g=e[f];if(g.nodeType===window.document.ELEMENT_NODE){var h=g.getAttribute("class");if(h)for(var l=h.split(" "),n=0;n<l.length;n++)switch(h=l[n],h){case "pcjs-binding":(h=C(g))&&h.binding&&a.Db(h.type,h.binding,g),n=l.length}}}}
function D(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},Db:function(a,b,c,d){switch(c){case "clear":return this.wa[c]||(this.wa[c]=d,d.onclick=function(a){return function(){a.wa.print&&(a.wa.print.value="")}}(this)),!0;case "print":return this.wa[c]||(this.$f=this.wa[c]=d,d.value="",this.da=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.Ja=
function(a,b,c){this.da(a,"notice",c)}),!0;default:return!1}},log:function(){},da:function(){},status:function(a){this.da(this.yh+": "+a)},Ja:function(a,b){b||x(a)},Ua:function(a){this.qa.ad||(this.qa.th=!1!==a,this.qa.th&&(this.name&&this.log("ready"),a=this.Hi,this.Hi=null,a&&a()))},$b:function(){return this.qa.Qb=!0},Zb:function(a,b){b&&(this.qa.Qb=!1);return!0}};
function $a(a,b){if(a.qa.zi)return a.qa.Ec&&(a.qa.Ec=!1),a.qa.zi=!1;if(a.qa.ad)return a.da(a.toString()+" error"),!1;a.qa.Ec=b;return a.qa.Ec}function ab(a,b){a.qa.Ec&&(b?a.qa.zi=!0:void 0===b&&a.da(a.toString()+" busy"));return a.qa.Ec}function bb(a,b){b&&(a.qa.th?b():a.Hi=b);return a.qa.th}function cb(a,b){a.qa.ad=!0;a.Ja("Fatal error: "+b)}function db(a){z.call(this,"Panel",a,db)}A(z,db);
db.prototype.Db=function(a,b,c,d){return this.Ka&&this.Ka.Db(a,b,c,d)||this.T&&this.T.Db(a,b,c,d)||this.Ra&&this.Ra.Db(a,b,c,d)||this.fa&&this.fa.Db(a,b,c,d)?!0:z.prototype.Db.call(this,a,b,c,d)};db.prototype.pc=function(a,b,c,d){this.Ka=a;this.T=c;this.fa=d;this.Ra=eb(a,"Keyboard")};db.prototype.$b=function(a,b){b||fb();return!0};db.prototype.Zb=function(){return!0};
function fb(){for(var a=!1,b=D(window.document,"pcjs","panel"),c=0;c<b.length;c++){var d=b[c],e=C(d),f=Wa(e.id);f||(a=!0,f=new db(e));Za(f,d);a&&f.Ua()}}Ha(fb);function gb(a,b,c){z.call(this,"Bus",a,gb);this.T=b;this.fa=c;this.hg=a.buswidth||20;this.Pf=this.gd=(1<<this.hg)-1;this.zb=20>=this.hg?12:14;this.gc=1<<this.zb;this.nk=this.gc>>2;this.mb=this.gc-1;this.bh=(this.Pf+this.gc)/this.gc|0;this.Ee=this.bh-1;this.vd=[];this.wd=[];this.dg=this.eg=!1;this.Ni();this.Ua()}A(z,gb);
z.prototype={toString:function(){return this.name?this.name:this.id||this.type},Db:function(a,b,c){switch(b){case "clear":return this.wa[b]||(this.wa[b]=c,c.onclick=function(a){return function(){a.wa.print&&(a.wa.print.value="")}}(this)),!0;case "print":return this.wa[b]||(this.$f=this.wa[b]=c,c.value="",this.da=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.Ja=function(a,
b,c){this.da(a,"notice",c)}),!0;default:return!1}},log:function(){},da:function(){},status:function(a){this.da(this.yh+": "+a)},Ja:function(a,b){b||x(a)},Ua:function(a){this.qa.ad||(this.qa.th=!1!==a,this.qa.th&&(this.name&&this.log("ready"),a=this.Hi,this.Hi=null,a&&a()))},$b:function(){return this.qa.Qb=!0},Zb:function(a,b){b&&(this.qa.Qb=!1);return!0}};function $a(a,b){if(a.qa.zi)return a.qa.Ec&&(a.qa.Ec=!1),a.qa.zi=!1;if(a.qa.ad)return a.da(a.toString()+" error"),!1;a.qa.Ec=b;return a.qa.Ec}
function ab(a,b){a.qa.Ec&&(b?a.qa.zi=!0:void 0===b&&a.da(a.toString()+" busy"));return a.qa.Ec}function bb(a,b){b&&(a.qa.th?b():a.Hi=b);return a.qa.th}function cb(a,b){a.qa.ad=!0;a.Ja("Fatal error: "+b)}function db(a){z.call(this,"Panel",a,db)}A(z,db);db.prototype.Db=function(a,b,c){return this.Ka&&this.Ka.Db(a,b,c)||this.T&&this.T.Db(a,b,c)||this.Ra&&this.Ra.Db(a,b,c)||this.fa&&this.fa.Db(a,b,c)?!0:z.prototype.Db.call(this,a,b,c)};
db.prototype.pc=function(a,b,c,d){this.Ka=a;this.T=c;this.fa=d;this.Ra=eb(a,"Keyboard")};db.prototype.$b=function(a,b){b||fb();return!0};db.prototype.Zb=function(){return!0};function fb(){for(var a=!1,b=D(window.document,"pcjs","panel"),c=0;c<b.length;c++){var d=b[c],e=C(d),f=Wa(e.id);f||(a=!0,f=new db(e));Za(f,d);a&&f.Ua()}}Ha(fb);
function gb(a,b,c){z.call(this,"Bus",a,gb);this.T=b;this.fa=c;this.hg=a.buswidth||20;this.Pf=this.gd=(1<<this.hg)-1;this.zb=20>=this.hg?12:14;this.gc=1<<this.zb;this.nk=this.gc>>2;this.mb=this.gc-1;this.bh=(this.Pf+this.gc)/this.gc|0;this.Ee=this.bh-1;this.vd=[];this.wd=[];this.dg=this.eg=!1;this.Ni();this.Ua()}A(z,gb);
gb.prototype.Ni=function(){this.Fa=Array(this.bh);for(var a=0;a<this.bh;a++){var b=a*this.gc;hb(this.Fa[a]=new ib(b),this.T,this.fa,b,this.gc)}this.T.Ni(this.Fa,this.Pf,this.zb,this.mb,this.Ee);this.T.Ae=this.gd};gb.prototype.reset=function(){jb(this,!0)};gb.prototype.$b=function(a,b){b||this.reset();return!0};
function kb(a,b,c,d,e){if(!(b&a.mb||!c||c&a.mb)){for(var f=b>>a.zb;0<c&&f<a.Fa.length;){var g=a.Fa[f];if(void 0!==g&&g.size)return lb(1,b,c);b=f*a.gc;g=a.Fa[f++]=new ib(b,a.gc,d,e);hb(g,a.T,a.fa,b,a.gc);c-=a.gc}return!0}return lb(2,b,c)}function jb(a,b){if(void 0!==b&&20<a.hg){var c=a.gd&-1048577|(b?1048576:0);c!=a.gd&&(a.gd=c,a.T&&(a.T.Ae=c))}}
gb.prototype.Uh=function(a,b,c){if(!(a&this.mb||!b||b&this.mb)){for(var d=a>>this.zb;0<b;){var e=this.Fa[d];if(!e.ia)return lb(5,a,b);e.Ze(c);b-=this.gc;d++}return!0}return lb(3,a,b)};function mb(a,b,c){if(!(b&a.mb||!c||c&a.mb)){for(var d=b>>a.zb;0<c;)b=d*a.gc,hb(a.Fa[d++]=new ib(b),a.T,a.fa,b,a.gc),c-=a.gc;return!0}return lb(4,b,c)}function nb(a,b){return a.Fa[(b&a.gd)>>a.zb].Bg(b&a.mb)}
@ -37,7 +37,7 @@ function Lb(a,b){z.call(this,"CPU",a,Lb);var c=a.cycles||b,d=a.multiplier||1;thi
k.pc=function(a,b,c,d){this.ra=b;this.fa=d;this.Ka=a;var e=eb(a,"Video");e&&(this.ti=function(){Mb(e)},this.Tc=function(){e.Tc()});this.oa=eb(a,"ChipSet");this.Ua()};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};k.$b=function(a,b){if(!b){if(a&&this.restore){Nb(this);if(!this.restore(a))return!1;Ob(this)}else this.reset();this.fa?this.fa.Mn():this.da("No debugger detected")}this.qa.Qb=!0;!Pb(this)&&this.fa&&Rb(this.fa);Sb(this);return!0};
k.Zb=function(a){this.qa.Qb=!1;return a&&this.save?this.save():!0};function Pb(a){return!0===a.qa.yi||null===a.qa.yi&&!a.fa&&void 0===a.wa.run?(a.Ve(),!0):!1}k.Tc=function(){};k.Hk=function(){return 0};function Ob(a){void 0===a.ca.kg&&(a.ca.kg=0);void 0===a.ca.xf&&(a.ca.xf=-1);void 0===a.ca.zf&&(a.ca.zf=-1);a.qa.nf=0<=a.ca.kg&&0<a.ca.xf;a.qa.nf&&(a.ca.ig=0,a.ca.yf=a.ca.kg-a.Te)}
function Tb(a,b){if(a.qa.nf){var c=!1;a.ca.ig=a.ca.ig+a.Hk()|0;a.ca.yf-=b;0>=a.ca.yf&&(a.ca.yf+=a.ca.xf,c=!0);0<=a.ca.zf&&a.ca.zf<=Ub(a)&&(a.ca.xf=a.ca.zf=-1,Ob(a),a.Fb(),c=!0);c&&a.da(Ub(a)+" cycles: checksum="+p(a.ca.ig))}}function F(a,b,c,d){void 0!==a.wa[b]&&(void 0===d&&(d=4),void 0===c&&(cb(a,"Register "+b+" is invalid"),a.Fb()),c=p(c,d),a.wa[b].innerHTML!=c&&(a.wa[b].innerHTML=c))}k.jh=function(){};k.ti=function(){};
k.Db=function(a,b,c,d){var e=this;a=!1;switch(c){case "run":this.wa[c]=d;d.onclick=function(){e.qa.Rb?e.Fb(!0):e.Ve(!0)};a=!0;break;case "reset":this.wa[c]=d;d.onclick=function(){e.Ka&&Vb(e.Ka)};a=!0;break;case "speed":this.wa[c]=d;a=!0;break;case "setSpeed":this.wa[c]=d,d.onclick=function(){Wb(e,e.ca.Kd<<1,!0)},d.innerHTML=this.ca.Pe.toFixed(2)+"Mhz",a=!0}return a};function Xb(a,b,c){a.Te+=b;c&&(a.Qc=a.A=0)}
k.Db=function(a,b,c){var d=this;a=!1;switch(b){case "run":this.wa[b]=c;c.onclick=function(){d.qa.Rb?d.Fb(!0):d.Ve(!0)};a=!0;break;case "reset":this.wa[b]=c;c.onclick=function(){d.Ka&&Vb(d.Ka)};a=!0;break;case "speed":this.wa[b]=c;a=!0;break;case "setSpeed":this.wa[b]=c,c.onclick=function(){Wb(d,d.ca.Kd<<1,!0)},c.innerHTML=this.ca.Pe.toFixed(2)+"Mhz",a=!0}return a};function Xb(a,b,c){a.Te+=b;c&&(a.Qc=a.A=0)}
function Yb(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1<a.ca.Kd&&a.ca.pd&&(d=a.ca.pd/a.ca.Bh);a.ca.Ok=Math.round(1E3/30);a.ca.Yn=Math.floor(a.ca.Ld/c*d);a.ca.Ti=Math.floor(a.ca.Ld/30*d);a.ca.Sk=Math.floor(a.ca.Ld/60*d);a.ca.Rk=Math.floor(a.ca.Ld/2*d);b||(a.ca.Af=a.ca.Ti,a.ca.mg=a.ca.Sk,a.ca.lg=a.ca.Rk);a.ca.Ui=0}function Ub(a,b){var c=a.Te+a.qe+a.Qc-a.A;b&&1<a.ca.Kd&&a.ca.pd>a.ca.Bh&&(c=Math.round(c/a.ca.Kd));return c}function Nb(a){a.ca.pd=0;a.Eh=1;a.Te=a.qe=a.Qc=a.A=0;Ob(a);Wb(a,1)}
function Wb(a,b,c){if(void 0!==b){0.8>a.ca.pd/a.ca.Pe&&(b=1);a.ca.Kd=b;b=a.ca.Bh*a.ca.Kd;if(a.ca.Pe!=b){a.ca.Pe=b;b=a.ca.Pe.toFixed(2)+"Mhz";var d=a.wa.setSpeed;d&&(d.innerHTML=b);a.da("target speed: "+b)}c&&a.Tc()}Xb(a,a.qe);a.qe=0;a.ca.wf=oa();a.ca.Qe=0;Yb(a)}
k.Ve=function(a){if($a(this,!0)){if(!this.qa.Rb){Wb(this);this.Ka&&this.Ka.start(this.ca.wf,Ub(this));this.qa.Rb=!0;this.oa&&Zb(this.oa);var b=this.wa.run;b&&(b.innerHTML="Halt");a&&this.Tc()}this.ca.Ui>=this.ca.Ld&&Yb(this,!0);this.ca.ng=0;this.ca.Ch=oa();this.ca.Qe&&(a=this.ca.Ch-this.ca.Qe,a>this.ca.Ok&&(this.ca.wf+=a,this.ca.wf>this.ca.Ch&&(this.ca.wf=this.ca.Ch)));try{do{this.Gf(this.qa.nf?1:Math.round(this.ca.Yn/this.Eh));var c=this.Qc-this.A;this.qe+=c;this.ca.ng+=c;Xb(this,0,!0);Tb(this,c);
@ -63,7 +63,7 @@ function hd(a,b){switch(b){case "CS":return a.ya;case "DS":return a.Hb;case "SS"
function jd(a,b){a.Ga=a.ya.load(b)+a.va;a.aa|=a.Lg}function kd(a,b){a.Hb.load(b);a.aa|=a.Lg}function ld(a,b){a.Cb.load(b);a.aa|=4}function md(a,b){a.ab.load(b);a.aa|=a.Lg}function G(a,b){a.Ga=a.ya.Ya+(a.va=b&65535)}function Tc(a,b,c){a.Ga=a.ya.load(c)+(a.va=b)}function nd(a,b){a.Ga=a.ya.Ya+(a.va=a.va+b&65535)}function od(a){return a.Z&a.ga?1:0}function pd(a){return ac[a.ma&255]?4:0}function qd(a){return(a.ma^a.pa)&16?16:0}function rd(a){return a.Z&a.ga-1?0:64}
function sd(a){return a.ma&a.ga>>1?128:0}function td(a){return(a.ma^a.pa^a.ma>>1)&a.ga>>1?2048:0}function ud(a){a.Z&=~a.ga}function vd(a){a.pa=a.ma&16|a.pa&-17}function wd(a){a.Z|=a.ga-1}function xd(a){sd(a)&&(a.ma^=a.ga>>1|a.ga>>2,a.pa^=32896)}function yd(a){a.ma&=~a.ga;a.pa=a.ma&32896|a.pa&-32897}function zd(a){a.Z|=a.ga}function Ad(a){a.pa=~(a.ma&16)&16|a.pa&-17}function Bd(a){a.Z&=~(a.ga-1)}function Cd(a){sd(a)||(a.ma^=a.ga>>1|a.ga>>2,a.pa^=32896)}
function Dd(a){a.ma|=a.ga;a.pa=a.ma&32896|a.pa&-32897}function Wc(a){return a.Ca&-2262|od(a)|pd(a)|qd(a)|rd(a)|sd(a)|td(a)}function Uc(a,b){a.ga=256;a.Z=a.ma=a.pa=0;b&1&&zd(a);b&4||(a.ma|=1);b&16&&(a.pa|=16);b&64||wd(a);b&128&&Cd(a);b&2048&&Dd(a);a.ya.Mc?b=b&-12289|a.Ca&12288:(a.ne=(b&12288)>>12,!a.ne||a.Gc&1||(a.ne=0));a.ya.Mc>a.ne&&(b=b&-513|a.Ca&512);a.Ca=a.Ca&-1793|b&1792|a.ck;a.Ca&256&&(a.ub|=2,a.aa|=4)}
k.Db=function(a,b,c,d){var e=!1;switch(c){case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "CS":case "DS":case "SS":case "ES":case "IP":case "PC":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "O":this.wa[c]=d;e=!0;break;default:e=Lb.prototype.Db.call(this,a,b,c,d)}return e};k.tb=function(a){return this.Fa[(a&this.Ae)>>this.zb].sc(a&this.mb)};
k.Db=function(a,b,c){var d=!1;switch(b){case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "CS":case "DS":case "SS":case "ES":case "IP":case "PC":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "O":this.wa[b]=c;d=!0;break;default:d=Lb.prototype.Db.call(this,a,b,c)}return d};k.tb=function(a){return this.Fa[(a&this.Ae)>>this.zb].sc(a&this.mb)};
k.ua=function(a){var b=a&this.mb;a=(a&this.Ae)>>this.zb;this.A-=this.B.Jj;return b!=this.mb?this.Fa[a].Zl(b):this.Fa[a++].sc(b)|this.Fa[a&this.Ee].sc(0)<<8};k.Pd=function(a,b){this.Fa[(a&this.Ae)>>this.zb].Hc(a&this.mb,b&255)};k.ed=function(a,b){var c=a&this.mb,d=(a&this.Ae)>>this.zb;this.A-=this.B.Jj;c!=this.mb?this.Fa[d].mm(c,b&65535):(this.Fa[d++].Hc(c,b&255),this.Fa[d&this.Ee].Hc(0,b>>8&255))};k.Km=function(a,b){this.Hg=a;this.la=a.ld(this.zg=b,0);return this.aa&1?0:this.tb(this.la)};
k.Lm=function(a,b){this.Hg=a;this.la=a.ld(this.zg=b,1);return this.aa&1?0:this.ua(this.la)};k.Rn=function(a,b){this.Hg=a;this.Ma=this.la=a.ld(this.zg=b,0);return this.aa&1?0:this.tb(this.la)};k.Sn=function(a,b){this.Hg=a;this.Ma=this.la=a.ld(this.zg=b,1);return this.aa&1?0:this.ua(this.la)};k.mp=function(a){this.aa&2||this.Pd(this.Hg.hc(this.zg,1),a)};k.np=function(a){this.aa&2||this.ed(this.Hg.hc(this.zg,2),a)};k.ha=function(){var a=this.tb(this.Ga);this.Ga=this.ya.Ya+(this.va=this.va+1&65535);return a};
k.M=function(){var a=this.tb(this.Ga)<<24>>24;this.Ga=this.ya.Ya+(this.va=this.va+1&65535);return a&65535};k.L=function(){var a=this.ua(this.Ga);this.Ga=this.ya.Ya+(this.va=this.va+2&65535);return a};k.La=function(){var a=this.Y;this.Y=this.Y+2&65535;return this.ua(this.Cb.ld(a,1))};function H(a,b){var c=a.Y=a.Y-2&65535;a.ed(a.Cb.hc(c,1),b)}
@ -429,7 +429,7 @@ this.H&255,this.Ga-2);Ab(this.ra,a+1&65535,this.H>>8,this.Ga-2);this.A-=this.B.t
De,ue);0<=this.Nb&&(this.H=this.Nb)},function(){this.Nb=-1;Bh[this.ha()].call(this,Ee,ue);0<=this.Nb&&(this.H=this.Nb,this.K=this.Cg)},function(){this.Z&=~this.ga;this.A-=2},function(){this.Z|=this.ga;this.A-=2},function(){this.Ca&=-513;this.A-=this.B.Xk},function(){this.Ca|=512;this.aa|=4;this.A-=2},function(){this.Ca&=-1025;this.A-=2},function(){this.Ca|=1024;this.A-=2},function(){Ah[this.ha()].call(this,Mc,ue)},function(){Bh[this.ha()].call(this,Oc,ue)}];
function O(a){z.call(this,"ChipSet",a,O);this.Ia=(this.Ia=a.model)?parseInt(this.Ia,10):ai;this.ac=0;var b=a.sw1;if(b)this.ac=bi(b,ci|di.rm);else{this.Vd=[360,360];(b=a.floppies)&&b.length&&(this.Vd=b);if(b=this.Vd.length)this.ac|=ei.Zh,b--,this.ac|=(b&3)<<ei.Kf;if(b=a.monitor||(this.Ia<fi?"mono":"ega"),void 0!==gi[b])this.ac|=gi[b]<<di.Kf}this.ve=bi(a.sw2||"11110000",0);this.Qn=this.Ia==ai?16:64;this.dh=this.gh=1;this.Ia>=fi&&(this.dh=this.gh=2);this.uh=a.scaleTimers||!1;this.lp=a.rtcDate;this.Fk=
!1;a.sound&&window&&"webkitAudioContext"in window&&(this.qi=new window.webkitAudioContext);this.reset(!0);this.Ua()}A(z,O);var ai=5150,fi=5170,gi={none:0,tv:1,color:2,mono:3,ega:0},ei={Zh:1,ONE:0,eq:64,cq:128,Cp:192,Jf:192,Kf:6},ci=12,di={dq:16,vp:32,rm:48,Jf:48,Kf:4};k=O.prototype;
k.Db=function(a,b,c,d){switch(c){case "sw1":return this.wa[c]=d,hi(this,c,d,this.ac,{0:this.Ia==ai?"Bootable Floppy Drive":"Loop on POST",1:this.Ia==ai?"Reserved":"Coprocessor",2:"Base Memory Size",4:"Monitor Type",6:"Number of Floppy Drives"}),!0;case "sw2":if(this.Ia==ai)return this.wa[c]=d,hi(this,c,d,this.ve,{0:"Expansion Memory Size",4:"Reserved"}),!0;break;case "swdesc":return this.wa[c]=d,!0}return!1};
k.Db=function(a,b,c){switch(b){case "sw1":return this.wa[b]=c,hi(this,b,c,this.ac,{0:this.Ia==ai?"Bootable Floppy Drive":"Loop on POST",1:this.Ia==ai?"Reserved":"Coprocessor",2:"Base Memory Size",4:"Monitor Type",6:"Number of Floppy Drives"}),!0;case "sw2":if(this.Ia==ai)return this.wa[b]=c,hi(this,b,c,this.ve,{0:"Expansion Memory Size",4:"Reserved"}),!0;break;case "swdesc":return this.wa[b]=c,!0}return!1};
k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;this.Ka=a;this.Ra=eb(a,"Keyboard");this.Ul=Math.round(c.ca.Ld/1193181);tb(b,this,ii);zb(b,this,ji);this.Ia<fi?(tb(b,this,ki),zb(b,this,li)):(tb(b,this,mi),zb(b,this,ni));if(d){var e=this;oi(d,Fd,function(){for(var a=0;a<e.Eb.length;a++){for(var b=e.Eb[a],c="PIC"+a+":",d=0;d<b.vc.length;d++)c+=" IC"+(d+1)+"="+t(b.vc[d]);c+=" IMR="+t(b.zd)+" IRR="+t(b.Pb)+" ISR="+t(b.Kc);e.fa.message(c)}});oi(d,pi,function(){for(var a=0;a<e.Ob.length;a++){qi(e,a);
var b=e.Ob[a],c="TIMER"+a+":",d=0;if(null!=b.md)for(var n=0;n<=b.md;n++)d|=b.Za[n]<<8*n;c+=" MODE"+b.mode+" BYTES="+b.md+" COUNT="+v(d);e.fa.message(c)}});oi(d,ri,function(){for(var a="",b=0;64>b;b++){var c=13>=b?si(e,b):e.ta[b];a&&(a+="\n");a+="CMOS[0x"+t(b)+"]: 0x"+t(c)}e.fa.message(a)})}Xc(c,ti,this,this.Pn)};k.$b=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.Zb=function(a){return a&&this.save?this.save():!0};
k.reset=function(a){var b;this.fd=this.ac;this.af=this.ve;ui(this);this.jb=Array(this.dh);for(b=0;b<this.dh;b++)vi(this,b);this.Eb=Array(this.gh);wi(this,0,32);1<this.gh&&wi(this,1,160);this.ni=null;this.Ob=Array(3);for(b=0;b<this.Ob.length;b++)xi(this,b);this.Wf=this.li=this.Ac=this.Zg=null;this.Yg=0;if(this.Ia>=fi){this.qb=16;this.yd=0;this.jd=16;this.Ug=0;this.Be=160;512<=yi(this)&&(this.Be|=16);3==zi(this)&&(this.Be|=64);this.ji=3;this.Uf=0;this.Pg=Array(7);this.Ce=0;a&&(this.ta=Array(64));Ai(this,
@ -493,9 +493,9 @@ bs:14,tab:15,q:16,w:17,e:18,r:19,t:20,y:21,u:22,i:23,o:24,p:25,"[":26,"]":27,ent
S[Q["7"]]=8;S[Q["&"]]=10760;S[Q["8"]]=9;S[Q["*"]]=10761;S[Q["9"]]=10;S[Q["("]]=10762;S[Q["0"]]=11;S[Q[")"]]=10763;S[Q["-"]]=12;S[Q._]=10764;S[Q["="]]=13;S[Q["+"]]=10765;S[1008]=14;S[1009]=15;S[113]=16;S[81]=10768;S[119]=17;S[87]=10769;S[101]=18;S[69]=10770;S[114]=19;S[82]=10771;S[116]=20;S[84]=10772;S[121]=21;S[89]=10773;S[117]=22;S[85]=10774;S[105]=23;S[73]=10775;S[111]=24;S[79]=10776;S[112]=25;S[80]=10777;S[Q["["]]=26;S[Q["{"]]=10778;S[Q["]"]]=27;S[Q["}"]]=10779;S[13]=28;S[1017]=29;S[97]=30;
S[65]=10782;S[115]=31;S[83]=10783;S[100]=32;S[68]=10784;S[102]=33;S[70]=10785;S[103]=34;S[71]=10786;S[104]=35;S[72]=10787;S[106]=36;S[74]=10788;S[107]=37;S[75]=10789;S[108]=38;S[76]=10790;S[Q[";"]]=39;S[Q[":"]]=10791;S[Q["'"]]=40;S[Q['"']]=10792;S[Q["`"]]=41;S[Q["~"]]=10793;S[1016]=42;S[Q["\\"]]=43;S[Q["|"]]=10795;S[122]=44;S[90]=10796;S[120]=45;S[88]=10797;S[99]=46;S[67]=10798;S[118]=47;S[86]=10799;S[98]=48;S[66]=10800;S[110]=49;S[78]=10801;S[109]=50;S[77]=10802;S[Q[","]]=51;S[Q["<"]]=10803;
S[Q["."]]=52;S[Q[">"]]=10804;S[Q["/"]]=53;S[Q["?"]]=10805;S[3016]=54;S[1018]=56;S[Q[" "]]=57;S[1020]=58;S[1112]=59;S[1113]=60;S[1114]=61;S[1115]=62;S[1116]=63;S[1117]=64;S[1118]=65;S[1119]=66;S[1120]=67;S[1121]=68;S[1144]=69;S[1145]=70;S[1036]=71;S[1038]=72;S[1033]=73;S[1037]=75;S[1039]=77;S[1035]=79;S[1040]=80;S[1034]=81;S[1045]=82;S[1046]=83;S[1122]=87;S[1123]=88;S[4003]=7470;S[4063]=7494;S[4081]=3677523;k=Gj.prototype;
k.Db=function(a,b,c,d){var e=this;a=b+"-"+c;if(void 0===this.wa[a])switch(c){case "kbd":return this.wa[a]=d,d.onkeydown=function(a){return Lj(e,a,!0)},d.onkeypress=function(a){var b=!0;a=a||window.event;a=a.which||a.keyCode;8==a||9==a?b=!1:e.bb&64?e.bb&=-65:e.bb&40?b=!1:(e.Ak&&a==Q["`"]&&(a=27),b=!Mj(e,a));return b},d.onkeyup=function(a){return Lj(e,a,!1)},!0;case "caps-lock":return this.wa[a]=d,d.onclick=function(){e.T&&e.T.Tc();Mj(e,1020,!0)},!0;case "num-lock":return this.wa[a]=d,d.onclick=function(){e.T&&
e.T.Tc();Mj(e,1144,!0)},!0;case "scroll-lock":return this.wa[a]=d,d.onclick=function(){e.T&&e.T.Tc();Mj(e,1145,!0)},!0;default:if(void 0!==Jj[c]&&"button"==b)return this.wa[a]=d,d.onclick=function(a,b,c){return function(){a.T&&a.T.Tc();Nj(a,c);return!Mj(a,c)}}(this,c,Jj[c]),!0;if(void 0!==Kj[c])return this.wa[a]=d,b=function(a,b,c){return function(){Oj(a,c)}}(this,c,Kj[c]),c=function(a,b,c){return function(){Oj(a,c)}}(this,c,Kj[c]|128),"ontouchstart"in window?(d.ontouchstart=b,d.ontouchend=c):(d.onmousedown=
b,d.onmouseup=d.onmouseout=c),!0}return!1};k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;this.oa=eb(a,"ChipSet")};k.Ua=function(){this.Dk=(this.Pm=Aa("iOS"))||Aa("Android");this.Sa("mobile keyboard support: "+(this.Dk?"true":"false"));return z.prototype.Ua.call(this)};function sj(a){a.Sa("keyboard reset",Pj);a.yc=[170];a.oa&&vj(a.oa)}function nj(a,b,c){var d=!1;a.Bi!==c&&(a.Bi=a.Fi=c);a.ph!==b&&(a.ph=b)&&!a.Fi&&uj(a);a.ph&&a.Fi&&(sj(a),a.Fi=!1,d=!0);return d}
k.Db=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.wa[e])switch(b){case "kbd":return this.wa[e]=c,c.onkeydown=function(a){return Lj(d,a,!0)},c.onkeypress=function(a){var b=!0;a=a||window.event;a=a.which||a.keyCode;8==a||9==a?b=!1:d.bb&64?d.bb&=-65:d.bb&40?b=!1:(d.Ak&&a==Q["`"]&&(a=27),b=!Mj(d,a));return b},c.onkeyup=function(a){return Lj(d,a,!1)},!0;case "caps-lock":return this.wa[e]=c,c.onclick=function(){d.T&&d.T.Tc();Mj(d,1020,!0)},!0;case "num-lock":return this.wa[e]=c,c.onclick=function(){d.T&&
d.T.Tc();Mj(d,1144,!0)},!0;case "scroll-lock":return this.wa[e]=c,c.onclick=function(){d.T&&d.T.Tc();Mj(d,1145,!0)},!0;default:if(void 0!==Jj[b]&&"button"==a)return this.wa[e]=c,c.onclick=function(a,b,c){return function(){a.T&&a.T.Tc();Nj(a,c);return!Mj(a,c)}}(this,b,Jj[b]),!0;if(void 0!==Kj[b])return this.wa[e]=c,a=function(a,b,c){return function(){Oj(a,c)}}(this,b,Kj[b]),b=function(a,b,c){return function(){Oj(a,c)}}(this,b,Kj[b]|128),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=b):(c.onmousedown=
a,c.onmouseup=c.onmouseout=b),!0}return!1};k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;this.oa=eb(a,"ChipSet")};k.Ua=function(){this.Dk=(this.Pm=Aa("iOS"))||Aa("Android");this.Sa("mobile keyboard support: "+(this.Dk?"true":"false"));return z.prototype.Ua.call(this)};function sj(a){a.Sa("keyboard reset",Pj);a.yc=[170];a.oa&&vj(a.oa)}function nj(a,b,c){var d=!1;a.Bi!==c&&(a.Bi=a.Fi=c);a.ph!==b&&(a.ph=b)&&!a.Fi&&uj(a);a.ph&&a.Fi&&(sj(a),a.Fi=!1,d=!0);return d}
function kj(a,b){var c=0;a.yc.length&&(c=a.yc[0],a.Sa("scan code 0x"+t(c)+" delivered"),b&&uj(a));return c}function uj(a,b){0<a.yc.length&&(b?a.yc=[]:(a.yc.shift(),0<a.yc.length&&a.oa&&vj(a.oa)))}k.$b=function(a,b){return!b&&(this.reset(),a&&this.restore&&!this.restore(a))?!1:!0};k.Zb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.le();this.bb=0;this.yc=[];if(this.ud)for(var a in this.ud)ca(a)||this.ud[a]&&clearTimeout(this.ud[a]);this.ud=[];this.Yl=this.Ue=0};
k.save=function(){var a=new gd(this);a.set(0,this.Wj());return a.data()};k.restore=function(a){return this.le(a[0])};k.le=function(a){var b=0;void 0===a&&(a=[]);this.Bi=a[b++];this.ph=a[b];return!0};k.Wj=function(){var a=0,b=[];b[a++]=this.Bi;b[a]=this.ph;return b};
function Oj(a,b){var c=b&127,d=c==b;if(a.yc)if(20>a.yc.length){if(!(!d&&!a.di[c]||d&&a.di[c])){a.di[c]=d;a.Sa("scan code 0x"+t(b)+" buffered");a.yc.push(b);1==a.yc.length&&a.oa&&vj(a.oa);for(var e in Kj)if(Kj[e]==c){(c=a.wa["key-"+e])&&void 0!==d&&(c.style.color=d?"#ffffff":"#000000",c.style.backgroundColor=d?"#000000":"#ffffff");break}}}else 20==a.yc.length&&a.yc.push(255),a.Sa("scan code buffer overflow")}function Qj(a,b){var c=b?a.Un:a.Tn;a.T&&a.T.ca.pd&&(c/=a.T.ca.pd);return c}
@ -527,7 +527,7 @@ a.Dh;c[16]=a.Ij;c[17]=a.ob;c[18]=a.qd;c[19]=a.vb;c[20]=a.Jh;c[21]=a.re;c[22]=a.S
fk.prototype.Uh=function(a){if(null!=a&&a!=this.Dh){var b=a&255,c=wk[b];c||b&1&&(c=wk[1]);var b=a&65280,d=wk[b];d||b&256&&(d=wk[256]);this.Rf||(this.Rf=[null,uk,null,vk]);this.Rf[0]=c;this.Rf[2]=d;this.Dh=a}};var gk=[,["MDA",948,720896,4096,0,3],,["CGA",980,753664,16384,0,2],,["EGA",980,753664,16384,65536,4]];k=T.prototype;
k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;tb(b,this,zk);zb(b,this,Ak);"ega"==this.Ia&&(tb(b,this,Bk),zb(b,this,Ck));if(d){var e=this;oi(d,Dk,function(a){if(e.Ha)if(a){var b=e.Ha;if(b.hd){a=da(a);a=void 0!==a?a-b.Va:b.cp||0;0>a&&(a=0);for(var c="",d=0;8>d;d++){for(var f=p(b.Va+a)+":",r=0;8>r&&a<b.hd.length;r++)var s=b.hd[a++],f=f+(" "+p(s));c&&(c+="\n");c+=f}c&&b.fa.message(c);b.cp=a}else b.fa.message("no buffer")}else{e.fa.message("BIOSMODE: "+t(e.Nd));b=e.Ha;yk(b,"CRTC",b.oc,b.ec,b.Tg);
if(1==b.ke||3==b.ke)yk(b," MODEREG",b.Fc),yk(b," STATUS1",b.Ff);3==b.ke&&yk(b," COLOR",b.jf);5==b.ke&&(b.fa.message(" ATCDATA: "+b.nd),yk(b," ATC",b.Fd,b.Td,b.gi),yk(b," GRC",b.Gd,b.ye,b.hi),yk(b," SEQ",b.Hd,b.Mf,b.ii),yk(b," FEAT",b.wh),yk(b," MISC",b.gg),yk(b," STATUS0",b.Xh),yk(b," LATCHES",b.Gb),b.fa.message(" ACCESS: "+v(b.Dh)),b.fa.message("Use 'dump video buffer' to dump video memory"))}else e.fa.message("no active video card")})}if((this.Ra=eb(a,"Keyboard"))&&this.fb){for(var f in this.wa)0<
f.indexOf("lock")&&this.Ra.Db("input","led",f,this.wa[f]);this.Ra.Db("input",this.km?"textarea":"canvas","kbd",this.km||this.fb)}this.Vg=9;(this.oa=eb(a,"ChipSet"))&&this.fm&&(this.Vg=bi(this.fm,this.Vg));this.Ra&&this.Im&&Ek(this)};k.Db=function(a,b,c,d){var e=this;if(!this.wa[c])switch(this.wa[c]=d,c){case "lockPointer":return this.jp=d.innerHTML,this.fb&&this.fb.vf?d.onclick=function(){e.vf(!0)}:d.parentNode.removeChild(d),!0;case "refresh":return d.onclick=function(){Mb(e,!0)},!0}return!1};
f.indexOf("lock")&&this.Ra.Db("led",f,this.wa[f]);this.Ra.Db(this.km?"textarea":"canvas","kbd",this.km||this.fb)}this.Vg=9;(this.oa=eb(a,"ChipSet"))&&this.fm&&(this.Vg=bi(this.fm,this.Vg));this.Ra&&this.Im&&Ek(this)};k.Db=function(a,b,c){var d=this;if(!this.wa[b])switch(this.wa[b]=c,b){case "lockPointer":return this.jp=c.innerHTML,this.fb&&this.fb.vf?c.onclick=function(){d.vf(!0)}:c.parentNode.removeChild(c),!0;case "refresh":return c.onclick=function(){Mb(d,!0)},!0}return!1};
k.Tc=function(){this.fb&&this.fb.focus()};k.vf=function(a){if(this.fb)if(a){if(this.fb.vf)return this.fb.vf(),this.me.yg(!0),!0}else if(this.fb.lm)return this.fb.lm(),this.me.yg(!1),!0;return!1};k.yg=function(a){this.me&&(this.me.yg(a),this.Ra&&(this.Ra.Ak=a));var b=this.wa.lockPointer;b&&(b.innerHTML=a?"Press Esc to Unlock Pointer":this.jp)};
function Ek(a){var b=a.fb;b&&!a.Ai&&(b.addEventListener("touchstart",function(b){Fk(a,b)},!1),b.addEventListener("touchmove",function(b){Fk(a,b)},!0),b.addEventListener("touchend",function(){},!1),a.Ai=!0)}
function Fk(a,b){a.Ci&&b.preventDefault();var c=0,d=0,e=a.fb;do isNaN(e.offsetLeft)||(c+=e.offsetLeft,d+=e.offsetTop);while(e=e.offsetParent);c=a.Bd/a.fb.offsetWidth*(b.targetTouches[0].pageX-c)/(a.Bd/3)|0;d=a.ie/a.fb.offsetHeight*(b.targetTouches[0].pageY-d)/(a.ie/3)|0;1!=d?d?Mj(a.Ra,40,!0):Mj(a.Ra,38,!0):1!=c&&(c?Mj(a.Ra,39,!0):Mj(a.Ra,37,!0))}k.$b=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Zb=function(a){return a&&this.save?this.save():!0};
@ -565,8 +565,8 @@ var zk={948:T.prototype.vn,949:T.prototype.un,952:T.prototype.wn,954:T.prototype
960:T.prototype.Wl,961:T.prototype.Wl,962:T.prototype.Oo,964:T.prototype.Vo,965:T.prototype.Uo,970:T.prototype.Go,972:T.prototype.Fo,974:T.prototype.Eo,975:T.prototype.Do,986:T.prototype.Xl};
Ha(function(){for(var a=D(window.document,"pcjs","video"),b=0;b<a.length;b++){var c=a[b],d=C(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","pcjs-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=c.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 f=e.getContext("2d"),d=new T(d,e,f);Za(d,c)}});
function Zk(a){this.Jk=a.adapter;switch(this.Jk){case 1:this.Oj=1016;this.rg=4;break;case 2:this.Oj=760;this.rg=3;break;default:x("Unrecognized serial adapter #"+this.Jk);return}this.fe=null;z.call(this,"SerialPort",a,Zk);var b=a.binding,c;a=$k;b&&(void 0===c&&(c="Panel"),(c=Xa(c,this.id))&&(b=c.wa[b])&&this.Db(null,null,a,b))}A(z,Zk);var $k="buffer";k=Zk.prototype;k.hk=function(a,b){return a==this.yh?(this.me=b,this):null};
k.Db=function(a,b,c,d){var e=this;switch(c){case $k:return this.wa[c]=this.fe=d,d.onkeydown=function(a){a=a||window.event;var b=a.keyCode;8===b&&(a.preventDefault&&a.preventDefault(),al(e,[b]))},d.onkeypress=function(a){a=a||window.event;al(e,[a.which||a.keyCode])},!0}return!1};k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;this.oa=eb(a,"ChipSet");tb(b,this,bl,this.Oj);zb(b,this,cl,this.Oj);this.Ua()};
function Zk(a){this.Jk=a.adapter;switch(this.Jk){case 1:this.Oj=1016;this.rg=4;break;case 2:this.Oj=760;this.rg=3;break;default:x("Unrecognized serial adapter #"+this.Jk);return}this.fe=null;z.call(this,"SerialPort",a,Zk);var b=a.binding,c;a=$k;b&&(void 0===c&&(c="Panel"),(c=Xa(c,this.id))&&(b=c.wa[b])&&this.Db(null,a,b))}A(z,Zk);var $k="buffer";k=Zk.prototype;k.hk=function(a,b){return a==this.yh?(this.me=b,this):null};
k.Db=function(a,b,c){var d=this;switch(b){case $k:return this.wa[b]=this.fe=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;8===b&&(a.preventDefault&&a.preventDefault(),al(d,[b]))},c.onkeypress=function(a){a=a||window.event;al(d,[a.which||a.keyCode])},!0}return!1};k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;this.oa=eb(a,"ChipSet");tb(b,this,bl,this.Oj);zb(b,this,cl,this.Oj);this.Ua()};
k.$b=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Zb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.le()};k.save=function(){var a=new gd(this),b=0,c=[];c[b++]=this.mi;c[b++]=this.lk;c[b++]=this.bf;c[b++]=this.Wg;c[b++]=this.be;c[b++]=this.Wc;c[b++]=this.kd;c[b++]=this.Lc;c[b++]=this.jk;c[b]=this.Of;a.set(0,c);return a.data()};k.restore=function(a){return this.le(a[0])};
k.le=function(a){var b=0;void 0===a&&(a=[0,0,384,0,1,0,0,96,48,[]]);this.mi=a[b++];this.lk=a[b++];this.bf=a[b++];this.Wg=a[b++];this.be=a[b++];this.Wc=a[b++];this.kd=a[b++];this.Lc=a[b++];this.jk=a[b++];this.Of=a[b];return!0};function al(a,b){a.Of=a.Of.concat(b);dl(a)}function dl(a){0<a.Of.length&&!(a.Lc&1)&&(a.mi=a.Of.shift(),a.Lc|=1);var b=-1;a.Lc&1&&a.Wg&1&&(b=4);0<=b?(a.be&=-8,a.be|=b,a.oa&&a.rg&&ej(a.oa,a.rg)):(a.be|=1,a.oa&&a.rg&&fj(a.oa,a.rg))}
k.En=function(a,b){var c=this.Wc&128?this.bf&255:this.mi;this.ea(a,null,b,this.Wc&128?"DLL":"RBR",c);this.Lc&=-2;dl(this);return c};k.pn=function(a,b){var c=this.Wc&128?this.bf>>8:this.Wg;this.ea(a,null,b,this.Wc&128?"DLM":"IER",c);return c};k.qn=function(a,b){var c=this.be;this.ea(a,null,b,"IIR",c);return c};k.rn=function(a,b){var c=this.Wc;this.ea(a,null,b,"LCR",c);return c};k.tn=function(a,b){var c=this.kd;this.ea(a,null,b,"MCR",c);return c};
@ -603,8 +603,8 @@ k.restore=function(a){var b=0,c="unsupported restore format";if(a&&0<a.length){v
b+" changes applied)";b=-1;break}if(this.rf){c="unable to modify write-protected disk";b=-1;break}e=g[f++];f=g[f++];g=e+f.length;if(h=this.cb[h][l][n]){for(l=h.data.length;l<e;)h.data[l++]=h.pattern;l=0;h.bd=e;for(h.Bc=f.length;e<g;)h.data[e++]=f[l++];b++}}}0>b&&this.ia.Ja("unable to restore disk '"+this.sd+": "+c);return b};k.Sa=function(a){this.fa&&E(this.fa,wl)&&this.fa.message(a)};
function xl(a){z.call(this,"FDC",a,xl);this.dmaRead=this.ui;this.dmaWrite=this.vi;this.dmaFormat=this.xm;this.Je=null;if(a.autoMount&&(this.Je=a.autoMount,"string"==typeof this.Je))try{this.Je=eval("("+a.autoMount+")")}catch(b){x("FDC auto-mount error: "+b.message+" ("+a.autoMount+")"),this.Je=null}this.uc=[];this.Ck=!1}A(z,xl);m={};aa={};
var yl={3:{Ad:3,ee:0,name:aa.Xp},4:{Ad:2,ee:1,name:aa.Vp},5:{Ad:9,ee:7,name:aa.iq},6:{Ad:9,ee:7,name:aa.Pp},7:{Ad:2,ee:0,name:aa.Rp},8:{Ad:1,ee:2,name:aa.Wp},10:{Ad:2,ee:7,name:aa.Qp},13:{Ad:6,ee:7,name:aa.Bp},15:{Ad:3,ee:0,name:aa.Up}};k=xl.prototype;
k.Db=function(a,b,c,d){var e=this;switch(c){case "listDisks":return this.wa[c]=d,d.onchange=function(){var a=e.wa.descDisk,b=d.options[d.selectedIndex];if(a&&b){var c={};if(b=b.getAttribute("data-value"))try{c=eval("({"+b+"})")}catch(l){x("FDC option error: "+l.message)}b=c.desc;void 0===b&&(b="");c=c.href;void 0!==c&&(b='<a href="'+c+'" target="_blank">'+b+"</a>");a.innerHTML=b}},!0;case "descDisk":case "listDrives":return this.wa[c]=d,d.onchange=function(){var a=da(d.value,10);null!=a&&zl(e,a)},
!0;case "loadDrive":return this.wa[c]=d,d.onclick=function(){var a=e.wa.listDisks;a&&Al(e,a.options[a.selectedIndex].text,a.value)},!0;case "mountDrive":return window&&"FileReader"in window?(this.Ck=!0,this.wa[c]=d,d.addEventListener("change",function(){var a=d.children[0];a.children[1].disabled=0==a.children[0].files.length}),d.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;Al(e,fa(b,!0),b,a)}return!1}):d.parentNode.removeChild(d),!0}return!1};
k.Db=function(a,b,c){var d=this;switch(b){case "listDisks":return this.wa[b]=c,c.onchange=function(){var a=d.wa.descDisk,b=c.options[c.selectedIndex];if(a&&b){var g={};if(b=b.getAttribute("data-value"))try{g=eval("({"+b+"})")}catch(h){x("FDC option error: "+h.message)}b=g.desc;void 0===b&&(b="");g=g.href;void 0!==g&&(b='<a href="'+g+'" target="_blank">'+b+"</a>");a.innerHTML=b}},!0;case "descDisk":case "listDrives":return this.wa[b]=c,c.onchange=function(){var a=da(c.value,10);null!=a&&zl(d,a)},!0;
case "loadDrive":return this.wa[b]=c,c.onclick=function(){var a=d.wa.listDisks;a&&Al(d,a.options[a.selectedIndex].text,a.value)},!0;case "mountDrive":return window&&"FileReader"in window?(this.Ck=!0,this.wa[b]=c,c.addEventListener("change",function(){var a=c.children[0];a.children[1].disabled=0==a.children[0].files.length}),c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;Al(d,fa(b,!0),b,a)}return!1}):c.parentNode.removeChild(c),!0}return!1};
k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.fa=d;this.Ka=a;this.oa=eb(a,"ChipSet");this.Id();tb(b,this,Bl);zb(b,this,Cl);this.Ck&&Dl(this,"Local Disk","?");Dl(this,"Remote Disk","??");this.Sf()||this.Ua()};
k.$b=function(a,b){if(!b){if(!a||!this.restore){if(this.reset(),this.Ka.Ei){this.uc=[];for(var c=0;c<this.Ea.length;c++)El(this,c,!0);this.Sf(!0)}}else if(!this.restore(a))return!1;if(c=this.wa.listDrives){for(;c.firstChild;)c.removeChild(c.firstChild);c.innerHTML="";for(var d=0;d<this.Wi;d++){var e=window.document.createElement("option");e.value=d;e.innerHTML=String.fromCharCode(65+d)+":";c.appendChild(e)}0<this.Wi&&(c.value="0",zl(this,0))}}return!0};
k.Zb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.Id()};k.save=function(){var a=new gd(this);a.set(0,this.Tj());return a.data()};k.restore=function(a){return this.Id(a[0])};
@ -683,7 +683,7 @@ Z="AL CL DL BL AH CH DH BH AX CX DX BX SP BP SI DI ES CS SS DS IP".split(" "),bm
82:"get system variables (es:bx)",83:"translate bpb DS:SI to dpb (es:bp)",84:"get verify flag (al)",85:"create child psp at segment DX",86:"rename file DS:DX to name ES:DI",87:"get(0)/set(1) file date DX and time CX (AL)",88:"get(0)/set(1) memory allocation strategy (AL)",89:"get extended error information",90:"create temporary file DS:DX with attributes CX",91:"create file DS:DX with attributes CX",92:"lock(0)/unlock(1) file BX region CX:DX length SI:DI (AL)"}};k=Ul.prototype;
k.pc=function(a,b,c,d){this.ra=b;this.T=c;this.Ka=a;this.Jm=eb(a,"FDC");this.Ik=eb(a,"HDC");this.Nf=dm;80186<=this.T.Ia&&(this.Nf=dm.slice(),this.Nf[15]=$,80286<=this.T.Ia&&(this.Nf[15]=cm));oi(this,2097152,function(a){if(a)for(d.da("dumpDOS("+a+")"),a=da(a);a;){var b=[0,a,void 0],c=d.tb(b,1),e=d.ua(b,2),n=d.ua(b,5);if(77!=c&&90!=c)break;d.da(ea(0,a)+": '"+String.fromCharCode(c)+"' PID="+v(e)+" LEN="+v(n)+' "'+hm(d,b)+'"');a+=1+n}});this.Ua();if(this.Sj){a=Xl(this,this.Sj);delete this.Sj;for(var e in a)im(this,
a[e])}};
k.Db=function(a,b,c,d){var e=this;switch(c){case "debugInput":return this.Zf=this.wa[c]=d,d.onkeypress=function(a){if(13==a.keyCode){var b=d.value;d.value="";var c=Xl(e,b,!0);for(b in c)im(e,c[b]);a.preventDefault&&a.preventDefault()}},!0;case "debugEnter":return this.wa[c]=d,Ca(d,function(){if(e.Zf){var a=e.Zf.value;e.Zf.value="";var b=Xl(e,a,!0);for(a in b)im(e,b[a]);return!0}return!1}),!0;case "step":return this.wa[c]=d,Ca(d,function(a){var b=!1;ab(e,!0)||($a(e,!0),b=e.Gf(a?1:0),$a(e,!1));return b}),
k.Db=function(a,b,c){var d=this;switch(b){case "debugInput":return this.Zf=this.wa[b]=c,c.onkeypress=function(a){if(13==a.keyCode){var b=c.value;c.value="";var g=Xl(d,b,!0);for(b in g)im(d,g[b]);a.preventDefault&&a.preventDefault()}},!0;case "debugEnter":return this.wa[b]=c,Ca(c,function(){if(d.Zf){var a=d.Zf.value;d.Zf.value="";var b=Xl(d,a,!0);for(a in b)im(d,b[a]);return!0}return!1}),!0;case "step":return this.wa[b]=c,Ca(c,function(a){var b=!1;ab(d,!0)||($a(d,!0),b=d.Gf(a?1:0),$a(d,!1));return b}),
!0}return!1};k.Tc=function(){this.Zf&&this.Zf.focus()};function hm(a,b){var c,d="";for(c=8;d.length<c;){var e=a.tb(b,1);if(!e)break;d+=32<=e&&128>e?String.fromCharCode(e):"."}return d}function oi(a,b,c){for(var d in Yl)if(b==Yl[d]){a.fi[d]=c;break}}function E(a,b){return(a.kc&b)===b}
function $c(a,b,c){var d=Zl[b],e=d&&E(a,d);if(e){var f=a.T.H>>8,g=a.T.K&255;if(33==b&&11==f||d==zj&&128<=g||d==Tl&&128>g)e=!1}if(e){if(d=(d=gm[b])&&d[f]||"")g=a.T,a.pb[Z[0]]=t(g.H&255),a.pb[Z[1]]=t(g.J&255),a.pb[Z[2]]=t(g.K&255),a.pb[Z[3]]=t(g.C&255),a.pb[Z[4]]=t(g.H>>8),a.pb[Z[5]]=t(g.J>>8),a.pb[Z[6]]=t(g.K>>8),a.pb[Z[7]]=t(g.C>>8),a.pb[Z[8]]=v(g.H),a.pb[Z[9]]=v(g.J),a.pb[Z[10]]=v(g.K),a.pb[Z[11]]=v(g.C),a.pb[Z[12]]=v(g.Y),a.pb[Z[13]]=v(g.I),a.pb[Z[14]]=v(g.G),a.pb[Z[15]]=v(g.F),a.pb[Z[16]]=v(g.ab.sa),
a.pb[Z[17]]=v(g.ya.sa),a.pb[Z[18]]=v(g.Cb.sa),a.pb[Z[19]]=v(g.Hb.sa),a.pb[Z[20]]=v(g.va),d=" "+ka(a.pb,d);a.message("INT 0x"+t(b)+": AH="+t(f)+" at "+ea(c-a.T.ya.Ya,a.T.ya.sa)+d)}return e}function bd(a,b,c,d,e){a.message("INT 0x"+t(b)+": C="+(od(a.T)?1:0)+(e||"")+" (cycles="+d+(c?",level="+(c+1):"")+")")}
@ -752,7 +752,7 @@ function Om(a,b){if(ua("There may be a problem with your PCjs machine.\n\nTo hel
function Fm(a,b,c){var d,e="none",f=new gd(a,"1.16.0"),g=new gd(a,"1.16.0","validate"),h=pa();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.16.0");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.T&&a.T.Zb&&(c&&a.T.Fb(),d=a.T.Zb(b,c),"object"===typeof d&&f.set(a.T.id,d),c&&(a.T.qa.Qb=!1,!1===d&&(e=null)));for(var h=Va(a.id),l=0;l<h.length;l++){var n=h[l];n.qa.Qb&&(n.Zb&&(d=n.Zb(b,c),"object"===typeof d&&f.set(n.id,d)),c&&(n.qa.Qb=
!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.Sc&&Qm(a,a.Sc,f.toString()),Im(g)&&Im(f)||(e=null,d=h=!0)):a.Rc&&(d=!0,h=3==a.Rc),d&&f.clear(h)):e=f.toString());c&&(a.qa.Qb=!1);return e}k.reset=function(){this.ra&&this.ra.reset&&(this.Sa("Resetting "+this.ra.type,!0),this.ra.reset());for(var a=Va(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ra&&c.reset&&(this.Sa("Resetting "+c.type,!0),c.reset())}};
k.start=function(a,b){for(var c=Va(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};k.stop=function(a,b){for(var c=Va(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
k.Db=function(a,b,c,d){var e=this;switch(c){case "save":return this.wa[c]=d,d.onclick=function(){var a=Lm(e,!0);if(a){var b=!(!e.Rc||e.Th),c=Fm(e,b);b?Qm(e,a,c):e.Ja("Resume disabled, machine state not saved")}},!0;case "reset":return this.wa[c]=d,d.onclick=function(){Vb(e)},!0}return!1};
k.Db=function(a,b,c){var d=this;switch(b){case "save":return this.wa[b]=c,c.onclick=function(){var a=Lm(d,!0);if(a){var b=!(!d.Rc||d.Th),c=Fm(d,b);b?Qm(d,a,c):d.Ja("Resume disabled, machine state not saved")}},!0;case "reset":return this.wa[b]=c,c.onclick=function(){Vb(d)},!0}return!1};
function Lm(a,b){var c=a.Sc;c||(c=ya("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("To save machine states on the pcjs.org server, you need a user ID (email support@pcjs.org).\n\nOnce you have an ID, enter it below.","")),c&&((c=Rm(a,c))||a.Ja("Your user ID has not been approved."))):b&&a.Ja("Browser local storage is not available"));return c}
function Rm(a,b){a.Sc=null;var c=sa(ta()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(za("user",c.data),a.Sc=c.data)}catch(e){x(e.message+" ("+d+")")}return a.Sc}
function Qm(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Gm(a,"1.16.0");d.data=c;b=sa(ta()+"/api/v1/user",!1,d);d=b[1];if(b[0]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[0]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.Ja("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.Ja(c),za("user",""),a.Sc=null)}}

View file

@ -10,16 +10,16 @@ function v(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.na
if(window){Aa||(Aa=window.location.search.substr(1));for(var Ca,Da=/\+/g,Ea=/([^&=]+)=?([^&]*)/g;Ca=Ea.exec(Aa);)Ba[decodeURIComponent(Ca[1].replace(Da," "))]=decodeURIComponent(Ca[2].replace(Da," "))}function Fa(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 y(a,b){b.prototype=Fa(a.prototype)}var x=[];
function Ga(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<x.length;b++){var d=x[b];a&&d.id.indexOf(a)||c.push(d)}return c}function Ha(a,b){if(void 0!==a){var c;b&&0<(c=b.indexOf("."))&&(a=b.substr(0,c+1)+a);for(c=0;c<x.length;c++)if(x[c].id===a)return x[c]}return null}
function Ia(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<x.length;d++)if(c)c==x[d]&&(c=null);else if(!(a!=x[d].type||b&&x[d].id.indexOf(b)))return x[d]}return null}function z(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("({"+a+"})")}catch(c){s(c.message+" ("+a+")")}return b}window&&!window.document.ELEMENT_NODE&&(window.document.ELEMENT_NODE=1);
function Ja(a,b){for(var c=A(b.parentNode,"pcjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(h.nodeType===window.document.ELEMENT_NODE){var g=h.getAttribute("class");if(g)for(var m=g.split(" "),n=0;n<m.length;n++)switch(g=m[n],g){case "pcjs-input":case "pcjs-output":(n=z(h))&&n.binding&&a.Bb(g,n.type,n.binding,h),n=m.length}}}}
function Ja(a,b){for(var c=A(b.parentNode,"pcjs-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(h.nodeType===window.document.ELEMENT_NODE){var g=h.getAttribute("class");if(g)for(var m=g.split(" "),n=0;n<m.length;n++)switch(g=m[n],g){case "pcjs-binding":(g=z(h))&&g.binding&&a.Bb(g.type,g.binding,h),n=m.length}}}}
function A(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}
v.prototype={toString:function(){return this.name?this.name:this.id||this.type},Bb:function(a,b,c,d){switch(c){case "clear":return this.qa[c]||(this.qa[c]=d,d.onclick=function(a){return function(){a.qa.print&&(a.qa.print.value="")}}(this)),!0;case "print":return this.qa[c]||(this.Ah=this.qa[c]=d,d.value="",this.$b=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.ya=
function(a,b,c){this.$b(a,"notice",c)}),!0;default:return!1}},log:function(){},$b:function(){},status:function(a){this.$b(this.Wh+": "+a)},ya:function(a,b){b||s(a)},Na:function(a){this.na.Pc||(this.na.Cg=!1!==a,this.na.Cg&&(this.name&&this.log("ready"),a=this.Rh,this.Rh=null,a&&a()))},Sb:function(){return this.na.Hb=!0},Rb:function(a,b){b&&(this.na.Hb=!1);return!0}};
function Ka(a,b){if(a.na.Ih)return a.na.uc&&(a.na.uc=!1),a.na.Ih=!1;if(a.na.Pc)return a.$b(a.toString()+" error"),!1;a.na.uc=b;return a.na.uc}function La(a,b){b&&(a.na.Cg?b():a.Rh=b);return a.na.Cg}function Ma(a,b){a.na.Pc=!0;a.ya("Fatal error: "+b)}function Na(a){v.call(this,"Panel",a,Na)}y(v,Na);Na.prototype.Bb=function(a,b,c,d){return this.Ma&&this.Ma.Bb(a,b,c,d)||this.ka&&this.ka.Bb(a,b,c,d)||this.Ka&&this.Ka.Bb(a,b,c,d)?!0:v.prototype.Bb.call(this,a,b,c,d)};
Na.prototype.oc=function(a,b,c,d){this.Ma=a;this.ka=c;this.Va=d;this.Ka=B(a,"Keyboard")};Na.prototype.Sb=function(a,b){b||Oa();return!0};Na.prototype.Rb=function(){return!0};function Oa(){for(var a=!1,b=A(window.document,"pcjs","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=Ha(e.id);f||(a=!0,f=new Na(e));Ja(f,d);a&&f.Na()}}u(Oa);
function Pa(a,b,c){v.call(this,"Bus",a,Pa);this.ka=b;this.Va=c;this.sf=a.buswidth||20;this.qh=this.Zc=(1<<this.sf)-1;this.Pb=20>=this.sf?12:14;this.rc=1<<this.Pb;this.zj=this.rc>>2;this.nb=this.rc-1;this.og=(this.qh+this.rc)/this.rc|0;this.$d=this.og-1;this.$f=[];this.ag=[];this.Yh();this.Na()}y(v,Pa);Pa.prototype.Yh=function(){this.Ba=Array(this.og);for(var a=0;a<this.og;a++)this.Ba[a]=new Qa(a*this.rc);this.ka.Yh(this.Ba,this.qh,this.Pb,this.nb,this.$d);this.ka.Vd=this.Zc};
Pa.prototype.reset=function(){Ra(this,!0)};Pa.prototype.Sb=function(a,b){b||this.reset();return!0};function Sa(a,b,c,d,e){if(!(b&a.nb||!c||c&a.nb)){for(var f=b>>a.Pb;0<c&&f<a.Ba.length;){var h=a.Ba[f];if(void 0!==h&&h.size)return Ta(1,b,c);b=f*a.rc;a.Ba[f++]=new Qa(b,a.rc,d,e);c-=a.rc}return!0}return Ta(2,b,c)}function Ra(a,b){if(void 0!==b&&20<a.sf){var c=a.Zc&-1048577|(b?1048576:0);c!=a.Zc&&(a.Zc=c,a.ka&&(a.ka.Vd=c))}}
Pa.prototype.eh=function(a,b,c){if(!(a&this.nb||!b||b&this.nb)){for(var d=a>>this.Pb;0<b;){var e=this.Ba[d];if(!e.ea)return Ta(5,a,b);e.ue(c);b-=this.rc;d++}return!0}return Ta(3,a,b)};function Wa(a,b,c){if(!(b&a.nb||!c||c&a.nb)){for(var d=b>>a.Pb;0<c;)b=d*a.rc,a.Ba[d++]=new Qa(b),c-=a.rc;return!0}return Ta(4,b,c)}function Xa(a,b){return a.Ba[(b&a.Zc)>>a.Pb].aj(b&a.nb)}function Ya(a,b){var c=b&a.nb,d=(b&a.Zc)>>a.Pb;return c!=a.nb?a.Ba[d].eo(c):a.Ba[d++].aj(c)|a.Ba[d&a.$d].aj(0)<<8}
function Za(a,b,c){a.Ba[(b&a.Zc)>>a.Pb].ij(b&a.nb,c&255)}function $a(a,b,c){var d=b&a.nb;b=(b&a.Zc)>>a.Pb;d!=a.nb?a.Ba[b].qo(d,c&65535):(a.Ba[b++].ij(d,c&255),a.Ba[b&a.$d].ij(0,c>>8&255))}function ab(a){for(var b=0,c=[],d=0;d<a.og;d++){var e=a.Ba[d];if(e.fb||e.Hj){c[b++]=d;var f=c,h=b++;a:if(e=e.save()){for(var g=0,m=0,n=[];g<e.length;){for(var q=e[g],w=g+1;w<e.length&&e[w]===q;)w++;n[m++]=w-g;n[m++]=q;g=w}if(n.length<e.length){e=n;break a}}f[h]=e}}c[b]=a.qh==a.Zc;return c}
v.prototype={toString:function(){return this.name?this.name:this.id||this.type},Bb:function(a,b,c){switch(b){case "clear":return this.qa[b]||(this.qa[b]=c,c.onclick=function(a){return function(){a.qa.print&&(a.qa.print.value="")}}(this)),!0;case "print":return this.qa[b]||(this.Ah=this.qa[b]=c,c.value="",this.$b=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,
b,c){this.$b(a,"notice",c)}),!0;default:return!1}},log:function(){},$b:function(){},status:function(a){this.$b(this.Wh+": "+a)},ya:function(a,b){b||s(a)},Na:function(a){this.na.Pc||(this.na.Cg=!1!==a,this.na.Cg&&(this.name&&this.log("ready"),a=this.Rh,this.Rh=null,a&&a()))},Sb:function(){return this.na.Hb=!0},Rb:function(a,b){b&&(this.na.Hb=!1);return!0}};function Ka(a,b){if(a.na.Ih)return a.na.uc&&(a.na.uc=!1),a.na.Ih=!1;if(a.na.Pc)return a.$b(a.toString()+" error"),!1;a.na.uc=b;return a.na.uc}
function La(a,b){b&&(a.na.Cg?b():a.Rh=b);return a.na.Cg}function Ma(a,b){a.na.Pc=!0;a.ya("Fatal error: "+b)}function Na(a){v.call(this,"Panel",a,Na)}y(v,Na);Na.prototype.Bb=function(a,b,c){return this.Ma&&this.Ma.Bb(a,b,c)||this.ka&&this.ka.Bb(a,b,c)||this.Ka&&this.Ka.Bb(a,b,c)?!0:v.prototype.Bb.call(this,a,b,c)};Na.prototype.oc=function(a,b,c,d){this.Ma=a;this.ka=c;this.Va=d;this.Ka=B(a,"Keyboard")};Na.prototype.Sb=function(a,b){b||Oa();return!0};Na.prototype.Rb=function(){return!0};
function Oa(){for(var a=!1,b=A(window.document,"pcjs","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f=Ha(e.id);f||(a=!0,f=new Na(e));Ja(f,d);a&&f.Na()}}u(Oa);function Pa(a,b,c){v.call(this,"Bus",a,Pa);this.ka=b;this.Va=c;this.sf=a.buswidth||20;this.qh=this.Zc=(1<<this.sf)-1;this.Pb=20>=this.sf?12:14;this.rc=1<<this.Pb;this.zj=this.rc>>2;this.nb=this.rc-1;this.og=(this.qh+this.rc)/this.rc|0;this.$d=this.og-1;this.$f=[];this.ag=[];this.Yh();this.Na()}y(v,Pa);
Pa.prototype.Yh=function(){this.Ba=Array(this.og);for(var a=0;a<this.og;a++)this.Ba[a]=new Qa(a*this.rc);this.ka.Yh(this.Ba,this.qh,this.Pb,this.nb,this.$d);this.ka.Vd=this.Zc};Pa.prototype.reset=function(){Ra(this,!0)};Pa.prototype.Sb=function(a,b){b||this.reset();return!0};function Sa(a,b,c,d,e){if(!(b&a.nb||!c||c&a.nb)){for(var f=b>>a.Pb;0<c&&f<a.Ba.length;){var h=a.Ba[f];if(void 0!==h&&h.size)return Ta(1,b,c);b=f*a.rc;a.Ba[f++]=new Qa(b,a.rc,d,e);c-=a.rc}return!0}return Ta(2,b,c)}
function Ra(a,b){if(void 0!==b&&20<a.sf){var c=a.Zc&-1048577|(b?1048576:0);c!=a.Zc&&(a.Zc=c,a.ka&&(a.ka.Vd=c))}}Pa.prototype.eh=function(a,b,c){if(!(a&this.nb||!b||b&this.nb)){for(var d=a>>this.Pb;0<b;){var e=this.Ba[d];if(!e.ea)return Ta(5,a,b);e.ue(c);b-=this.rc;d++}return!0}return Ta(3,a,b)};function Wa(a,b,c){if(!(b&a.nb||!c||c&a.nb)){for(var d=b>>a.Pb;0<c;)b=d*a.rc,a.Ba[d++]=new Qa(b),c-=a.rc;return!0}return Ta(4,b,c)}function Xa(a,b){return a.Ba[(b&a.Zc)>>a.Pb].aj(b&a.nb)}
function Ya(a,b){var c=b&a.nb,d=(b&a.Zc)>>a.Pb;return c!=a.nb?a.Ba[d].eo(c):a.Ba[d++].aj(c)|a.Ba[d&a.$d].aj(0)<<8}function Za(a,b,c){a.Ba[(b&a.Zc)>>a.Pb].ij(b&a.nb,c&255)}function $a(a,b,c){var d=b&a.nb;b=(b&a.Zc)>>a.Pb;d!=a.nb?a.Ba[b].qo(d,c&65535):(a.Ba[b++].ij(d,c&255),a.Ba[b&a.$d].ij(0,c>>8&255))}
function ab(a){for(var b=0,c=[],d=0;d<a.og;d++){var e=a.Ba[d];if(e.fb||e.Hj){c[b++]=d;var f=c,h=b++;a:if(e=e.save()){for(var g=0,m=0,n=[];g<e.length;){for(var q=e[g],w=g+1;w<e.length&&e[w]===q;)w++;n[m++]=w-g;n[m++]=q;g=w}if(n.length<e.length){e=n;break a}}f[h]=e}}c[b]=a.qh==a.Zc;return c}
function bb(a,b,c,d){void 0===d&&(d=0);for(var e in c){e=parseInt(e,10);var f=a,h=e+d,g=b,m=c[e];if(void 0!==m)for(var n=e+d;n<=h;n++)void 0!==f.$f[n]?s("Input port "+p(n,4)+" registered by "+f.$f[n][0].id+", ignoring "+g.id):f.$f[n]=[g,m,!1,!1]}}function cb(a,b,c){var d=255;a=a.$f[b];void 0!==a&&a[1]&&(d=a[1].call(a[0],b,c));return d}
function db(a,b,c,d){void 0===d&&(d=0);for(var e in c){e=parseInt(e,10);var f=a,h=e+d,g=b,m=c[e];if(void 0!==m)for(var n=e+d;n<=h;n++)void 0!==f.ag[n]?s("Output port "+p(n,4)+" registered by "+f.ag[n][0].id+", ignoring "+g.id):f.ag[n]=[g,m,!1,!1]}}function eb(a,b,c,d){a=a.ag[b];void 0!==a&&a[1]&&a[1].call(a[0],b,c,d)}function Ta(a,b,c){s("Memory block error ("+a+","+p(b)+","+p(c)+")");return!1}
function Qa(a,b,c,d){this.zl=b||0;this.pa=null;this.offset=0;this.Lj=c;this.ea=null;this.fb=this.Hj=!1;if(b)if(d)this.ea=d,a=[d.Wd,a-d.Ra],this.pa=a[0],this.offset=a[1],this.ue(d.df);else{this.pa=Array(b>>2);for(d=0;d<this.pa.length;d++)this.pa[d]=0;this.ue(fb)}else this.ue()}
@ -29,7 +29,7 @@ function gb(a,b){v.call(this,"CPU",a,gb);var c=a.cycles||b,d=a.multiplier||1;thi
k.oc=function(a,b,c,d){this.ra=b;this.Va=d;this.Ma=a;var e=B(a,"Video");e&&(this.pf=function(){ib(e)},this.od=function(){e.od()});this.ja=B(a,"ChipSet");this.Na()};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};k.Sb=function(a,b){if(!b){if(a&&this.restore){jb(this);if(!this.restore(a))return!1;kb(this)}else this.reset();this.$b("No debugger detected")}this.na.Hb=!0;!lb(this)&&this.Va&&this.Va.Lp();this.pf();this.of();return!0};
k.Rb=function(a){this.na.Hb=!1;return a&&this.save?this.save():!0};function lb(a){return!0===a.na.Hh||null===a.na.Hh&&void 0===a.qa.run?(hb(a),!0):!1}k.od=function(){};k.Pj=function(){return 0};function kb(a){void 0===a.ba.Pg&&(a.ba.Pg=0);void 0===a.ba.uf&&(a.ba.uf=-1);void 0===a.ba.vf&&(a.ba.vf=-1);a.na.xg=0<=a.ba.Pg&&0<a.ba.uf;a.na.xg&&(a.ba.Og=0,a.ba.Ue=a.ba.Pg-a.pe)}
function D(a,b,c,d){void 0!==a.qa[b]&&(void 0===d&&(d=4),void 0===c&&(Ma(a,"Register "+b+" is invalid"),mb(a)),c=p(c,d),a.qa[b].innerHTML!=c&&(a.qa[b].innerHTML=c))}k.of=function(){};k.pf=function(){};
k.Bb=function(a,b,c,d){var e=this;a=!1;switch(c){case "run":this.qa[c]=d;d.onclick=function(){e.na.vc?mb(e,!0):hb(e,!0)};a=!0;break;case "reset":this.qa[c]=d;d.onclick=function(){e.Ma&&nb(e.Ma)};a=!0;break;case "speed":this.qa[c]=d;a=!0;break;case "setSpeed":this.qa[c]=d,d.onclick=function(){ob(e,e.ba.Gd<<1,!0)},d.innerHTML=this.ba.Se.toFixed(2)+"Mhz",a=!0}return a};function pb(a,b,c){a.pe+=b;c&&(a.Sc=a.A=0)}
k.Bb=function(a,b,c){var d=this;a=!1;switch(b){case "run":this.qa[b]=c;c.onclick=function(){d.na.vc?mb(d,!0):hb(d,!0)};a=!0;break;case "reset":this.qa[b]=c;c.onclick=function(){d.Ma&&nb(d.Ma)};a=!0;break;case "speed":this.qa[b]=c;a=!0;break;case "setSpeed":this.qa[b]=c,c.onclick=function(){ob(d,d.ba.Gd<<1,!0)},c.innerHTML=this.ba.Se.toFixed(2)+"Mhz",a=!0}return a};function pb(a,b,c){a.pe+=b;c&&(a.Sc=a.A=0)}
function qb(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1<a.ba.Gd&&a.ba.Rc&&(d=a.ba.Rc/a.ba.Jg);a.ba.Vj=Math.round(1E3/30);a.ba.Zm=Math.floor(a.ba.ld/c*d);a.ba.ei=Math.floor(a.ba.ld/30*d);a.ba.Zj=Math.floor(a.ba.ld/60*d);a.ba.Yj=Math.floor(a.ba.ld/2*d);b||(a.ba.yf=a.ba.ei,a.ba.xf=a.ba.Zj,a.ba.wf=a.ba.Yj);a.ba.fi=0}function rb(a,b){var c=a.pe+a.Ld+a.Sc-a.A;b&&1<a.ba.Gd&&a.ba.Rc>a.ba.Jg&&(c=Math.round(c/a.ba.Gd));return c}function jb(a){a.ba.Rc=0;a.Mg=1;a.pe=a.Ld=a.Sc=a.A=0;kb(a);ob(a,1)}
function ob(a,b,c){if(void 0!==b){0.8>a.ba.Rc/a.ba.Se&&(b=1);a.ba.Gd=b;b=a.ba.Jg*a.ba.Gd;if(a.ba.Se!=b){a.ba.Se=b;b=a.ba.Se.toFixed(2)+"Mhz";var d=a.qa.setSpeed;d&&(d.innerHTML=b);a.$b("target speed: "+b)}c&&a.od()}pb(a,a.Ld);a.Ld=0;a.ba.Te=ha();a.ba.me=0;qb(a)}
function hb(a,b){if(Ka(a,!0)){if(!a.na.vc){ob(a);a.Ma&&a.Ma.start(a.ba.Te,rb(a));a.na.vc=!0;a.ja&&sb(a.ja);var c=a.qa.run;c&&(c.innerHTML="Halt");b&&a.od()}a.ba.fi>=a.ba.ld&&qb(a,!0);a.ba.zf=0;a.ba.Lg=ha();a.ba.me&&(c=a.ba.Lg-a.ba.me,c>a.ba.Vj&&(a.ba.Te+=c,a.ba.Te>a.ba.Lg&&(a.ba.Te=a.ba.Lg)));try{do{a.ol(a.na.xg?1:Math.round(a.ba.Zm/a.Mg));var d=a.Sc-a.A;a.Ld+=d;a.ba.zf+=d;pb(a,0,!0);var c=a,e=d;if(c.na.xg){var f=!1;c.ba.Og=c.ba.Og+c.Pj()|0;c.ba.Ue-=e;0>=c.ba.Ue&&(c.ba.Ue+=c.ba.uf,f=!0);0<=c.ba.vf&&
@ -54,7 +54,7 @@ function sc(a,b){switch(b){case "CS":return a.za;case "DS":return a.ac;case "SS"
function uc(a,b){a.Ha=a.za.load(b)+a.va;a.Z|=a.Xf}function vc(a,b){a.ac.load(b);a.Z|=a.Xf}function wc(a,b){a.Vb.load(b);a.Z|=4}function xc(a,b){a.qb.load(b);a.Z|=a.Xf}function I(a,b){a.Ha=a.za.rb+(a.va=b&65535)}function jc(a,b,c){a.Ha=a.za.load(c)+(a.va=b)}function J(a,b){a.Ha=a.za.rb+(a.va=a.va+b&65535)}function yc(a){return a.X&a.ca?1:0}function Bc(a){return ub[a.ia&255]?4:0}function Cc(a){return(a.ia^a.la)&16?16:0}function Dc(a){return a.X&a.ca-1?0:64}function Ec(a){return a.ia&a.ca>>1?128:0}
function Fc(a){return(a.ia^a.la^a.ia>>1)&a.ca>>1?2048:0}function Gc(a){a.X&=~a.ca}function Hc(a){a.la=a.ia&16|a.la&-17}function Ic(a){a.X|=a.ca-1}function Jc(a){a.ia&=~a.ca;a.la=a.ia&32896|a.la&-32897}function Kc(a){a.X|=a.ca}function Lc(a){a.la=~(a.ia&16)&16|a.la&-17}function Mc(a){a.X&=~(a.ca-1)}function Nc(a){Ec(a)||(a.ia^=a.ca>>1|a.ca>>2,a.la^=32896)}function Oc(a){a.ia|=a.ca;a.la=a.ia&32896|a.la&-32897}function mc(a){return a.Ga&-2262|yc(a)|Bc(a)|Cc(a)|Dc(a)|Ec(a)|Fc(a)}
function kc(a,b){a.ca=256;a.X=a.ia=a.la=0;b&1&&Kc(a);b&4||(a.ia|=1);b&16&&(a.la|=16);b&64||Ic(a);b&128&&Nc(a);b&2048&&Oc(a);a.za.sc?b=b&-12289|a.Ga&12288:(a.Hd=(b&12288)>>12,!a.Hd||a.Lc&1||(a.Hd=0));a.za.sc>a.Hd&&(b=b&-513|a.Ga&512);a.Ga=a.Ga&-1793|b&1792|a.oj;a.Ga&256&&(a.gb|=2,a.Z|=4)}
k.Bb=function(a,b,c,d){var e=!1;switch(c){case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "CS":case "DS":case "SS":case "ES":case "IP":case "PC":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "O":this.qa[c]=d;e=!0;break;default:e=gb.prototype.Bb.call(this,a,b,c,d)}return e};function Pc(a,b){return a.Ba[(b&a.Vd)>>a.Pb].yc(b&a.nb)}
k.Bb=function(a,b,c){var d=!1;switch(b){case "AX":case "BX":case "CX":case "DX":case "SP":case "BP":case "SI":case "DI":case "CS":case "DS":case "SS":case "ES":case "IP":case "PC":case "PS":case "C":case "P":case "A":case "Z":case "S":case "T":case "I":case "D":case "O":this.qa[b]=c;d=!0;break;default:d=gb.prototype.Bb.call(this,a,b,c)}return d};function Pc(a,b){return a.Ba[(b&a.Vd)>>a.Pb].yc(b&a.nb)}
function E(a,b){var c=b&a.nb,d=(b&a.Vd)>>a.Pb;a.A-=a.B.Vi;return c!=a.nb?a.Ba[d].co(c):a.Ba[d++].yc(c)|a.Ba[d&a.$d].yc(0)<<8}function Qc(a,b,c){a.Ba[(b&a.Vd)>>a.Pb].Bc(b&a.nb,c&255)}function Rc(a,b,c){var d=b&a.nb;b=(b&a.Vd)>>a.Pb;a.A-=a.B.Vi;d!=a.nb?a.Ba[b].po(d,c&65535):(a.Ba[b++].Bc(d,c&255),a.Ba[b&a.$d].Bc(0,c>>8&255))}k.Pl=function(a,b){this.Sf=a;this.ha=a.cd(this.Lf=b,0);return this.Z&1?0:Pc(this,this.ha)};k.Ql=function(a,b){this.Sf=a;this.ha=a.cd(this.Lf=b,1);return this.Z&1?0:E(this,this.ha)};
k.Tm=function(a,b){this.Sf=a;this.Fa=this.ha=a.cd(this.Lf=b,0);return this.Z&1?0:Pc(this,this.ha)};k.Um=function(a,b){this.Sf=a;this.Fa=this.ha=a.cd(this.Lf=b,1);return this.Z&1?0:E(this,this.ha)};k.mo=function(a){this.Z&2||Qc(this,this.Sf.dc(this.Lf,1),a)};k.no=function(a){this.Z&2||Rc(this,this.Sf.dc(this.Lf,2),a)};k.da=function(){var a=Pc(this,this.Ha);this.Ha=this.za.rb+(this.va=this.va+1&65535);return a};
k.M=function(){var a=Pc(this,this.Ha)<<24>>24;this.Ha=this.za.rb+(this.va=this.va+1&65535);return a&65535};k.L=function(){var a=E(this,this.Ha);this.Ha=this.za.rb+(this.va=this.va+2&65535);return a};k.Ea=function(){var a=this.Y;this.Y=this.Y+2&65535;return E(this,this.Vb.cd(a,1))};function L(a,b){var c=a.Y=a.Y-2&65535;Rc(a,a.Vb.dc(c,1),b)}
@ -419,7 +419,7 @@ this.da();eb(this.ra,a,this.H&255,this.Ha-2);this.A-=this.B.Fi},function(){var a
ec,Fd)}];
function R(a){v.call(this,"ChipSet",a,R);this.Da=(this.Da=a.model)?parseInt(this.Da,10):ih;this.Mb=0;var b=a.sw1;if(b)this.Mb=jh(b,kh|lh.vl);else{this.rd=[360,360];(b=a.floppies)&&b.length&&(this.rd=b);if(b=this.rd.length)this.Mb|=mh.jh,b--,this.Mb|=(b&3)<<mh.$e;if(b=a.monitor||(this.Da<nh?"mono":"ega"),void 0!==oh[b])this.Mb|=oh[b]<<lh.$e}this.Qd=jh(a.sw2||"11110000",0);this.Sm=this.Da==ih?16:64;this.pg=this.qg=1;this.Da>=nh&&(this.pg=this.qg=2);this.Dg=a.scaleTimers||!1;this.lo=a.rtcDate;this.Nj=
!1;a.sound&&window&&"webkitAudioContext"in window&&(this.zh=new window.webkitAudioContext);this.reset(!0);this.Na()}y(v,R);var ih=5150,nh=5170,oh={none:0,tv:1,color:2,mono:3,ega:0},mh={jh:1,ONE:0,dp:64,bp:128,Bo:192,Ze:192,$e:6},kh=12,lh={cp:16,uo:32,vl:48,Ze:48,$e:4};k=R.prototype;
k.Bb=function(a,b,c,d){switch(c){case "sw1":return this.qa[c]=d,ph(this,c,d,this.Mb,{0:this.Da==ih?"Bootable Floppy Drive":"Loop on POST",1:this.Da==ih?"Reserved":"Coprocessor",2:"Base Memory Size",4:"Monitor Type",6:"Number of Floppy Drives"}),!0;case "sw2":if(this.Da==ih)return this.qa[c]=d,ph(this,c,d,this.Qd,{0:"Expansion Memory Size",4:"Reserved"}),!0;break;case "swdesc":return this.qa[c]=d,!0}return!1};
k.Bb=function(a,b,c){switch(b){case "sw1":return this.qa[b]=c,ph(this,b,c,this.Mb,{0:this.Da==ih?"Bootable Floppy Drive":"Loop on POST",1:this.Da==ih?"Reserved":"Coprocessor",2:"Base Memory Size",4:"Monitor Type",6:"Number of Floppy Drives"}),!0;case "sw2":if(this.Da==ih)return this.qa[b]=c,ph(this,b,c,this.Qd,{0:"Expansion Memory Size",4:"Reserved"}),!0;break;case "swdesc":return this.qa[b]=c,!0}return!1};
k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.Ma=a;this.Ka=B(a,"Keyboard");this.al=Math.round(c.ba.ld/1193181);bb(b,this,qh);db(b,this,rh);this.Da<nh?(bb(b,this,sh),db(b,this,th)):(bb(b,this,uh),db(b,this,vh))};k.Sb=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.Rb=function(a){return a&&this.save?this.save():!0};
k.reset=function(a){var b;this.Mc=this.Mb;this.we=this.Qd;wh(this);this.Xa=Array(this.pg);for(b=0;b<this.pg;b++)xh(this,b);this.ub=Array(this.qg);yh(this,0,32);1<this.qg&&yh(this,1,160);this.vh=null;this.Nb=Array(3);for(b=0;b<this.Nb.length;b++)zh(this,b);this.hf=this.th=this.kc=this.lg=null;this.kg=0;if(this.Da>=nh){this.lb=16;this.$c=0;this.Nc=16;this.fg=0;this.Xd=160;512<=Ah(this)&&(this.Xd|=16);3==Bh(this)&&(this.Xd|=64);this.rh=3;this.ig=0;this.Ob=Array(7);this.Fe=0;a&&(this.oa=Array(64));Ch(this,
this.lo);for(a=21;24>=a;a++)this.oa[a]=0;for(a=14;46>a;a++)void 0===this.oa[a]&&(this.oa[a]=0);this.oa[20]=this.Mc&(lh.Ze|2|mh.jh|mh.Ze);this.oa[16]=Dh(this,0)<<4|Dh(this,1);Eh(this)}};
@ -474,9 +474,9 @@ bs:14,tab:15,q:16,w:17,e:18,r:19,t:20,y:21,u:22,i:23,o:24,p:25,"[":26,"]":27,ent
T[S["7"]]=8;T[S["&"]]=10760;T[S["8"]]=9;T[S["*"]]=10761;T[S["9"]]=10;T[S["("]]=10762;T[S["0"]]=11;T[S[")"]]=10763;T[S["-"]]=12;T[S._]=10764;T[S["="]]=13;T[S["+"]]=10765;T[1008]=14;T[1009]=15;T[113]=16;T[81]=10768;T[119]=17;T[87]=10769;T[101]=18;T[69]=10770;T[114]=19;T[82]=10771;T[116]=20;T[84]=10772;T[121]=21;T[89]=10773;T[117]=22;T[85]=10774;T[105]=23;T[73]=10775;T[111]=24;T[79]=10776;T[112]=25;T[80]=10777;T[S["["]]=26;T[S["{"]]=10778;T[S["]"]]=27;T[S["}"]]=10779;T[13]=28;T[1017]=29;T[97]=30;
T[65]=10782;T[115]=31;T[83]=10783;T[100]=32;T[68]=10784;T[102]=33;T[70]=10785;T[103]=34;T[71]=10786;T[104]=35;T[72]=10787;T[106]=36;T[74]=10788;T[107]=37;T[75]=10789;T[108]=38;T[76]=10790;T[S[";"]]=39;T[S[":"]]=10791;T[S["'"]]=40;T[S['"']]=10792;T[S["`"]]=41;T[S["~"]]=10793;T[1016]=42;T[S["\\"]]=43;T[S["|"]]=10795;T[122]=44;T[90]=10796;T[120]=45;T[88]=10797;T[99]=46;T[67]=10798;T[118]=47;T[86]=10799;T[98]=48;T[66]=10800;T[110]=49;T[78]=10801;T[109]=50;T[77]=10802;T[S[","]]=51;T[S["<"]]=10803;
T[S["."]]=52;T[S[">"]]=10804;T[S["/"]]=53;T[S["?"]]=10805;T[3016]=54;T[1018]=56;T[S[" "]]=57;T[1020]=58;T[1112]=59;T[1113]=60;T[1114]=61;T[1115]=62;T[1116]=63;T[1117]=64;T[1118]=65;T[1119]=66;T[1120]=67;T[1121]=68;T[1144]=69;T[1145]=70;T[1036]=71;T[1038]=72;T[1033]=73;T[1037]=75;T[1039]=77;T[1035]=79;T[1040]=80;T[1034]=81;T[1045]=82;T[1046]=83;T[1122]=87;T[1123]=88;T[4003]=7470;T[4063]=7494;T[4081]=3677523;k=Bi.prototype;
k.Bb=function(a,b,c,d){var e=this;a=b+"-"+c;if(void 0===this.qa[a])switch(c){case "kbd":return this.qa[a]=d,d.onkeydown=function(a){return Gi(e,a,!0)},d.onkeypress=function(a){var b=!0;a=a||window.event;a=a.which||a.keyCode;8==a||9==a?b=!1:e.Qa&64?e.Qa&=-65:e.Qa&40?b=!1:(e.Ij&&a==S["`"]&&(a=27),b=!Hi(e,a));return b},d.onkeyup=function(a){return Gi(e,a,!1)},!0;case "caps-lock":return this.qa[a]=d,d.onclick=function(){e.ka&&e.ka.od();Hi(e,1020,!0)},!0;case "num-lock":return this.qa[a]=d,d.onclick=function(){e.ka&&
e.ka.od();Hi(e,1144,!0)},!0;case "scroll-lock":return this.qa[a]=d,d.onclick=function(){e.ka&&e.ka.od();Hi(e,1145,!0)},!0;default:if(void 0!==Ei[c]&&"button"==b)return this.qa[a]=d,d.onclick=function(a,b,c){return function(){a.ka&&a.ka.od();Ii(a,c);return!Hi(a,c)}}(this,c,Ei[c]),!0;if(void 0!==Fi[c])return this.qa[a]=d,b=function(a,b,c){return function(){Ji(a,c)}}(this,c,Fi[c]),c=function(a,b,c){return function(){Ji(a,c)}}(this,c,Fi[c]|128),"ontouchstart"in window?(d.ontouchstart=b,d.ontouchend=c):
(d.onmousedown=b,d.onmouseup=d.onmouseout=c),!0}return!1};k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.ja=B(a,"ChipSet")};k.Na=function(){this.Ll=(this.Ul=qa("iOS"))||qa("Android");return v.prototype.Na.call(this)};function qi(a,b,c){var d=!1;a.Kh!==c&&(a.Kh=a.Oh=c);a.zg!==b&&(a.zg=b)&&!a.Oh&&vi(a);a.zg&&a.Oh&&(a.cc=[170],a.ja&&ui(a.ja),a.Oh=!1,d=!0);return d}function oi(a,b){var c=0;a.cc.length&&(c=a.cc[0],b&&vi(a));return c}
k.Bb=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.qa[e])switch(b){case "kbd":return this.qa[e]=c,c.onkeydown=function(a){return Gi(d,a,!0)},c.onkeypress=function(a){var b=!0;a=a||window.event;a=a.which||a.keyCode;8==a||9==a?b=!1:d.Qa&64?d.Qa&=-65:d.Qa&40?b=!1:(d.Ij&&a==S["`"]&&(a=27),b=!Hi(d,a));return b},c.onkeyup=function(a){return Gi(d,a,!1)},!0;case "caps-lock":return this.qa[e]=c,c.onclick=function(){d.ka&&d.ka.od();Hi(d,1020,!0)},!0;case "num-lock":return this.qa[e]=c,c.onclick=function(){d.ka&&
d.ka.od();Hi(d,1144,!0)},!0;case "scroll-lock":return this.qa[e]=c,c.onclick=function(){d.ka&&d.ka.od();Hi(d,1145,!0)},!0;default:if(void 0!==Ei[b]&&"button"==a)return this.qa[e]=c,c.onclick=function(a,b,c){return function(){a.ka&&a.ka.od();Ii(a,c);return!Hi(a,c)}}(this,b,Ei[b]),!0;if(void 0!==Fi[b])return this.qa[e]=c,a=function(a,b,c){return function(){Ji(a,c)}}(this,b,Fi[b]),b=function(a,b,c){return function(){Ji(a,c)}}(this,b,Fi[b]|128),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=b):
(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}return!1};k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.ja=B(a,"ChipSet")};k.Na=function(){this.Ll=(this.Ul=qa("iOS"))||qa("Android");return v.prototype.Na.call(this)};function qi(a,b,c){var d=!1;a.Kh!==c&&(a.Kh=a.Oh=c);a.zg!==b&&(a.zg=b)&&!a.Oh&&vi(a);a.zg&&a.Oh&&(a.cc=[170],a.ja&&ui(a.ja),a.Oh=!1,d=!0);return d}function oi(a,b){var c=0;a.cc.length&&(c=a.cc[0],b&&vi(a));return c}
function vi(a,b){0<a.cc.length&&(b?a.cc=[]:(a.cc.shift(),0<a.cc.length&&a.ja&&ui(a.ja)))}k.Sb=function(a,b){return!b&&(this.reset(),a&&this.restore&&!this.restore(a))?!1:!0};k.Rb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.Ed();this.Qa=0;this.cc=[];if(this.Xc)for(var a in this.Xc)ca(a)||this.Xc[a]&&clearTimeout(this.Xc[a]);this.Xc=[];this.dl=this.qe=0};k.save=function(){var a=new G(this);a.set(0,this.gj());return a.data()};k.restore=function(a){return this.Ed(a[0])};
k.Ed=function(a){var b=0;void 0===a&&(a=[]);this.Kh=a[b++];this.zg=a[b];return!0};k.gj=function(){var a=0,b=[];b[a++]=this.Kh;b[a]=this.zg;return b};function Ji(a,b){var c=b&127,d=c==b;if(a.cc)if(20>a.cc.length){if(!(!d&&!a.oh[c]||d&&a.oh[c])){a.oh[c]=d;a.cc.push(b);1==a.cc.length&&a.ja&&ui(a.ja);for(var e in Fi)if(Fi[e]==c){(c=a.qa["key-"+e])&&void 0!==d&&(c.style.color=d?"#ffffff":"#000000",c.style.backgroundColor=d?"#000000":"#ffffff");break}}}else 20==a.cc.length&&a.cc.push(255)}
function Ki(a,b){var c=b?a.Wm:a.Vm;a.ka&&a.ka.ba.Rc&&(c/=a.ka.ba.Rc);return c}function Li(a,b){!a.qe||void 0!==b&&b==a.qe||(clearTimeout(a.Xc[a.qe]),Mi(a,a.qe,!1))}function Ni(a,b){var c,d;for(d in Di){var e="led-"+d,f=Di[d];b&&b!=f||!(c=a.qa[e])||(c.style.backgroundColor=a.Qa&f?"#00ff00":"#000000")}}function Ii(a,b){var c;if(T[b]){var d=Math.floor(b/1E3)&2,e=Ci[Math.floor(b%1E3)]||0;e&&(d&&(e>>=1),e&1792&&(c=!(a.Qa&e)),a.Qa&=~e,c&&(a.Qa|=e),Ni(a,e))}}
@ -502,8 +502,8 @@ Y[4096]=function(a){a+=this.offset;var b=this.pa[a]&~this.ea.cb|this.ea.xb&this.
Y[40960]=function(a,b){var c=a+this.offset,d=Wi[b&15],d=d|this.ea.xb,d=d&this.ea.cb|this.pa[c]&~this.ea.cb,d=d&this.ea.hb|this.ea.xb&~this.ea.hb;this.pa[c]!=d&&(this.pa[c]=d,this.fb=!0)};Y[57344]=function(a,b){var c=a+this.offset,d=Wi[b&15],d=d^this.ea.xb,d=d&this.ea.cb|this.pa[c]&~this.ea.cb,d=d&this.ea.hb|this.ea.xb&~this.ea.hb;this.pa[c]!=d&&(this.pa[c]=d,this.fb=!0)};
function cj(a){var b=[];if(void 0!==a.Gg){b[0]=a.Jc;b[1]=a.pc;b[2]=a.kf;b[3]=a.Uf;b[4]=a.wc|a.Fg<<8;b[5]=a.bc;if(5==a.Gg){var c=[];c[0]=a.Cd;c[1]=a.le;c[2]=a.Sd;c[3]=a.hj;c[4]=a.Kg;c[5]=a.Qh;c[6]=a.Qe;c[7]=a.bg;c[8]=a.Th;c[9]=a.Uh;c[10]=a.Pe;c[11]=a.Be;c[12]=a.xb;c[13]=[a.Ra,a.Db,a.Hc];var d;a:if(d=a.Wd){var e=0,f=[];if(void 0!==d[0])for(var h=0;2>h;h++)for(var g=h;g<d.length;){for(var m=d[g],n=g+2;n<d.length&&d[n]===m;)n+=2;f[e++]=n-g>>1;f[e++]=m;g=n}if(f.length<d.length){d=f;break a}}c[14]=d;c[15]=
a.Zh;c[16]=a.Ui;c[17]=a.cb;c[18]=a.Tc;c[19]=a.hb;c[20]=a.Tg;c[21]=a.Md;c[22]=a.oe;c[23]=a.bi;c[24]=a.ci;b[6]=c}b[7]=a.ki}return b}Xi.prototype.eh=function(a){if(null!=a&&a!=this.Zh){var b=a&255,c=Y[b];c||b&1&&(c=Y[1]);var b=a&65280,d=Y[b];d||b&256&&(d=Y[256]);this.df||(this.df=[null,aj,null,bj]);this.df[0]=c;this.df[2]=d;this.Zh=a}};var Yi=[,["MDA",948,720896,4096,0,3],,["CGA",980,753664,16384,0,2],,["EGA",980,753664,16384,65536,4]];k=U.prototype;
k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;bb(b,this,dj);db(b,this,ej);"ega"==this.Da&&(bb(b,this,fj),db(b,this,gj));if((this.Ka=B(a,"Keyboard"))&&this.Ta){for(var e in this.qa)0<e.indexOf("lock")&&this.Ka.Bb("input","led",e,this.qa[e]);this.Ka.Bb("input",this.pl?"textarea":"canvas","kbd",this.pl||this.Ta)}this.gg=9;(this.ja=B(a,"ChipSet"))&&this.kl&&(this.gg=jh(this.kl,this.gg));this.Ka&&this.Ol&&hj(this)};
k.Bb=function(a,b,c,d){var e=this;if(!this.qa[c])switch(this.qa[c]=d,c){case "lockPointer":return this.jo=d.innerHTML,this.Ta&&this.Ta.Re?d.onclick=function(){e.Re(!0)}:d.parentNode.removeChild(d),!0;case "refresh":return d.onclick=function(){ib(e,!0)},!0}return!1};k.od=function(){this.Ta&&this.Ta.focus()};k.Re=function(a){if(this.Ta)if(a){if(this.Ta.Re)return this.Ta.Re(),this.Fd.Kf(!0),!0}else if(this.Ta.ql)return this.Ta.ql(),this.Fd.Kf(!1),!0;return!1};
k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;bb(b,this,dj);db(b,this,ej);"ega"==this.Da&&(bb(b,this,fj),db(b,this,gj));if((this.Ka=B(a,"Keyboard"))&&this.Ta){for(var e in this.qa)0<e.indexOf("lock")&&this.Ka.Bb("led",e,this.qa[e]);this.Ka.Bb(this.pl?"textarea":"canvas","kbd",this.pl||this.Ta)}this.gg=9;(this.ja=B(a,"ChipSet"))&&this.kl&&(this.gg=jh(this.kl,this.gg));this.Ka&&this.Ol&&hj(this)};
k.Bb=function(a,b,c){var d=this;if(!this.qa[b])switch(this.qa[b]=c,b){case "lockPointer":return this.jo=c.innerHTML,this.Ta&&this.Ta.Re?c.onclick=function(){d.Re(!0)}:c.parentNode.removeChild(c),!0;case "refresh":return c.onclick=function(){ib(d,!0)},!0}return!1};k.od=function(){this.Ta&&this.Ta.focus()};k.Re=function(a){if(this.Ta)if(a){if(this.Ta.Re)return this.Ta.Re(),this.Fd.Kf(!0),!0}else if(this.Ta.ql)return this.Ta.ql(),this.Fd.Kf(!1),!0;return!1};
k.Kf=function(a){this.Fd&&(this.Fd.Kf(a),this.Ka&&(this.Ka.Ij=a));var b=this.qa.lockPointer;b&&(b.innerHTML=a?"Press Esc to Unlock Pointer":this.jo)};function hj(a){var b=a.Ta;b&&!a.Jh&&(b.addEventListener("touchstart",function(b){ij(a,b)},!1),b.addEventListener("touchmove",function(b){ij(a,b)},!0),b.addEventListener("touchend",function(){},!1),a.Jh=!0)}
function ij(a,b){a.Lh&&b.preventDefault();var c=0,d=0,e=a.Ta;do isNaN(e.offsetLeft)||(c+=e.offsetLeft,d+=e.offsetTop);while(e=e.offsetParent);c=a.dd/a.Ta.offsetWidth*(b.targetTouches[0].pageX-c)/(a.dd/3)|0;d=a.Bd/a.Ta.offsetHeight*(b.targetTouches[0].pageY-d)/(a.Bd/3)|0;1!=d?d?Hi(a.Ka,40,!0):Hi(a.Ka,38,!0):1!=c&&(c?Hi(a.Ka,39,!0):Hi(a.Ka,37,!0))}k.Sb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Rb=function(a){return a&&this.save?this.save():!0};
k.reset=function(){var a=!0,b=0;this.ja&&(b=Bh(this.ja));var c=!1;if(this.Da)switch(this.Da){case "ega":var c=!0,d=Qi[this.gg];d&&(b=d[0]);b||(b=4);break;case "mda":b=3;break;default:b=2}this.Jd!==b&&(this.Jd=b,a=!0);this.Ca=null;this.Gc=this.xh=new Xi(this,1);this.Xb=this.rg=new Xi(this,3);c?(this.ma=new Xi(this,5,null,this.Hc),jj(this)):this.ma=new Xi;kj(this);this.Id=null;this.Uc=3==b?Oi:3;this.ce=this.xc=-1;this.be=0;lj(this,this.Uc);if(this.Ca.Ra&&a){a=this.Ca.Ra+this.yh;for(b=this.Ca.Ra;b<a;b+=
@ -537,8 +537,8 @@ var dj={948:U.prototype.zm,949:U.prototype.ym,952:U.prototype.Am,954:U.prototype
960:U.prototype.bl,961:U.prototype.bl,962:U.prototype.Nn,964:U.prototype.Un,965:U.prototype.Tn,970:U.prototype.Fn,972:U.prototype.En,974:U.prototype.Dn,975:U.prototype.Cn,986:U.prototype.cl};
u(function(){for(var a=A(window.document,"pcjs","video"),b=0;b<a.length;b++){var c=a[b],d=z(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","pcjs-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=c.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 f=e.getContext("2d"),d=new U(d,e,f);Ja(d,c)}});
function Z(a){this.Qj=a.adapter;switch(this.Qj){case 1:this.$i=1016;this.Df=4;break;case 2:this.$i=760;this.Df=3;break;default:s("Unrecognized serial adapter #"+this.Qj);return}this.yd=null;v.call(this,"SerialPort",a,Z);var b=a.binding,c;a=Aj;b&&(void 0===c&&(c="Panel"),(c=Ia(c,this.id))&&(b=c.qa[b])&&this.Bb(null,null,a,b))}y(v,Z);var Aj="buffer";k=Z.prototype;k.tj=function(a,b){return a==this.Wh?(this.Fd=b,this):null};
k.Bb=function(a,b,c,d){var e=this;switch(c){case Aj:return this.qa[c]=this.yd=d,d.onkeydown=function(a){a=a||window.event;var b=a.keyCode;8===b&&(a.preventDefault&&a.preventDefault(),Bj(e,[b]))},d.onkeypress=function(a){a=a||window.event;Bj(e,[a.which||a.keyCode])},!0}return!1};k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.ja=B(a,"ChipSet");bb(b,this,Cj,this.$i);db(b,this,Dj,this.$i);this.Na()};
function Z(a){this.Qj=a.adapter;switch(this.Qj){case 1:this.$i=1016;this.Df=4;break;case 2:this.$i=760;this.Df=3;break;default:s("Unrecognized serial adapter #"+this.Qj);return}this.yd=null;v.call(this,"SerialPort",a,Z);var b=a.binding,c;a=Aj;b&&(void 0===c&&(c="Panel"),(c=Ia(c,this.id))&&(b=c.qa[b])&&this.Bb(null,a,b))}y(v,Z);var Aj="buffer";k=Z.prototype;k.tj=function(a,b){return a==this.Wh?(this.Fd=b,this):null};
k.Bb=function(a,b,c){var d=this;switch(b){case Aj:return this.qa[b]=this.yd=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;8===b&&(a.preventDefault&&a.preventDefault(),Bj(d,[b]))},c.onkeypress=function(a){a=a||window.event;Bj(d,[a.which||a.keyCode])},!0}return!1};k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.ja=B(a,"ChipSet");bb(b,this,Cj,this.$i);db(b,this,Dj,this.$i);this.Na()};
k.Sb=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.Rb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.Ed()};k.save=function(){var a=new G(this),b=0,c=[];c[b++]=this.uh;c[b++]=this.xj;c[b++]=this.xe;c[b++]=this.hg;c[b++]=this.ud;c[b++]=this.Zd;c[b++]=this.Oc;c[b++]=this.qc;c[b++]=this.vj;c[b]=this.bf;a.set(0,c);return a.data()};k.restore=function(a){return this.Ed(a[0])};
k.Ed=function(a){var b=0;void 0===a&&(a=[0,0,384,0,1,0,0,96,48,[]]);this.uh=a[b++];this.xj=a[b++];this.xe=a[b++];this.hg=a[b++];this.ud=a[b++];this.Zd=a[b++];this.Oc=a[b++];this.qc=a[b++];this.vj=a[b++];this.bf=a[b];return!0};function Bj(a,b){a.bf=a.bf.concat(b);Ej(a)}function Ej(a){0<a.bf.length&&!(a.qc&1)&&(a.uh=a.bf.shift(),a.qc|=1);var b=-1;a.qc&1&&a.hg&1&&(b=4);0<=b?(a.ud&=-8,a.ud|=b,a.ja&&a.Df&&hi(a.ja,a.Df)):(a.ud|=1,a.ja&&a.Df&&ii(a.ja,a.Df))}
k.Im=function(){var a=this.Zd&128?this.xe&255:this.uh;this.qc&=-2;Ej(this);return a};k.tm=function(){return this.Zd&128?this.xe>>8:this.hg};k.um=function(){return this.ud};k.vm=function(){return this.Zd};k.xm=function(){return this.Oc};k.wm=function(){return this.qc};k.Dm=function(){return this.vj};
@ -571,9 +571,9 @@ k.restore=function(a){var b=0,c="unsupported restore format";if(a&&0<a.length){v
b+" changes applied)";b=-1;break}if(this.Me){c="unable to modify write-protected disk";b=-1;break}e=h[f++];f=h[f++];h=e+f.length;if(g=this.Ya[g][m][n]){for(m=g.data.length;m<e;)g.data[m++]=g.pattern;m=0;g.Kc=e;for(g.lc=f.length;e<h;)g.data[e++]=f[m++];b++}}}0>b&&this.ea.ya("unable to restore disk '"+this.Vc+": "+c);return b};
function Uj(a){v.call(this,"FDC",a,Uj);this.dmaRead=this.Dh;this.dmaWrite=this.Eh;this.dmaFormat=this.Bl;this.ee=null;if(a.autoMount&&(this.ee=a.autoMount,"string"==typeof this.ee))try{this.ee=eval("("+a.autoMount+")")}catch(b){s("FDC auto-mount error: "+b.message+" ("+a.autoMount+")"),this.ee=null}this.ic=[];this.Kj=!1}y(v,Uj);l={};aa={};
var Vj={3:{bd:3,xd:0,name:aa.Wo},4:{bd:2,xd:1,name:aa.Uo},5:{bd:9,xd:7,name:aa.hp},6:{bd:9,xd:7,name:aa.Oo},7:{bd:2,xd:0,name:aa.Qo},8:{bd:1,xd:2,name:aa.Vo},10:{bd:2,xd:7,name:aa.Po},13:{bd:6,xd:7,name:aa.Ao},15:{bd:3,xd:0,name:aa.To}};k=Uj.prototype;
k.Bb=function(a,b,c,d){var e=this;switch(c){case "listDisks":return this.qa[c]=d,d.onchange=function(){var a=e.qa.descDisk,b=d.options[d.selectedIndex];if(a&&b){var c={};if(b=b.getAttribute("data-value"))try{c=eval("({"+b+"})")}catch(m){s("FDC option error: "+m.message)}b=c.desc;void 0===b&&(b="");c=c.href;void 0!==c&&(b='<a href="'+c+'" target="_blank">'+b+"</a>");a.innerHTML=b}},!0;case "descDisk":case "listDrives":return this.qa[c]=d,d.onchange=function(){var a;a=d.value;var b=10,c;if(a){b||(b=
16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var m=a.charAt(a.length-1).toLowerCase();"h"==m?(b=16,m=null):"."==m&&(b=10,m=null);null===m&&(a=a.substr(0,a.length-1))}var n;ca(a,b)&&!isNaN(n=parseInt(a,b))&&(c=n)}a=c;null!=a&&Wj(e,a)},!0;case "loadDrive":return this.qa[c]=d,d.onclick=function(){var a=e.qa.listDisks;a&&Xj(e,a.options[a.selectedIndex].text,a.value)},!0;case "mountDrive":return window&&"FileReader"in window?(this.Kj=!0,this.qa[c]=d,d.addEventListener("change",
function(){var a=d.children[0];a.children[1].disabled=0==a.children[0].files.length}),d.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;Xj(e,da(b,!0),b,a)}return!1}):d.parentNode.removeChild(d),!0}return!1};k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.Ma=a;this.ja=B(a,"ChipSet");this.hd();bb(b,this,Yj);db(b,this,Zj);this.Kj&&ak(this,"Local Disk","?");ak(this,"Remote Disk","??");this.ef()||this.Na()};
k.Bb=function(a,b,c){var d=this;switch(b){case "listDisks":return this.qa[b]=c,c.onchange=function(){var a=d.qa.descDisk,b=c.options[c.selectedIndex];if(a&&b){var h={};if(b=b.getAttribute("data-value"))try{h=eval("({"+b+"})")}catch(g){s("FDC option error: "+g.message)}b=h.desc;void 0===b&&(b="");h=h.href;void 0!==h&&(b='<a href="'+h+'" target="_blank">'+b+"</a>");a.innerHTML=b}},!0;case "descDisk":case "listDrives":return this.qa[b]=c,c.onchange=function(){var a;a=c.value;var b=10,h;if(a){b||(b=16);
if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var g=a.charAt(a.length-1).toLowerCase();"h"==g?(b=16,g=null):"."==g&&(b=10,g=null);null===g&&(a=a.substr(0,a.length-1))}var m;ca(a,b)&&!isNaN(m=parseInt(a,b))&&(h=m)}a=h;null!=a&&Wj(d,a)},!0;case "loadDrive":return this.qa[b]=c,c.onclick=function(){var a=d.qa.listDisks;a&&Xj(d,a.options[a.selectedIndex].text,a.value)},!0;case "mountDrive":return window&&"FileReader"in window?(this.Kj=!0,this.qa[b]=c,c.addEventListener("change",
function(){var a=c.children[0];a.children[1].disabled=0==a.children[0].files.length}),c.onsubmit=function(a){if(a=a.currentTarget[1].files[0]){var b=a.name;Xj(d,da(b,!0),b,a)}return!1}):c.parentNode.removeChild(c),!0}return!1};k.oc=function(a,b,c,d){this.ra=b;this.ka=c;this.Va=d;this.Ma=a;this.ja=B(a,"ChipSet");this.hd();bb(b,this,Yj);db(b,this,Zj);this.Kj&&ak(this,"Local Disk","?");ak(this,"Remote Disk","??");this.ef()||this.Na()};
k.Sb=function(a,b){if(!b){if(!a||!this.restore){if(this.reset(),this.Ma.Nh){this.ic=[];for(var c=0;c<this.xa.length;c++)bk(this,c,!0);this.ef(!0)}}else if(!this.restore(a))return!1;if(c=this.qa.listDrives){for(;c.firstChild;)c.removeChild(c.firstChild);c.innerHTML="";for(var d=0;d<this.hi;d++){var e=window.document.createElement("option");e.value=d;e.innerHTML=String.fromCharCode(65+d)+":";c.appendChild(e)}0<this.hi&&(c.value="0",Wj(this,0))}}return!0};
k.Rb=function(a){return a&&this.save?this.save():!0};k.reset=function(){this.hd()};k.save=function(){var a=new G(this);a.set(0,this.dj());return a.data()};k.restore=function(a){return this.hd(a[0])};
k.hd=function(a){var b=0,c,d=!0;void 0===a&&(a=[0,0,128,Array(9),0,0,0,[]]);this.$a=a[b++];b++;this.wa=a[b++];this.Ub=a[b++];this.sb=a[b++];this.eb=a[b++];this.Xe=a[b++];var e=a[b++];c=a[b++];null!=c&&(this.ic=c);void 0===this.xa&&(this.hi=4,this.ja&&(this.hi=Lh(this.ja)),this.xa=Array(4));for(c=0;c<this.xa.length;c++){var f=this.xa[c];if(void 0===f){var f=this.xa[c]={},h;if(this.ja)a:{h=this.ja;if(c<Lh(h)){if(!h.rd){h=360;break a}if(c<h.rd.length){h=h.rd[c];break a}}h=0}else h=0;switch(h){case 160:case 180:f.kb=
@ -635,7 +635,7 @@ k.Fj=function(a){var b=a[0],c=0>a[1];a=a[2];this.na.Hb=!0;this.Jj||(this.$b("PCj
function Ak(a,b){if(ma("There may be a problem with your PCjs machine.\n\nTo help us diagnose it, click OK to send this PCjs machine state to http://www.pcjs.org.")){var c=a.Dd(),d=b.toString(),e={app:"PCjs",ver:"1.16.0"};e.url=a.url;e.user=c;e.type="bug";e.data=d;r("http://www.pcjs.org/api/v1/report",!0,e)}}
function Ck(a,b,c){var d,e="none",f=new G(a,"1.16.0"),h=new G(a,"1.16.0","validate"),g=ia();h.set("timestamp",g);f.set("timestamp",g);f.set("version","1.16.0");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.ka&&a.ka.Rb&&(c&&mb(a.ka),d=a.ka.Rb(b,c),"object"===typeof d&&f.set(a.ka.id,d),c&&(a.ka.na.Hb=!1,!1===d&&(e=null)));for(var g=Ga(a.id),m=0;m<g.length;m++){var n=g[m];n.na.Hb&&(n.Rb&&(d=n.Rb(b,c),"object"===typeof d&&f.set(n.id,d)),c&&(n.na.Hb=
!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.Ac&&Dk(a,a.Ac,f.toString()),uk(h)&&uk(f)||(e=null,d=g=!0)):a.zc&&(d=!0,g=3==a.zc),d&&f.clear(g)):e=f.toString());c&&(a.na.Hb=!1);return e}k.reset=function(){this.ra&&this.ra.reset&&this.ra.reset();for(var a=Ga(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.ra&&c.reset&&c.reset()}};k.start=function(a,b){for(var c=Ga(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
k.stop=function(a,b){for(var c=Ga(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};k.Bb=function(a,b,c,d){var e=this;switch(c){case "save":return this.qa[c]=d,d.onclick=function(){var a=xk(e,!0);if(a){var b=!(!e.zc||e.dh),c=Ck(e,b);b?Dk(e,a,c):e.ya("Resume disabled, machine state not saved")}},!0;case "reset":return this.qa[c]=d,d.onclick=function(){nb(e)},!0}return!1};
k.stop=function(a,b){for(var c=Ga(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};k.Bb=function(a,b,c){var d=this;switch(b){case "save":return this.qa[b]=c,c.onclick=function(){var a=xk(d,!0);if(a){var b=!(!d.zc||d.dh),c=Ck(d,b);b?Dk(d,a,c):d.ya("Resume disabled, machine state not saved")}},!0;case "reset":return this.qa[b]=c,c.onclick=function(){nb(d)},!0}return!1};
function xk(a,b){var c=a.Ac;c||(c=oa("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("To save machine states on the pcjs.org server, you need a user ID (email support@pcjs.org).\n\nOnce you have an ID, enter it below.","")),c&&((c=Ek(a,c))||a.ya("Your user ID has not been approved."))):b&&a.ya("Browser local storage is not available"));return c}
function Ek(a,b){a.Ac=null;var c=r(la()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(pa("user",c.data),a.Ac=c.data)}catch(e){s(e.message+" ("+d+")")}return a.Ac}
function Dk(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=qk(a,"1.16.0");d.data=c;b=r(la()+"/api/v1/user",!1,d);d=b[1];if(b[0]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[0]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ya("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ya(c),pa("user",""),a.Ac=null)}}