Added smoothing control to both PCjs and PC8080 (setting it to false should probably be the new default)

It can be controlled with a new "smoothing" attribute on the <video> component and/or overridden with a "smoothing" URL parameter set to either "true" or "false"
This commit is contained in:
Jeff Parsons 2016-05-03 09:11:02 -07:00
commit c31f6222a1
12 changed files with 666 additions and 426 deletions

View file

@ -1092,6 +1092,12 @@
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="smoothing">
<xsl:choose>
<xsl:when test="@smoothing"><xsl:value-of select="@smoothing"/></xsl:when>
<xsl:otherwise>null</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="interruptRate">
<xsl:choose>
<xsl:when test="@interruptRate"><xsl:value-of select="@interruptRate"/></xsl:when>
@ -1107,7 +1113,7 @@
<xsl:call-template name="component">
<xsl:with-param name="machine" select="$machine"/>
<xsl:with-param name="class">video</xsl:with-param>
<xsl:with-param name="parms">,model:'<xsl:value-of select="$model"/>',mode:<xsl:value-of select="$mode"/>,screenWidth:<xsl:value-of select="$screenWidth"/>,screenHeight:<xsl:value-of select="$screenHeight"/>,screenColor:'<xsl:value-of select="$screenColor"/>',screenRotate:<xsl:value-of select="$screenRotate"/>,bufferAddr:<xsl:value-of select="$bufferAddr"/>,bufferCols:<xsl:value-of select="$bufferCols"/>,bufferRows:<xsl:value-of select="$bufferRows"/>,bufferBits:<xsl:value-of select="$bufferBits"/>,bufferLeft:<xsl:value-of select="$bufferLeft"/>,bufferRotate:<xsl:value-of select="$bufferRotate"/>,memory:<xsl:value-of select="$memory"/>,switches:'<xsl:value-of select="$switches"/>',scale:<xsl:value-of select="$scale"/>,charCols:<xsl:value-of select="$charCols"/>,charRows:<xsl:value-of select="$charRows"/>,fontROM:'<xsl:value-of select="$fontROM"/>',touchScreen:'<xsl:value-of select="$touchScreen"/>',autoLock:<xsl:value-of select="$autoLock"/>,aspectRatio:<xsl:value-of select="$aspectRatio"/>,interruptRate:<xsl:value-of select="$interruptRate"/>,refreshRate:<xsl:value-of select="$refreshRate"/></xsl:with-param>
<xsl:with-param name="parms">,model:'<xsl:value-of select="$model"/>',mode:<xsl:value-of select="$mode"/>,screenWidth:<xsl:value-of select="$screenWidth"/>,screenHeight:<xsl:value-of select="$screenHeight"/>,screenColor:'<xsl:value-of select="$screenColor"/>',screenRotate:<xsl:value-of select="$screenRotate"/>,bufferAddr:<xsl:value-of select="$bufferAddr"/>,bufferCols:<xsl:value-of select="$bufferCols"/>,bufferRows:<xsl:value-of select="$bufferRows"/>,bufferBits:<xsl:value-of select="$bufferBits"/>,bufferLeft:<xsl:value-of select="$bufferLeft"/>,bufferRotate:<xsl:value-of select="$bufferRotate"/>,memory:<xsl:value-of select="$memory"/>,switches:'<xsl:value-of select="$switches"/>',scale:<xsl:value-of select="$scale"/>,charCols:<xsl:value-of select="$charCols"/>,charRows:<xsl:value-of select="$charRows"/>,fontROM:'<xsl:value-of select="$fontROM"/>',touchScreen:'<xsl:value-of select="$touchScreen"/>',autoLock:<xsl:value-of select="$autoLock"/>,aspectRatio:<xsl:value-of select="$aspectRatio"/>,smoothing:<xsl:value-of select="$smoothing"/>,interruptRate:<xsl:value-of select="$interruptRate"/>,refreshRate:<xsl:value-of select="$refreshRate"/></xsl:with-param>
</xsl:call-template>
</xsl:template>

View file

@ -9,199 +9,202 @@ function pa(){return window?window.navigator.userAgent:""}function t(a){window&&
function ta(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function ua(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function va(a){if(window){var b=pa();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ca(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function Da(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,f=!1;a.onmousedown=function(){f||e||(d=500,c())};a.ontouchstart=function(){e||(d=500,c())};a.onmouseup=a.onmouseout=function(){e&&(clearTimeout(e),e=null)};a.ontouchend=a.ontouchcancel=function(){e&&(clearTimeout(e),e=null);f=!0}}var Ea={init:[],show:[],exit:[]},Fa=!1,Ga=!0;function Ha(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ja(a){Ea.init.push(a)}
function Ka(a){if(Ga)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){t("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function La(a){!Ga&&a?(Ga=!0,Fa&&Pa("init")):Ga=a}function Pa(a){Ea[a]&&Ka(Ea[a])}Ha("onload",function(){Fa=!0;Ka(Ea.init)});Ha("onpageshow",function(){Ka(Ea.show)});Ha(va("Opera")||va("iOS")?"onunload":"onbeforeunload",function(){Ka(Ea.exit)});
function w(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Eb=b.comment;this.Sb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Ib=this.id.substr(0,b),this.cb=this.id.substr(b+1)):this.cb=this.id;this[a]=c;this.A={Ra:!1,Oa:!1,vb:!1,ia:!1,Qa:!1};this.pb=null;this.A.Qa=!1;this.V={};this.F=null;this.ha=d||0;x.push(this)}var Qa=void 0,Ra={};
function w(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.Eb=b.comment;this.Sb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Hb=this.id.substr(0,b),this.eb=this.id.substr(b+1)):this.eb=this.id;this[a]=c;this.A={Ta:!1,Qa:!1,wb:!1,ia:!1,Sa:!1};this.rb=null;this.A.Sa=!1;this.T={};this.F=null;this.ha=d||0;x.push(this)}var Qa=void 0,Ra={};
if(window){Qa||(Qa=window.location.search.substr(1));for(var Sa,Ta=/\+/g,Ua=/([^&=]+)=?([^&]*)/g;Sa=Ua.exec(Qa);)Ra[decodeURIComponent(Sa[1].replace(Ta," "))]=decodeURIComponent(Sa[2].replace(Ta," "))}function Va(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 Wa(a,b){b||(b=w);a.prototype=Va(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var x=[],Xa={};function Ya(a,b,c){Xa[a]&&b&&(Xa[a][b]=c)}function Za(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 $a(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 y(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){t(c.message+" ("+a+")")}return b}
function cb(a,b){for(var c=A(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pc8080-binding":(g=y(h))&&g.binding&&a.qa(g.type,g.binding,h,g.value),l=k.length}}}}
function cb(a,b){for(var c=A(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var k=g.split(" "),l=0;l<k.length;l++)switch(g=k[l],g){case "pc8080-binding":(g=y(h))&&g.binding&&a.oa(g.type,g.binding,h,g.value),l=k.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}
w.prototype={constructor:w,parent:null,toString:function(){return this.name?this.name:this.id||this.type},qa:function(a,b,c){switch(b){case "clear":return this.V[b]||(this.V[b]=c,c.onclick=function(a){return function(){a.V.print&&(a.V.print.value="")}}(this)),!0;case "print":return this.V[b]||(this.ta=this.V[b]=c,c.value="",this.g=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.oa=function(a,b,c){this.g(a,"notice",c)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.cb+": "+a)},oa:function(a,b){b||t(a)},za:function(){return this.A.ia=!0},ya:function(a,b){b&&(this.A.ia=!1);return!0}};function db(a,b,c,d,e,f){var h=!0;a.F&&(!0===h?h=0:null==h&&(h=a.ha),eb(a.F,a,b,c,d,e,f,h))}function fb(a,b){if(a.F){a===a.F?b|=0:b=b||a.ha;var c=a.F.ha&b;return!!b&&c===b||!!(c&a.F.Xb)}return!1}
function gb(a,b){if(a.A.vb)return a.A.Oa&&(a.A.Oa=!1),a.A.vb=!1;if(a.A.Qa)return a.g(a.toString()+" error"),!1;a.A.Oa=b;return a.A.Oa}function hb(a,b){a.A.Oa&&(b?a.A.vb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.A.Oa}function C(a){if(!a.A.Qa&&(a.A.Ra=!0,a.A.Ra)){var b=a.pb;a.pb=null;b&&b()}}function ib(a,b){b&&(a.A.Ra?b():a.pb=b);return a.A.Ra}function jb(a,b){a.A.Qa=!0;a.oa(b)}
var kb="undefined"!==typeof ArrayBuffer,lb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function mb(a){w.call(this,"Panel",a,mb)}Wa(mb);m=mb.prototype;m.qa=function(a,b,c,d){return this.w&&this.w.qa(a,b,c,d)||this.b&&this.b.qa(a,b,c,d)||this.u&&this.u.qa(a,b,c,d)||this.F&&this.F.qa(a,b,c,d)?!0:this.parent.qa.call(this,a,b,c,d)};m.Fa=function(a,b,c,d){this.w=a;this.B=b;this.b=c;this.F=d;this.u=nb(a,"Keyboard")};m.za=function(a,b){b||ob();return!0};m.ya=function(){return!0};m.va=function(){};
function ob(){for(var a=!1,b=A(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=y(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<x.length;h++)if(x[h].id===f){f=x[h];break a}f=null}f||(a=!0,f=new mb(e));cb(f,d);a&&C(f)}}Ja(ob);
function pb(a,b,c){w.call(this,"Bus",a,pb);this.b=b;this.F=c;this.J=a.busWidth||16;this.X=Math.pow(2,this.J);this.D=this.X-1|0;this.ea=16>=this.J?10:20>=this.J?12:24>=this.J?14:15;this.ua=1<<this.ea;this.Y=this.ua>>2;this.B=this.ua-1;this.M=this.X/this.ua|0;this.K=this.M-1;this.w=[];this.u=[];this.G=this.H=!1;this.aa=[];this.ba=[];a=new D;qb(a,this.F);this.T=Array(this.M);for(b=0;b<this.M;b++)this.T[b]=a;C(this)}Wa(pb);m=pb.prototype;m.reset=function(){};m.za=function(a,b){b||this.reset();return!0};
function rb(a,b,c,d){for(var e=b>>>a.ea;0<c&&e<a.T.length;){var f=a.T[e],h=e*a.ua,g=a.ua-(b-h);g>c&&(g=c);if(f&&f.size){if(f.type==d){if(b+c<=f.C)return f.mb+=f.C-b,f.C=b,!0;if(b>=f.C+f.mb){g=f.size-(b-h);g>c&&(g=c);f.mb=b-f.C+g;b=h+a.ua;c-=g;e++;continue}}return sb(1,b,c)}b=new D(b,g,a.ua,d);qb(b,a.F,f);a.T[e++]=b;b=h+a.ua;c-=g}return 0>=c?!0:sb(2,b,c)}m.W=function(a){return this.T[(a&this.D)>>>this.ea].Za(a&this.B,a)};function tb(a,b){return a.T[(b&a.D)>>>a.ea].kb(b&a.B,b)}
m.Ea=function(a){var b=a&this.B,c=(a&this.D)>>>this.ea;return b!=this.B?this.T[c].Tb(b,a):this.T[c++].Za(b,a)|this.T[c&this.K].Za(0,a+1)<<8};function ub(a,b){var c=b&a.B,d=(b&a.D)>>>a.ea;return c!=a.B?a.T[d].Ab(c,b):a.T[d++].kb(c,b)|a.T[d&a.K].kb(0,b+1)<<8}m.ga=function(a,b){this.T[(a&this.D)>>>this.ea].ab(a&this.B,b&255,a)};function vb(a,b,c){a.T[(b&a.D)>>>a.ea].nb(b&a.B,c&255,b)}
m.sb=function(a,b){var c=a&this.B,d=(a&this.D)>>>this.ea;c!=this.B?this.T[d].Vb(c,b&65535,a):(this.T[d++].ab(c,b&255,a),this.T[d&this.K].ab(0,b>>8&255,a+1))};function wb(a,b){if(void 0===b)return a.G=!a.G,a.G;void 0===a.w[b]&&(a.w[b]=[null,!1]);a.w[b][1]=!a.w[b][1];return a.w[b][1]}
function Fb(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.w[b],g=a.aa[b]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h?(h[0]&&(l=h[0](b,c),void 0===l?l=k:l&=k),a.F&&a.G!=h[1]&&Gb(a.F,b,l)):a.F&&(eb(a.F,a,b,null,c),a.G&&Gb(a.F,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Hb(a,b){if(void 0===b)return a.H=!a.H,a.H;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]}
function Ib(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.u[b],g=a.ba[b]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h){if(h[0])h[0](b,k,d);a.F&&a.H!=h[1]&&Jb(a.F,b,k)}else a.F&&(eb(a.F,a,b,k,d),a.H&&Jb(a.F,b,k));f+=g<<3;b+=g;e-=g}}function sb(a,b,c){t("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Kb;if(kb){var Lb=new ArrayBuffer(2);(new DataView(Lb)).setUint16(0,256,!0);Kb=256===(new Uint16Array(Lb))[0]}else Kb=!1;var Mb=Kb;
function D(a,b,c,d){this.id=Nb+=2;this.b=null;this.C=a;this.mb=b;this.size=c||0;this.type=d||Ob;this.w=d==Pb;qb(this);this.wa=this.Kb=!1;if(c)if(kb)this.G=new ArrayBuffer(c),this.H=new DataView(this.G,0,c),this.B=new Uint8Array(this.G,0,c),this.K=new Uint16Array(this.G,0,c>>1),this.b=new Int32Array(this.G,0,c>>2),Qb(this,Mb?Rb:Sb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Qb(this,Tb)}else Qb(this)}var Ob=0,Pb=2,Ub=["NONE","RAM","ROM","VIDEO","H/W"],Nb=0;
D.prototype={constructor:D,parent:null,save:function(){var a,b;if(kb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.H.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(kb)for(b=0;b<a.length;b++)this.H.setInt32(b<<2,a[b],!0);else this.b=a;return this.wa=!0}return!1},Ha:function(a,b){b?0===this.u++&&Vb(this,Wb,!1):0===this.V++&&Xb(this,Wb,!1)},M:function(){this.F&&fb(this.F,129)&&this.F.message("attempt to read invalid block %"+q(this.C),!0);
return 255},D:function(a,b){this.F&&fb(this.F,129)&&this.F.message("attempt to write "+r(b)+" to invalid block %"+q(this.C),!0)},X:function(a,b){return this.Za(a++,b++)|this.Za(a,b)<<8},J:function(a,b,c){this.ab(a++,b&255,c++);this.ab(a,b>>8,c)},fa:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ra:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},Ba:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.wa=!0},cb:function(a,
b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.wa=!0},aa:function(a,b){if(this.F&&null!=this.C){var c=this.F;Yb(c,this.C+a,1,c.ba)&&c.da(!0)}return this.kb(a,b)},ma:function(a,b){if(this.F&&null!=this.C){var c=this.F;Yb(c,this.C+a,2,c.ba)&&c.da(!0)}return this.Ab(a,b)},Da:function(a,b,c){if(this.F&&null!=this.C){var d=this.F;Yb(d,this.C+a,1,d.H)&&d.da(!0)}this.w?this.D(a,b,c):this.nb(a,b,c)},Na:function(a,
b,c){if(this.F&&null!=this.C){var d=this.F;Yb(d,this.C+a,2,d.H)&&d.da(!0)}this.w?this.D(a,b,c):this.Bb(a,b,c)},Y:function(a){return this.B[a]},ba:function(a){return this.B[a]},ka:function(a){return this.H.getUint16(a,!0)},na:function(a){return a&1?this.B[a]|this.B[a+1]<<8:this.K[a>>1]},sa:function(a,b){this.B[a]=b;this.wa=!0},Aa:function(a,b){this.B[a]=b;this.wa=!0},Ga:function(a,b){this.H.setUint16(a,b,!0);this.wa=!0},bb:function(a,b){a&1?(this.B[a]=b,this.B[a+1]=b>>8):this.K[a>>1]=b;this.wa=!0}};
function qb(a,b,c){a.F=b;a.V=a.u=0;c&&((a.V=c.V)&&Xb(a,Wb,!1),(a.u=c.u)&&Vb(a,Wb,!1))}function Zb(a,b){b?0===--a.u&&(a.ab=a.w?a.D:a.nb,a.Vb=a.w?a.J:a.Bb):0===--a.V&&(a.Za=a.kb,a.Tb=a.Ab)}function Vb(a,b,c){c&&a.u||(a.ab=!a.w&&b[2]||a.D,a.Vb=!a.w&&b[3]||a.J);if(c||void 0===c)a.nb=b[2]||a.D,a.Bb=b[3]||a.J}function Xb(a,b,c){c&&a.V||(a.Za=b[0]||a.M,a.Tb=b[1]||a.X);if(c||void 0===c)a.kb=b[0]||a.M,a.Ab=b[1]||a.X}function Qb(a,b){b||(b=$b);Xb(a,b,void 0);Vb(a,b,void 0)}
var $b=[],Tb=[D.prototype.fa,D.prototype.ra,D.prototype.Ba,D.prototype.cb],Wb=[D.prototype.aa,D.prototype.ma,D.prototype.Da,D.prototype.Na];if(kb)var Sb=[D.prototype.Y,D.prototype.ka,D.prototype.sa,D.prototype.Ga],Rb=[D.prototype.ba,D.prototype.na,D.prototype.Aa,D.prototype.bb];
function ac(a,b){w.call(this,"CPU",a,ac,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.Ya=c;this.i.rb=0;this.i.La=d;this.i.xb=Math.round(this.i.Ya/1E4)/100;this.i.Ja=this.i.xb*this.i.La;this.A.la=!1;this.A.wb=!1;this.A.Jb=a.autoStart;this.A.Lb=!1;this.A.Pa=!1;this.i.eb=this.i.Va=0;this.i.fb=a.csStart;this.i.Ua=a.csInterval;this.i.Wa=a.csStop;this.aa=this.Ma.bind(this);C(this)}Wa(ac);var bc=["power","reset"];m=ac.prototype;
m.Fa=function(a,b,c,d){this.w=a;this.B=b;this.F=d;for(b=0;b<bc.length;b++)(c=this.V[bc[b]])&&this.w.qa(null,bc[b],c);this.Da=(b=nb(a,"Video"))&&Math.max(b.Da,b.Zb)||60;this.K=nb(a,"ChipSet");a=cc(a,"autoStart");null!=a&&(this.A.Jb="true"==a?!0:"false"==a?!1:!!a);C(this)};m.reset=function(){this.i.rb=0};m.save=function(){return null};m.restore=function(){return!1};
m.za=function(a,b){if(!b){if(a&&this.restore){oc(this);if(!this.restore(a))return!1;pc(this)}else this.reset();if(this.F){var c=this.F;c.g("Type ? for help with PC8080 Debugger commands");c.va();if(c.tb){var d=c.tb;c.tb=null;qc(c,d)}}else this.g("No debugger detected")}rc(this);return!0};m.ya=function(a){return a?this.save():!0};function sc(a){(a.A.Jb||!a.F&&void 0===a.V.run)&&a.Ma(!0)}m.Ob=function(){return 0};
function pc(a){void 0===a.i.fb&&(a.i.fb=0);void 0===a.i.Ua&&(a.i.Ua=-1);void 0===a.i.Wa&&(a.i.Wa=-1);a.A.Pa=0<=a.i.fb&&0<a.i.Ua;a.A.Pa&&(a.i.eb=0,a.i.Va=a.i.fb-a.H)}function tc(a,b){if(a.A.Pa){var c=!1;a.i.eb=a.i.eb+a.Ob()|0;a.i.Va-=b;0>=a.i.Va&&(a.i.Va+=a.i.Ua,c=!0);0<=a.i.Wa&&a.i.Wa<=uc(a)&&(a.i.Ua=a.i.Wa=-1,pc(a),a.da(),c=!0);c&&a.g(uc(a)+" cycles: checksum="+q(a.i.eb))}}
m.qa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.V[b]=c;a=!0;break;case "run":this.V[b]=c;c.onclick=function(){var a;if(a=d.w)if(a=d.w,a.A.ia)a=!0;else{var b=null,c,g=Za(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.A.Ra);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.ia);c++);c==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.A.Ra?"powered yet":"ready yet"+(b.pb?" (waiting for notification)":""))+".");a=!1}a&&(d.A.la?d.da(!0):d.Ma(!0))};a=
!0;break;case "speed":this.V[b]=c;a=!0;break;case "setSpeed":this.V[b]=c,c.onclick=function(){vc(d,d.i.La<<1,!0)},c.textContent=this.i.Ja.toFixed(2)+"Mhz",a=!0}return a};function wc(a,b,c){a.H+=b;c&&(a.D=a.b=0)}
function xc(a,b){var c=30;c<a.Da&&(c=a.Da);2>c&&(c=2);var d=1;b&&1<a.i.La&&a.i.Ia&&(d=a.i.Ia/a.i.xb);a.i.Pb=Math.round(1E3/30);a.i.hc=Math.floor(a.i.Ya/c*d);a.i.yb=Math.floor(a.i.Ya/30*d);a.i.Rb=Math.floor(a.i.Ya/a.Da*d);a.i.Qb=Math.floor(a.i.Ya/2*d);b||(a.i.Xa=a.i.yb,a.i.hb=a.i.Rb,a.i.gb=a.i.Qb);a.i.zb=0}function uc(a){return a.H+a.G+a.D-a.b}function oc(a){a.i.Ia=0;a.H=a.G=a.D=a.b=0;pc(a);vc(a,1)}
function vc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.Ia/a.i.Ja?b=1:d=!0;a.i.La=b;b=a.i.xb*a.i.La;if(a.i.Ja!=b){a.i.Ja=b;b=a.i.Ja.toFixed(2)+"Mhz";var e=a.V.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.w&&a.w.lb()}wc(a,a.G);a.G=0;a.i.Ta=ja();a.i.Ka=0;xc(a);return d}
m.Ma=function(a){if(gb(this,!0)){if(!this.A.la){vc(this);this.w&&this.w.start(this.i.Ta,uc(this));this.A.la=!0;this.A.wb=!0;this.K&&this.K.start();var b=this.V.run;b&&(b.textContent="Halt");this.w&&(this.w.va(!0),a&&this.w.lb(!0))}this.i.zb>=this.i.Ya&&xc(this,!0);this.i.ib=0;this.i.qb=ja();this.i.Ka&&(a=this.i.qb-this.i.Ka,a>this.i.Pb&&(this.i.Ta+=a,this.i.Ta>this.i.qb&&(this.i.Ta=this.i.qb)));try{do{var c=this.A.Pa?1:this.i.hc;try{this.$a(c)}catch(e){if("number"!=typeof e)throw e;}var d=this.D-
this.b;this.G+=d;this.i.ib+=d;wc(this,0,!0);tc(this,d);this.i.hb-=d;0>=this.i.hb&&(this.i.hb+=this.i.Rb,this.w&&yc(this.w,this.i.rb++),this.i.rb>this.Da&&(this.i.rb=0));this.i.gb-=d;0>=this.i.gb&&(this.i.gb+=this.i.Qb,this.w&&this.w.va());this.i.Xa-=d;if(0>=this.i.Xa){this.i.Xa+=this.i.yb;break}}while(this.A.la)}catch(e){this.da();rc(this);this.w&&this.w.stop(ja(),uc(this));gb(this,!1);jb(this,e.stack||e.message);return}c=setTimeout;d=this.aa;this.i.Ka=ja();a=this.i.Pb;this.i.ib&&(a=Math.round(a*
this.i.ib/this.i.yb));a-=this.i.Ka-this.i.qb;if(b=this.i.Ka-this.i.Ta)this.i.Ia=Math.round(this.G/(10*b))/100,864E5<=b&&(this.H=0,vc(this));if(0>a||this.i.Ia<this.i.Ja)a=0;this.i.zb+=this.i.ib;this.i.Ka+=a;c(d,a)}else rc(this),this.w&&this.w.stop(ja(),uc(this))};m.$a=function(){return 0};m.da=function(a){hb(this,!0);this.D-=this.b;this.b=0;wc(this,this.G);this.G=0;if(this.A.la){this.A.la=!1;this.K&&this.K.stop();var b=this.V.run;b&&(b.textContent="Run")}this.A.ob=a};
function rc(a,b){a.w&&(yc(a.w,-1),a.w.va(b))}function zc(a){this.Sa=a.model||8080;ac.call(this,a,1E6);this.M=Ac;oc(this);this.A.ob=this.A.Yb=!1;this.Y=0;this.J=[];this.X=0;Bc(this)}Wa(zc,ac);function Cc(a,b){a.J.push(b)}m=zc.prototype;m.reset=function(){this.A.la&&this.da();Bc(this);oc(this);this.A.Qa=!1;this.parent.reset.call(this)};function Bc(a){a.j=0;a.N=0;a.O=0;a.P=0;a.R=0;a.S=0;a.U=0;a.ca=0;F(a,a.X);Dc(a,0);a.u=0}function Ec(a,b){a.X=b;F(a,b)}
m.Ob=function(){var a=this.j+this.N+this.O+this.P+this.R+this.S+this.U|0;return a=a+this.ca+this.L+Fc(this)|0};
m.save=function(){var a=new Gc(this);H(a,0,[this.j,this.N,this.O,this.P,this.R,this.S,this.U,this.ca,this.L,Fc(this)]);H(a,1,[this.u,this.H,this.i.La]);for(var b=this.B,c=0,d=[],e=0;e<b.M;e++){var f=b.T[e];if(f.wa||f.Kb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var p=f[g],n=g+1;n<f.length&&f[n]===p;)n++;l[k++]=n-g;l[k++]=p;g=n}if(l.length<f.length){f=l;break a}}d[h]=f}}H(a,2,d);return a.data()};
m.restore=function(a){var b=a[0];this.j=b[0];this.N=b[1];this.O=b[2];this.P=b[3];this.R=b[4];this.S=b[5];this.U=b[6];this.ca=b[7]&65535;F(this,b[8]);Dc(this,b[9]);b=a[1];this.u=b[0];this.H=b[1];vc(this,b[3]);a:{b=this.B;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.Y){for(var f=0,h=Array(b.Y),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.T[d];if(!f||!f.restore(e)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.qa=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.V[b]=c;this.Y++;d=!0;break;default:d=this.parent.qa.call(this,a,b,c)}return d};function Hc(a){return a.N<<8|a.O}function Ic(a,b){a.N=b>>8&255;a.O=b&255}function Jc(a){return a.P<<8|a.R}function Kc(a,b){a.P=b>>8&255;a.R=b&255}function I(a){return a.S<<8|a.U}
function Lc(a,b){a.S=b>>8&255;a.U=b&255}function F(a,b){a.L=b&65535}function Mc(a){return a.I&256?1:0}function Nc(a){return lb[a.Z&255]?4:0}function Oc(a){return(a.Z^a.ja)&16?16:0}function Pc(a){return a.I&255?0:64}function Qc(a){return a.Z&128?128:0}function Fc(a){return a.pa&-214|Qc(a)|Pc(a)|Oc(a)|Nc(a)|Mc(a)}function Dc(a,b){a.I=a.Z=a.ja=0;b&1&&(a.I|=256);b&4||(a.Z|=1);b&16&&(a.ja|=16);b&64||(a.I|=255);b&128&&(a.Z^=192);a.pa=a.pa&-513|b&512|2}
function Rc(a,b){a.ja=a.j^b;return a.Z=(a.I=a.j+b)&255}function Sc(a,b){a.ja=a.j^b;return a.Z=(a.I=a.j+b+(a.I&256?1:0))&255}function jd(a,b){a.I=a.Z=a.ja=a.j&b;(a.j|b)&8&&(a.ja^=16);return a.I}function kd(a,b){a.ja=b^255;b=a.Z=b+255&255;a.I=a.I&-256|b;return b}function ld(a,b){a.ja=b;b=a.Z=b+1&255;a.I=a.I&-256|b;return b}function md(a,b){return a.Z=a.I=a.ja=a.j|b}function J(a,b){b^=255;a.ja=a.j^b;return a.Z=(a.I=a.j+b+1^256)&255}
function nd(a,b){b^=255;a.ja=a.j^b;return a.Z=(a.I=a.j+b+(a.I&256?0:1)^256)&255}function od(a,b){return a.Z=a.I=a.ja=a.j^b}m.W=function(a){return this.B.W(a)};m.ga=function(a,b){this.B.ga(a,b)};function L(a){var b=a.W(a.L);F(a,a.L+1);return b}function M(a){var b=a.B.Ea(a.L);F(a,a.L+2);return b}function N(a){var b=a.B.Ea(a.ca);a.ca=a.ca+2&65535;return b}function Q(a,b){a.ca=a.ca-2&65535;a.B.sb(a.ca,b)}
function R(a,b,c,d){d=d||2;a.V[b]&&(void 0===c&&(jb(a,"Value for "+b+" is invalid"),a.da()),c=!a.A.la||a.A.Lb?q(c,d):"--------".substr(0,d),a.V[b].textContent!=c&&(a.V[b].textContent=c))}
m.va=function(a){this.Y&&(a||!this.A.la||this.A.Lb)&&(R(this,"A",this.j),R(this,"B",this.N),R(this,"C",this.O),R(this,"BC",Hc(this),4),R(this,"D",this.P),R(this,"E",this.R),R(this,"DE",Jc(this),4),R(this,"H",this.S),R(this,"L",this.U),R(this,"HL",I(this),4),R(this,"SP",this.ca,4),R(this,"PC",this.L,4),a=Fc(this),R(this,"PS",a,4),R(this,"IF",a&512?1:0,1),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.V.speed)a.textContent=
this.A.la&&this.i.Ia?this.i.Ia.toFixed(2)+"Mhz":"Stopped"};
m.$a=function(a){this.A.ob=!0;var b=this.A.Yb=this.F&&pd(this.F),c=a?this.A.wb?0:1:-1;this.A.wb=!1;this.D=this.b=a;do{if(this.u){var d;this.u&8&&this.pa&512?(d=199|(this.u&7)<<3,this.u&=-16,this.pa&=-513,this.M[d].call(this),d=!0):d=!1;if(d){if(!a){this.g("interrupt dispatched");break}}else if(this.u&16){this.b=0;break}}if(b){if(qd(this.F,this.L,c)){this.da();break}c=1}this.M[L(this)].call(this)}while(0<this.b);return this.A.ob?this.D-this.b:void 0===this.A.ob?0:-1};
Ja(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new zc(d);cb(d,c)}});function rd(){this.b-=4}function sd(){F(this,M(this));this.b-=10}function td(){F(this,N(this));this.b-=10}function ud(){var a=M(this);Q(this,this.L);F(this,a);this.b-=17}
var Ac=[rd,function(){Ic(this,M(this));this.b-=10},function(){this.ga(Hc(this),this.j);this.b-=7},function(){Ic(this,Hc(this)+1);this.b-=5},function(){this.N=ld(this,this.N);this.b-=5},function(){this.N=kd(this,this.N);this.b-=5},function(){this.N=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>8;this.I=this.I&255|a&256;this.b-=4},rd,function(){var a;Lc(this,a=I(this)+Hc(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.W(Hc(this));this.b-=7},function(){Ic(this,Hc(this)-
1);this.b-=5},function(){this.O=ld(this,this.O);this.b-=5},function(){this.O=kd(this,this.O);this.b-=5},function(){this.O=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;this.I=this.I&255|a;this.b-=4},rd,function(){Kc(this,M(this));this.b-=10},function(){this.ga(Jc(this),this.j);this.b-=7},function(){Kc(this,Jc(this)+1);this.b-=5},function(){this.P=ld(this,this.P);this.b-=5},function(){this.P=kd(this,this.P);this.b-=5},function(){this.P=L(this);this.b-=7},function(){var a=this.j<<
1;this.j=a&255|this.I>>8;this.I=this.I&255|a&256;this.b-=4},rd,function(){var a;Lc(this,a=I(this)+Jc(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.W(Jc(this));this.b-=7},function(){Kc(this,Jc(this)-1);this.b-=5},function(){this.R=ld(this,this.R);this.b-=5},function(){this.R=kd(this,this.R);this.b-=5},function(){this.R=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(this.I&256|this.j)>>1;this.I=this.I&255|a;this.b-=4},rd,function(){Lc(this,M(this));this.b-=10},function(){var a=
M(this);this.B.sb(a,I(this));this.b-=16},function(){Lc(this,I(this)+1);this.b-=5},function(){this.S=ld(this,this.S);this.b-=5},function(){this.S=kd(this,this.S);this.b-=5},function(){this.S=L(this);this.b-=7},function(){var a=0,b=Mc(this);if(Oc(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=Rc(this,a);this.I=b?this.I|256:this.I&-257;this.b-=4},rd,function(){var a;Lc(this,a=I(this)+I(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){var a;a=M(this);a=this.B.Ea(a);Lc(this,a);this.b-=
16},function(){Lc(this,I(this)-1);this.b-=5},function(){this.U=ld(this,this.U);this.b-=5},function(){this.U=kd(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},rd,function(){this.ca=M(this)&65535;this.b-=10},function(){this.ga(M(this),this.j);this.b-=13},function(){this.ca=this.ca+1&65535;this.b-=5},function(){var a=I(this);this.ga(a,ld(this,this.W(a)));this.b-=10},function(){var a=I(this);this.ga(a,kd(this,this.W(a)));this.b-=10},function(){this.ga(I(this),
L(this));this.b-=10},function(){this.I|=256;this.b-=4},rd,function(){var a;Lc(this,a=I(this)+this.ca);this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.W(M(this));this.b-=13},function(){this.ca=this.ca-1&65535;this.b-=5},function(){this.j=ld(this,this.j);this.b-=5},function(){this.j=kd(this,this.j);this.b-=5},function(){this.j=L(this);this.b-=7},function(){this.I=Mc(this)?this.I&-257:this.I|256;this.b-=4},function(){this.b-=5},function(){this.N=this.O;this.b-=5},function(){this.N=this.P;
this.b-=5},function(){this.N=this.R;this.b-=5},function(){this.N=this.S;this.b-=5},function(){this.N=this.U;this.b-=5},function(){this.N=this.W(I(this));this.b-=7},function(){this.N=this.j;this.b-=5},function(){this.O=this.N;this.b-=5},function(){this.b-=5},function(){this.O=this.P;this.b-=5},function(){this.O=this.R;this.b-=5},function(){this.O=this.S;this.b-=5},function(){this.O=this.U;this.b-=5},function(){this.O=this.W(I(this));this.b-=7},function(){this.O=this.j;this.b-=5},function(){this.P=
this.N;this.b-=5},function(){this.P=this.O;this.b-=5},function(){this.b-=5},function(){this.P=this.R;this.b-=5},function(){this.P=this.S;this.b-=5},function(){this.P=this.U;this.b-=5},function(){this.P=this.W(I(this));this.b-=7},function(){this.P=this.j;this.b-=5},function(){this.R=this.N;this.b-=5},function(){this.R=this.O;this.b-=5},function(){this.R=this.P;this.b-=5},function(){this.b-=5},function(){this.R=this.S;this.b-=5},function(){this.R=this.U;this.b-=5},function(){this.R=this.W(I(this));
this.b-=7},function(){this.R=this.j;this.b-=5},function(){this.S=this.N;this.b-=5},function(){this.S=this.O;this.b-=5},function(){this.S=this.P;this.b-=5},function(){this.S=this.R;this.b-=5},function(){this.b-=5},function(){this.S=this.U;this.b-=5},function(){this.S=this.W(I(this));this.b-=7},function(){this.S=this.j;this.b-=5},function(){this.U=this.N;this.b-=5},function(){this.U=this.O;this.b-=5},function(){this.U=this.P;this.b-=5},function(){this.U=this.R;this.b-=5},function(){this.U=this.S;this.b-=
5},function(){this.b-=5},function(){this.U=this.W(I(this));this.b-=7},function(){this.U=this.j;this.b-=5},function(){this.ga(I(this),this.N);this.b-=7},function(){this.ga(I(this),this.O);this.b-=7},function(){this.ga(I(this),this.P);this.b-=7},function(){this.ga(I(this),this.R);this.b-=7},function(){this.ga(I(this),this.S);this.b-=7},function(){this.ga(I(this),this.U);this.b-=7},function(){var a=this.L-1;if(this.J.length)for(var b=0;b<this.J.length;b++)if(this.J[b](a))return;this.u|=16;this.b-=7;
this.F&&fb(this,-2147483648)?(F(this,a),this.F.da()):this.pa&512||(this.F&&F(this,a),this.da())},function(){this.ga(I(this),this.j);this.b-=7},function(){this.j=this.N;this.b-=5},function(){this.j=this.O;this.b-=5},function(){this.j=this.P;this.b-=5},function(){this.j=this.R;this.b-=5},function(){this.j=this.S;this.b-=5},function(){this.j=this.U;this.b-=5},function(){this.j=this.W(I(this));this.b-=7},function(){this.b-=5},function(){this.j=Rc(this,this.N);this.b-=4},function(){this.j=Rc(this,this.O);
this.b-=4},function(){this.j=Rc(this,this.P);this.b-=4},function(){this.j=Rc(this,this.R);this.b-=4},function(){this.j=Rc(this,this.S);this.b-=4},function(){this.j=Rc(this,this.U);this.b-=4},function(){this.j=Rc(this,this.W(I(this)));this.b-=7},function(){this.j=Rc(this,this.j);this.b-=4},function(){this.j=Sc(this,this.N);this.b-=4},function(){this.j=Sc(this,this.O);this.b-=4},function(){this.j=Sc(this,this.P);this.b-=4},function(){this.j=Sc(this,this.R);this.b-=4},function(){this.j=Sc(this,this.S);
this.b-=4},function(){this.j=Sc(this,this.U);this.b-=4},function(){this.j=Sc(this,this.W(I(this)));this.b-=7},function(){this.j=Sc(this,this.j);this.b-=4},function(){this.j=J(this,this.N);this.b-=4},function(){this.j=J(this,this.O);this.b-=4},function(){this.j=J(this,this.P);this.b-=4},function(){this.j=J(this,this.R);this.b-=4},function(){this.j=J(this,this.S);this.b-=4},function(){this.j=J(this,this.U);this.b-=4},function(){this.j=J(this,this.W(I(this)));this.b-=7},function(){this.j=J(this,this.j);
this.b-=4},function(){this.j=nd(this,this.N);this.b-=4},function(){this.j=nd(this,this.O);this.b-=4},function(){this.j=nd(this,this.P);this.b-=4},function(){this.j=nd(this,this.R);this.b-=4},function(){this.j=nd(this,this.S);this.b-=4},function(){this.j=nd(this,this.U);this.b-=4},function(){this.j=nd(this,this.W(I(this)));this.b-=7},function(){this.j=nd(this,this.j);this.b-=4},function(){this.j=jd(this,this.N);this.b-=4},function(){this.j=jd(this,this.O);this.b-=4},function(){this.j=jd(this,this.P);
this.b-=4},function(){this.j=jd(this,this.R);this.b-=4},function(){this.j=jd(this,this.S);this.b-=4},function(){this.j=jd(this,this.U);this.b-=4},function(){this.j=jd(this,this.W(I(this)));this.b-=7},function(){this.j=jd(this,this.j);this.b-=4},function(){this.j=od(this,this.N);this.b-=4},function(){this.j=od(this,this.O);this.b-=4},function(){this.j=od(this,this.P);this.b-=4},function(){this.j=od(this,this.R);this.b-=4},function(){this.j=od(this,this.S);this.b-=4},function(){this.j=od(this,this.U);
this.b-=4},function(){this.j=od(this,this.W(I(this)));this.b-=7},function(){this.j=od(this,this.j);this.b-=4},function(){this.j=md(this,this.N);this.b-=4},function(){this.j=md(this,this.O);this.b-=4},function(){this.j=md(this,this.P);this.b-=4},function(){this.j=md(this,this.R);this.b-=4},function(){this.j=md(this,this.S);this.b-=4},function(){this.j=md(this,this.U);this.b-=4},function(){this.j=md(this,this.W(I(this)));this.b-=7},function(){this.j=md(this,this.j);this.b-=4},function(){J(this,this.N);
this.b-=4},function(){J(this,this.O);this.b-=4},function(){J(this,this.P);this.b-=4},function(){J(this,this.R);this.b-=4},function(){J(this,this.S);this.b-=4},function(){J(this,this.U);this.b-=4},function(){J(this,this.W(I(this)));this.b-=7},function(){J(this,this.j);this.b-=4},function(){Pc(this)||(F(this,N(this)),this.b-=6);this.b-=5},function(){Ic(this,N(this));this.b-=10},function(){var a=M(this);Pc(this)||F(this,a);this.b-=10},sd,function(){var a=M(this);Pc(this)||(Q(this,this.L),F(this,a),this.b-=
6);this.b-=11},function(){Q(this,Hc(this));this.b-=11},function(){this.j=Rc(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,0);this.b-=11},function(){Pc(this)&&(F(this,N(this)),this.b-=6);this.b-=5},td,function(){var a=M(this);Pc(this)&&F(this,a);this.b-=10},sd,function(){var a=M(this);Pc(this)&&(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},ud,function(){this.j=Sc(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,8);this.b-=11},function(){Mc(this)||(F(this,N(this)),this.b-=6);
this.b-=5},function(){Kc(this,N(this));this.b-=10},function(){var a=M(this);Mc(this)||F(this,a);this.b-=10},function(){var a=L(this);Ib(this.B,a,this.j,this.L+-2&65535);this.b-=10},function(){var a=M(this);Mc(this)||(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},function(){Q(this,Jc(this));this.b-=11},function(){this.j=J(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,16);this.b-=11},function(){Mc(this)&&(F(this,N(this)),this.b-=6);this.b-=5},td,function(){var a=M(this);Mc(this)&&F(this,
a);this.b-=10},function(){var a=L(this);this.j=Fb(this.B,a,this.L+-2&65535)&255;this.b-=10},function(){var a=M(this);Mc(this)&&(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},ud,function(){this.j=nd(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,24);this.b-=11},function(){Nc(this)||(F(this,N(this)),this.b-=6);this.b-=5},function(){Lc(this,N(this));this.b-=10},function(){var a=M(this);Nc(this)||F(this,a);this.b-=10},function(){var a=N(this);Q(this,I(this));Lc(this,a);this.b-=18},function(){var a=
M(this);Nc(this)||(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},function(){Q(this,I(this));this.b-=11},function(){this.j=jd(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,32);this.b-=11},function(){Nc(this)&&(F(this,N(this)),this.b-=6);this.b-=5},function(){F(this,I(this));this.b-=5},function(){var a=M(this);Nc(this)&&F(this,a);this.b-=10},function(){var a=I(this);Lc(this,Jc(this));Kc(this,a);this.b-=5},function(){var a=M(this);Nc(this)&&(Q(this,this.L),F(this,a),this.b-=6);this.b-=
11},ud,function(){this.j=od(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,40);this.b-=11},function(){Qc(this)||(F(this,N(this)),this.b-=6);this.b-=5},function(){var a=N(this);Dc(this,a);this.j=a>>8;this.b-=10},function(){var a=M(this);Qc(this)||F(this,a);this.b-=10},function(){this.pa&=-513;this.b-=4},function(){var a=M(this);Qc(this)||(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},function(){Q(this,Fc(this)&255|this.j<<8);this.b-=11},function(){this.j=md(this,L(this));this.b-=7},function(){Q(this,
this.L);F(this,48);this.b-=11},function(){Qc(this)&&(F(this,N(this)),this.b-=6);this.b-=5},function(){this.ca=I(this)&65535;this.b-=5},function(){var a=M(this);Qc(this)&&F(this,a);this.b-=10},function(){this.pa|=512;this.b-=4},function(){var a=M(this);Qc(this)&&(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},ud,function(){J(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,56);this.b-=11}];
function S(a){w.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!vd[b]&&t("Unrecognized ChipSet model: "+b);this.Sa=vd[b]||wd;a.sound&&(this.X=null,window&&(this.X=window.AudioContext||window.webkitAudioContext),this.X&&new this.X);C(this)}Wa(S);var wd=1978.1,vd={SI1978:wd};m=S.prototype;m.qa=function(){return!1};
m.Fa=function(a,b,c,d){this.B=b;this.b=c;this.F=d;this.w=a;if(this.Sa==wd){var e;a=xd;void 0===e&&(e=0);for(var f in a){c=b;d=+f+e;var h=a[f].bind(this);if(void 0!==h)for(var g=+f+e;g<=d;g++)void 0!==c.w[g]?t("Input port "+r(g)+" already registered"):c.w[g]=[h,!1]}var k;e=yd;void 0===k&&(k=0);for(var l in e)if(f=b,a=+l+k,c=e[l].bind(this),void 0!==c)for(d=+l+k;d<=a;d++)void 0!==f.u[d]?t("Output port "+r(d)+" already registered"):f.u[d]=[c,!1]}};
m.za=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.ya=function(a){return a?this.save():!0};m.reset=function(){this.G=this.H=this.D=this.u=this.M=this.K=this.J=0};m.save=function(){var a=new Gc(this);this.Sa==wd&&H(a,0,[this.J,this.K,this.M,this.u,this.D,this.G,this.H]);return a.data()};m.restore=function(a){a=a[0];this.Sa==wd&&(this.J=a[0],this.K=a[1],this.M=a[2],this.u=a[3],this.D=a[4],this.G=a[5],this.H=a[6]);return!0};m.start=function(){};m.stop=function(){};
m.bc=function(a,b){var c=this.J;db(this,a,null,b,"STATUS0",c);return c};m.cc=function(a,b){var c=this.K;db(this,a,null,b,"STATUS1",c);return c};m.dc=function(a,b){var c=this.M;db(this,a,null,b,"STATUS2",c);return c};m.ac=function(a,b){var c=this.u>>8-this.D&255;db(this,a,null,b,"SHIFT.RESULT",c);return c};m.ic=function(a,b,c){db(this,a,b,c,"SHIFT.COUNT",null);this.D=b};m.kc=function(a,b,c){db(this,a,b,c,"SOUND1",null);this.G=b};
m.jc=function(a,b,c){db(this,a,b,c,"SHIFT.DATA",null);this.u=b<<8|this.u>>8};m.lc=function(a,b,c){db(this,a,b,c,"SOUND2",null);this.H=b};m.mc=function(a,b,c){db(this,a,b,c,"WATCHDOG",null)};var xd={0:S.prototype.bc,1:S.prototype.cc,2:S.prototype.dc,3:S.prototype.ac},yd={2:S.prototype.ic,3:S.prototype.kc,4:S.prototype.jc,5:S.prototype.lc,6:S.prototype.mc};Ja(function(){for(var a=A(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new S(d);cb(d,c)}});
function zd(a){w.call(this,"ROM",a,zd);this.w=null;this.H=a.addr;this.u=a.size;this.J=a.writable;this.D=a.alias;this.G=a.file;this.K=ba(this.G);if(this.G){a=this.G;var b=ca(this.K);"json"!=b&&"hex"!=b&&(a=oa()+"/api/v1/dump?file="+this.G+"&format=bytes&decimal=true");var c=this;na(a,null,!0,function(a,b,f){Ad(c,a,b,f)})}}Wa(zd);var Bd=[0,5];zd.prototype.Fa=function(a,b,c,d){this.B=b;this.b=c;this.F=d;Cd(this)};
zd.prototype.za=function(){if(this.Ca){if(this.F){var a=this.F,b=this.id,c=this.H,d=this.u,e=this.Ca,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var p=f,k=[k>>>0,h],n=ia(p,k,a.Fb);0>n&&p.splice(-(n+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.J.push({nc:b,C:c,gc:d,Ca:e,Cb:f})}delete this.Ca}return!0};zd.prototype.ya=function(){return!0};
function Ad(a,b,c,d){if(d)a.oa("Unable to load system ROM (error "+d+": "+b+")");else{Ya(a.Ib,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.w=f;else if(h)for(a.w=Array(4*h.length),d=c=0;c<h.length;c++)a.w[d++]=h[c]&255,a.w[d++]=h[c]>>8&255,a.w[d++]=h[c]>>16&255,a.w[d++]=h[c]>>24&255;else a.w=e;a.Ca=e.symbols;if(!a.w.length){t("Empty ROM: "+b);return}if(1==a.w.length){t(a.w[0]);return}}catch(g){a.oa("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.w=Array(b.length),e=0;e<b.length;e++)a.w[e]=aa(b[e],16);Cd(a)}}
function Cd(a){if(!ib(a))if(!a.G)C(a);else if(a.w&&a.B){a.u||(a.u=a.w.length);if(a.w.length!=a.u)jb(a,"ROM size (0x"+q(a.w.length)+") does not match specified size ("+("0x"+q(a.u))+")");else if(Dd(a,a.H)){var b=[];"number"==typeof a.D?b.push(a.D):null!=a.D&&a.D.length&&(b=a.D);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.B,h=d.u,g=[],k=d.H>>>f.ea;0<h&&k<f.T.length;)g.push(f.T[k++]),h-=f.ua;f=d.B;d=d.u;h=0;for(e>>>=f.ea;0<d&&e<f.T.length;){k=g[h++];if(!k)break;f.T[e++]=k;d-=f.ua}}delete a.w}C(a)}}
function Dd(a,b){if(rb(a.B,b,a.u,a.J?1:Pb)){var c;for(c=0;c<a.w.length;c++)vb(a.B,b+c,a.w[c]);if(a.J&&256==b){for(c=0;c<Bd.length;c++)vb(a.B,Bd[c],118);Cc(a.b,function(a){return function(b){if(0<=Bd.indexOf(b)){var c=!1,h=a.b,g=a.F;if(5==b)switch(c=!0,h.O){case 2:Ed(a,String.fromCharCode(h.R));break;case 9:for(var k=Jc(h),l="",p=255;p--;){var n=a.b.W(k++);if(36==n)break;l+=String.fromCharCode(n)}Ed(a,l);break;default:c=!1}c?td.call(h):g&&(a.g("\nCP/M vector "+r(b)),F(h,b),g.da());b=!0}else b=!1;return b}}(a));
Ec(a.b,b)}return!0}return!1}function Ed(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}Ja(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new zd(d);cb(d,c)}});function Fd(a){w.call(this,"RAM",a,Fd);this.D=a.addr;this.u=a.size;this.w=!1}Wa(Fd);m=Fd.prototype;m.Fa=function(a,b,c,d){this.B=b;this.b=c;this.F=d;C(this)};m.za=function(a,b){b||this.reset();return!0};m.ya=function(a){return a?this.save():!0};
m.reset=function(){!this.w&&this.u&&rb(this.B,this.D,this.u,1)&&(this.w=!0,this.status(Math.floor(this.u/1024)+"Kb allocated"));this.w||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ja(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Fd(d);cb(d,c)}});function Gd(a){w.call(this,"Keyboard",a,Gd,65536);C(this)}Wa(Gd);
Ja(function(){for(var a=A(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Gd(d);cb(d,c)}});
function Hd(a,b,c){w.call(this,"Video",a,Hd,262144);this.Y=a.screenWidth;this.K=a.screenHeight;this.X=a.bufferAddr;this.G=a.bufferCols;this.H=a.bufferRows;this.fa=a.bufferBits||1;this.Ba=a.bufferLeft||0;this.ka=a.bufferRotate;this.Zb=a.interruptRate;this.Da=a.refreshRate||60;this.u=c;this.u.webkitImageSmoothingEnabled=!1;this.u.mozImageSmoothingEnabled=!1;this.u.msImageSmoothingEnabled=!1;this.u.imageSmoothingEnabled=!1;this.sa=a.screenRotate;90==this.sa&&(this.u.translate(0,this.K),this.u.rotate(-this.sa*
Math.PI/180),this.u.scale(this.K/this.Y,this.Y/this.K));this.Aa=[[0,0,0,255],[255,255,255,255]];a=this.G;b=this.H;this.ka&&(a=this.H,b=this.G);this.ba=this.u.createImageData(a,b);this.D=document.createElement("canvas");this.D.width=a;this.D.height=b;this.ma=this.D.getContext("2d")}Wa(Hd);
Hd.prototype.Fa=function(a,b,c,d){this.w=a;this.B=b;this.b=c;this.F=d;this.M=(this.G*this.fa>>3)*this.H;rb(this.B,this.X,this.M,3)&&(this.na=this.M>>1,this.ra=16/this.fa|0,this.aa=!1,void 0===this.J||this.J.length!=this.na)&&(this.J=Array(this.na));C(this)};
w.prototype={constructor:w,parent:null,toString:function(){return this.name?this.name:this.id||this.type},oa:function(a,b,c){switch(b){case "clear":return this.T[b]||(this.T[b]=c,c.onclick=function(a){return function(){a.T.print&&(a.T.print.value="")}}(this)),!0;case "print":return this.T[b]||(this.ta=this.T[b]=c,c.value="",this.g=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.pa=function(a,b,c){this.g(a,"notice",c)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.eb+": "+a)},pa:function(a,b){b||t(a)},Ba:function(){return this.A.ia=!0},Aa:function(a,b){b&&(this.A.ia=!1);return!0}};function db(a,b,c,d,e,f){var h=!0;a.F&&(!0===h?h=0:null==h&&(h=a.ha),eb(a.F,a,b,c,d,e,f,h))}function fb(a,b,c){a.F&&(!0===c||gb(a,c|0))&&a.F.message(b,void 0)}
function gb(a,b){if(a.F){a===a.F?b|=0:b=b||a.ha;var c=a.F.ha&b;return!!b&&c===b||!!(c&a.F.Xb)}return!1}function hb(a,b){if(a.A.wb)return a.A.Qa&&(a.A.Qa=!1),a.A.wb=!1;if(a.A.Sa)return a.g(a.toString()+" error"),!1;a.A.Qa=b;return a.A.Qa}function ib(a,b){a.A.Qa&&(b?a.A.wb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.A.Qa}function C(a){if(!a.A.Sa&&(a.A.Ta=!0,a.A.Ta)){var b=a.rb;a.rb=null;b&&b()}}function jb(a,b){b&&(a.A.Ta?b():a.rb=b);return a.A.Ta}function kb(a,b){a.A.Sa=!0;a.pa(b)}
var lb="undefined"!==typeof ArrayBuffer,mb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function nb(a){w.call(this,"Panel",a,nb)}Wa(nb);m=nb.prototype;m.oa=function(a,b,c,d){return this.w&&this.w.oa(a,b,c,d)||this.b&&this.b.oa(a,b,c,d)||this.u&&this.u.oa(a,b,c,d)||this.F&&this.F.oa(a,b,c,d)?!0:this.parent.oa.call(this,a,b,c,d)};m.Ha=function(a,b,c,d){this.w=a;this.B=b;this.b=c;this.F=d;this.u=ob(a,"Keyboard")};m.Ba=function(a,b){b||pb();return!0};m.Aa=function(){return!0};m.va=function(){};
function pb(){for(var a=!1,b=A(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=y(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<x.length;h++)if(x[h].id===f){f=x[h];break a}f=null}f||(a=!0,f=new nb(e));cb(f,d);a&&C(f)}}Ja(pb);
function qb(a,b,c){w.call(this,"Bus",a,qb);this.b=b;this.F=c;this.J=a.busWidth||16;this.X=Math.pow(2,this.J);this.D=this.X-1|0;this.ea=16>=this.J?10:20>=this.J?12:24>=this.J?14:15;this.ua=1<<this.ea;this.Y=this.ua>>2;this.B=this.ua-1;this.M=this.X/this.ua|0;this.K=this.M-1;this.w=[];this.u=[];this.G=this.H=!1;this.aa=[];this.ba=[];a=new D;rb(a,this.F);this.U=Array(this.M);for(b=0;b<this.M;b++)this.U[b]=a;C(this)}Wa(qb);m=qb.prototype;m.reset=function(){};m.Ba=function(a,b){b||this.reset();return!0};
function sb(a,b,c,d){for(var e=b>>>a.ea;0<c&&e<a.U.length;){var f=a.U[e],h=e*a.ua,g=a.ua-(b-h);g>c&&(g=c);if(f&&f.size){if(f.type==d){if(b+c<=f.C)return f.nb+=f.C-b,f.C=b,!0;if(b>=f.C+f.nb){g=f.size-(b-h);g>c&&(g=c);f.nb=b-f.C+g;b=h+a.ua;c-=g;e++;continue}}return tb(1,b,c)}b=new D(b,g,a.ua,d);rb(b,a.F,f);a.U[e++]=b;b=h+a.ua;c-=g}return 0>=c?!0:tb(2,b,c)}m.W=function(a){return this.U[(a&this.D)>>>this.ea].ab(a&this.B,a)};function ub(a,b){return a.U[(b&a.D)>>>a.ea].lb(b&a.B,b)}
m.Ga=function(a){var b=a&this.B,c=(a&this.D)>>>this.ea;return b!=this.B?this.U[c].Tb(b,a):this.U[c++].ab(b,a)|this.U[c&this.K].ab(0,a+1)<<8};function vb(a,b){var c=b&a.B,d=(b&a.D)>>>a.ea;return c!=a.B?a.U[d].Bb(c,b):a.U[d++].lb(c,b)|a.U[d&a.K].lb(0,b+1)<<8}m.fa=function(a,b){this.U[(a&this.D)>>>this.ea].cb(a&this.B,b&255,a)};function wb(a,b,c){a.U[(b&a.D)>>>a.ea].ob(b&a.B,c&255,b)}
m.ub=function(a,b){var c=a&this.B,d=(a&this.D)>>>this.ea;c!=this.B?this.U[d].Vb(c,b&65535,a):(this.U[d++].cb(c,b&255,a),this.U[d&this.K].cb(0,b>>8&255,a+1))};function xb(a,b){if(void 0===b)return a.G=!a.G,a.G;void 0===a.w[b]&&(a.w[b]=[null,!1]);a.w[b][1]=!a.w[b][1];return a.w[b][1]}
function yb(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.w[b],g=a.aa[b]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h?(h[0]&&(l=h[0](b,c),void 0===l?l=k:l&=k),a.F&&a.G!=h[1]&&zb(a.F,b,l)):a.F&&(eb(a.F,a,b,null,c),a.G&&zb(a.F,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Ib(a,b){if(void 0===b)return a.H=!a.H,a.H;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]}
function Jb(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.u[b],g=a.ba[b]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h){if(h[0])h[0](b,k,d);a.F&&a.H!=h[1]&&Kb(a.F,b,k)}else a.F&&(eb(a.F,a,b,k,d),a.H&&Kb(a.F,b,k));f+=g<<3;b+=g;e-=g}}function tb(a,b,c){t("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Lb;if(lb){var Mb=new ArrayBuffer(2);(new DataView(Mb)).setUint16(0,256,!0);Lb=256===(new Uint16Array(Mb))[0]}else Lb=!1;var Nb=Lb;
function D(a,b,c,d){this.id=Ob+=2;this.b=null;this.C=a;this.nb=b;this.size=c||0;this.type=d||Pb;this.w=d==Qb;rb(this);this.ya=this.Lb=!1;if(c)if(lb)this.G=new ArrayBuffer(c),this.H=new DataView(this.G,0,c),this.B=new Uint8Array(this.G,0,c),this.K=new Uint16Array(this.G,0,c>>1),this.b=new Int32Array(this.G,0,c>>2),Rb(this,Nb?Sb:Tb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Rb(this,Ub)}else Rb(this)}var Pb=0,Qb=2,Vb=["NONE","RAM","ROM","VIDEO","H/W"],Ob=0;
D.prototype={constructor:D,parent:null,save:function(){var a,b;if(lb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.H.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(lb)for(b=0;b<a.length;b++)this.H.setInt32(b<<2,a[b],!0);else this.b=a;return this.ya=!0}return!1},Ja:function(a,b){b?0===this.u++&&Wb(this,Xb,!1):0===this.T++&&Yb(this,Xb,!1)},M:function(){this.F&&gb(this.F,129)&&this.F.message("attempt to read invalid block %"+q(this.C),!0);
return 255},D:function(a,b){this.F&&gb(this.F,129)&&this.F.message("attempt to write "+r(b)+" to invalid block %"+q(this.C),!0)},X:function(a,b){return this.ab(a++,b++)|this.ab(a,b)<<8},J:function(a,b,c){this.cb(a++,b&255,c++);this.cb(a,b>>8,c)},ga:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ra:function(a){var b=a>>2;a=(a&3)<<3;var c=this.b[b]>>a;return 24>a?c&65535:c&255|(this.b[b+1]&255)<<8},xa:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.ya=!0},Ia:function(a,
b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.ya=!0},aa:function(a,b){if(this.F&&null!=this.C){var c=this.F;Zb(c,this.C+a,1,c.aa)&&c.da(!0)}return this.lb(a,b)},la:function(a,b){if(this.F&&null!=this.C){var c=this.F;Zb(c,this.C+a,2,c.aa)&&c.da(!0)}return this.Bb(a,b)},sa:function(a,b,c){if(this.F&&null!=this.C){var d=this.F;Zb(d,this.C+a,1,d.H)&&d.da(!0)}this.w?this.D(a,b,c):this.ob(a,b,c)},Fa:function(a,
b,c){if(this.F&&null!=this.C){var d=this.F;Zb(d,this.C+a,2,d.H)&&d.da(!0)}this.w?this.D(a,b,c):this.Cb(a,b,c)},Y:function(a){return this.B[a]},ba:function(a){return this.B[a]},ka:function(a){return this.H.getUint16(a,!0)},na:function(a){return a&1?this.B[a]|this.B[a+1]<<8:this.K[a>>1]},Ea:function(a,b){this.B[a]=b;this.ya=!0},wa:function(a,b){this.B[a]=b;this.ya=!0},Ca:function(a,b){this.H.setUint16(a,b,!0);this.ya=!0},eb:function(a,b){a&1?(this.B[a]=b,this.B[a+1]=b>>8):this.K[a>>1]=b;this.ya=!0}};
function rb(a,b,c){a.F=b;a.T=a.u=0;c&&((a.T=c.T)&&Yb(a,Xb,!1),(a.u=c.u)&&Wb(a,Xb,!1))}function $b(a,b){b?0===--a.u&&(a.cb=a.w?a.D:a.ob,a.Vb=a.w?a.J:a.Cb):0===--a.T&&(a.ab=a.lb,a.Tb=a.Bb)}function Wb(a,b,c){c&&a.u||(a.cb=!a.w&&b[2]||a.D,a.Vb=!a.w&&b[3]||a.J);if(c||void 0===c)a.ob=b[2]||a.D,a.Cb=b[3]||a.J}function Yb(a,b,c){c&&a.T||(a.ab=b[0]||a.M,a.Tb=b[1]||a.X);if(c||void 0===c)a.lb=b[0]||a.M,a.Bb=b[1]||a.X}function Rb(a,b){b||(b=ac);Yb(a,b,void 0);Wb(a,b,void 0)}
var ac=[],Ub=[D.prototype.ga,D.prototype.ra,D.prototype.xa,D.prototype.Ia],Xb=[D.prototype.aa,D.prototype.la,D.prototype.sa,D.prototype.Fa];if(lb)var Tb=[D.prototype.Y,D.prototype.ka,D.prototype.Ea,D.prototype.Ca],Sb=[D.prototype.ba,D.prototype.na,D.prototype.wa,D.prototype.eb];
function bc(a,b){w.call(this,"CPU",a,bc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.$a=c;this.i.tb=0;this.i.Na=d;this.i.yb=Math.round(this.i.$a/1E4)/100;this.i.La=this.i.yb*this.i.Na;this.A.ma=!1;this.A.xb=!1;this.A.Kb=a.autoStart;this.A.Mb=!1;this.A.Ra=!1;this.i.fb=this.i.Xa=0;this.i.gb=a.csStart;this.i.Wa=a.csInterval;this.i.Ya=a.csStop;this.aa=this.Oa.bind(this);C(this)}Wa(bc);var cc=["power","reset"];m=bc.prototype;
m.Ha=function(a,b,c,d){this.w=a;this.B=b;this.F=d;for(b=0;b<cc.length;b++)(c=this.T[cc[b]])&&this.w.oa(null,cc[b],c);this.Ea=(b=ob(a,"Video"))&&Math.max(b.Ea,b.Zb)||60;this.K=ob(a,"ChipSet");a=oc(a,"autoStart");null!=a&&(this.A.Kb="true"==a?!0:"false"==a?!1:!!a);C(this)};m.reset=function(){this.i.tb=0};m.save=function(){return null};m.restore=function(){return!1};
m.Ba=function(a,b){if(!b){if(a&&this.restore){pc(this);if(!this.restore(a))return!1;qc(this)}else this.reset();if(this.F){var c=this.F;c.g("Type ? for help with PC8080 Debugger commands");c.va();if(c.Ia){var d=c.Ia;c.Ia=null;rc(c,d)}}else this.g("No debugger detected")}sc(this);return!0};m.Aa=function(a){return a?this.save():!0};function tc(a){(a.A.Kb||!a.F&&void 0===a.T.run)&&a.Oa(!0)}m.Ob=function(){return 0};
function qc(a){void 0===a.i.gb&&(a.i.gb=0);void 0===a.i.Wa&&(a.i.Wa=-1);void 0===a.i.Ya&&(a.i.Ya=-1);a.A.Ra=0<=a.i.gb&&0<a.i.Wa;a.A.Ra&&(a.i.fb=0,a.i.Xa=a.i.gb-a.H)}function uc(a,b){if(a.A.Ra){var c=!1;a.i.fb=a.i.fb+a.Ob()|0;a.i.Xa-=b;0>=a.i.Xa&&(a.i.Xa+=a.i.Wa,c=!0);0<=a.i.Ya&&a.i.Ya<=vc(a)&&(a.i.Wa=a.i.Ya=-1,qc(a),a.da(),c=!0);c&&a.g(vc(a)+" cycles: checksum="+q(a.i.fb))}}
m.oa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.T[b]=c;a=!0;break;case "run":this.T[b]=c;c.onclick=function(){var a;if(a=d.w)if(a=d.w,a.A.ia)a=!0;else{var b=null,c,g=Za(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.A.Ta);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.ia);c++);c==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.A.Ta?"powered yet":"ready yet"+(b.rb?" (waiting for notification)":""))+".");a=!1}a&&(d.A.ma?d.da(!0):d.Oa(!0))};a=
!0;break;case "speed":this.T[b]=c;a=!0;break;case "setSpeed":this.T[b]=c,c.onclick=function(){wc(d,d.i.Na<<1,!0)},c.textContent=this.i.La.toFixed(2)+"Mhz",a=!0}return a};function xc(a,b,c){a.H+=b;c&&(a.D=a.b=0)}
function yc(a,b){var c=30;c<a.Ea&&(c=a.Ea);2>c&&(c=2);var d=1;b&&1<a.i.Na&&a.i.Ka&&(d=a.i.Ka/a.i.yb);a.i.Pb=Math.round(1E3/30);a.i.hc=Math.floor(a.i.$a/c*d);a.i.zb=Math.floor(a.i.$a/30*d);a.i.Rb=Math.floor(a.i.$a/a.Ea*d);a.i.Qb=Math.floor(a.i.$a/2*d);b||(a.i.Za=a.i.zb,a.i.ib=a.i.Rb,a.i.hb=a.i.Qb);a.i.Ab=0}function vc(a){return a.H+a.G+a.D-a.b}function pc(a){a.i.Ka=0;a.H=a.G=a.D=a.b=0;qc(a);wc(a,1)}
function wc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.Ka/a.i.La?b=1:d=!0;a.i.Na=b;b=a.i.yb*a.i.Na;if(a.i.La!=b){a.i.La=b;b=a.i.La.toFixed(2)+"Mhz";var e=a.T.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.w&&a.w.mb()}xc(a,a.G);a.G=0;a.i.Va=ja();a.i.Ma=0;yc(a);return d}
m.Oa=function(a){if(hb(this,!0)){if(!this.A.ma){wc(this);this.w&&this.w.start(this.i.Va,vc(this));this.A.ma=!0;this.A.xb=!0;this.K&&this.K.start();var b=this.T.run;b&&(b.textContent="Halt");this.w&&(this.w.va(!0),a&&this.w.mb(!0))}this.i.Ab>=this.i.$a&&yc(this,!0);this.i.jb=0;this.i.sb=ja();this.i.Ma&&(a=this.i.sb-this.i.Ma,a>this.i.Pb&&(this.i.Va+=a,this.i.Va>this.i.sb&&(this.i.Va=this.i.sb)));try{do{var c=this.A.Ra?1:this.i.hc;try{this.bb(c)}catch(e){if("number"!=typeof e)throw e;}var d=this.D-
this.b;this.G+=d;this.i.jb+=d;xc(this,0,!0);uc(this,d);this.i.ib-=d;0>=this.i.ib&&(this.i.ib+=this.i.Rb,this.w&&zc(this.w,this.i.tb++),this.i.tb>this.Ea&&(this.i.tb=0));this.i.hb-=d;0>=this.i.hb&&(this.i.hb+=this.i.Qb,this.w&&this.w.va());this.i.Za-=d;if(0>=this.i.Za){this.i.Za+=this.i.zb;break}}while(this.A.ma)}catch(e){this.da();sc(this);this.w&&this.w.stop(ja(),vc(this));hb(this,!1);kb(this,e.stack||e.message);return}c=setTimeout;d=this.aa;this.i.Ma=ja();a=this.i.Pb;this.i.jb&&(a=Math.round(a*
this.i.jb/this.i.zb));a-=this.i.Ma-this.i.sb;if(b=this.i.Ma-this.i.Va)this.i.Ka=Math.round(this.G/(10*b))/100,864E5<=b&&(this.H=0,wc(this));if(0>a||this.i.Ka<this.i.La)a=0;this.i.Ab+=this.i.jb;this.i.Ma+=a;c(d,a)}else sc(this),this.w&&this.w.stop(ja(),vc(this))};m.bb=function(){return 0};m.da=function(a){ib(this,!0);this.D-=this.b;this.b=0;xc(this,this.G);this.G=0;if(this.A.ma){this.A.ma=!1;this.K&&this.K.stop();var b=this.T.run;b&&(b.textContent="Run")}this.A.qb=a};
function sc(a,b){a.w&&(zc(a.w,-1),a.w.va(b))}function Ac(a){this.Ua=a.model||8080;bc.call(this,a,1E6);this.M=Bc;pc(this);this.A.qb=this.A.Yb=!1;this.Y=0;this.J=[];this.X=0;Cc(this)}Wa(Ac,bc);function Dc(a,b){a.J.push(b)}m=Ac.prototype;m.reset=function(){this.A.ma&&this.da();Cc(this);pc(this);this.A.Sa=!1;this.parent.reset.call(this)};function Cc(a){a.j=0;a.N=0;a.O=0;a.P=0;a.R=0;a.S=0;a.V=0;a.ca=0;F(a,a.X);Ec(a,0);a.u=0}function Fc(a,b){a.X=b;F(a,b)}
m.Ob=function(){var a=this.j+this.N+this.O+this.P+this.R+this.S+this.V|0;return a=a+this.ca+this.L+Gc(this)|0};
m.save=function(){var a=new Hc(this);H(a,0,[this.j,this.N,this.O,this.P,this.R,this.S,this.V,this.ca,this.L,Gc(this)]);H(a,1,[this.u,this.H,this.i.Na]);for(var b=this.B,c=0,d=[],e=0;e<b.M;e++){var f=b.U[e];if(f.ya||f.Lb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var p=f[g],n=g+1;n<f.length&&f[n]===p;)n++;l[k++]=n-g;l[k++]=p;g=n}if(l.length<f.length){f=l;break a}}d[h]=f}}H(a,2,d);return a.data()};
m.restore=function(a){var b=a[0];this.j=b[0];this.N=b[1];this.O=b[2];this.P=b[3];this.R=b[4];this.S=b[5];this.V=b[6];this.ca=b[7]&65535;F(this,b[8]);Ec(this,b[9]);b=a[1];this.u=b[0];this.H=b[1];wc(this,b[3]);a:{b=this.B;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.Y){for(var f=0,h=Array(b.Y),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.U[d];if(!f||!f.restore(e)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.oa=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.T[b]=c;this.Y++;d=!0;break;default:d=this.parent.oa.call(this,a,b,c)}return d};function Ic(a){return a.N<<8|a.O}function Jc(a,b){a.N=b>>8&255;a.O=b&255}function Kc(a){return a.P<<8|a.R}function Lc(a,b){a.P=b>>8&255;a.R=b&255}function I(a){return a.S<<8|a.V}
function Mc(a,b){a.S=b>>8&255;a.V=b&255}function F(a,b){a.L=b&65535}function Nc(a){return a.I&256?1:0}function Oc(a){return mb[a.Z&255]?4:0}function Pc(a){return(a.Z^a.ja)&16?16:0}function Qc(a){return a.I&255?0:64}function Rc(a){return a.Z&128?128:0}function Gc(a){return a.qa&-214|Rc(a)|Qc(a)|Pc(a)|Oc(a)|Nc(a)}function Ec(a,b){a.I=a.Z=a.ja=0;b&1&&(a.I|=256);b&4||(a.Z|=1);b&16&&(a.ja|=16);b&64||(a.I|=255);b&128&&(a.Z^=192);a.qa=a.qa&-513|b&512|2}
function Sc(a,b){a.ja=a.j^b;return a.Z=(a.I=a.j+b)&255}function Tc(a,b){a.ja=a.j^b;return a.Z=(a.I=a.j+b+(a.I&256?1:0))&255}function kd(a,b){a.I=a.Z=a.ja=a.j&b;(a.j|b)&8&&(a.ja^=16);return a.I}function ld(a,b){a.ja=b^255;b=a.Z=b+255&255;a.I=a.I&-256|b;return b}function md(a,b){a.ja=b;b=a.Z=b+1&255;a.I=a.I&-256|b;return b}function nd(a,b){return a.Z=a.I=a.ja=a.j|b}function J(a,b){b^=255;a.ja=a.j^b;return a.Z=(a.I=a.j+b+1^256)&255}
function od(a,b){b^=255;a.ja=a.j^b;return a.Z=(a.I=a.j+b+(a.I&256?0:1)^256)&255}function pd(a,b){return a.Z=a.I=a.ja=a.j^b}m.W=function(a){return this.B.W(a)};m.fa=function(a,b){this.B.fa(a,b)};function L(a){var b=a.W(a.L);F(a,a.L+1);return b}function M(a){var b=a.B.Ga(a.L);F(a,a.L+2);return b}function N(a){var b=a.B.Ga(a.ca);a.ca=a.ca+2&65535;return b}function Q(a,b){a.ca=a.ca-2&65535;a.B.ub(a.ca,b)}
function R(a,b,c,d){d=d||2;a.T[b]&&(void 0===c&&(kb(a,"Value for "+b+" is invalid"),a.da()),c=!a.A.ma||a.A.Mb?q(c,d):"--------".substr(0,d),a.T[b].textContent!=c&&(a.T[b].textContent=c))}
m.va=function(a){this.Y&&(a||!this.A.ma||this.A.Mb)&&(R(this,"A",this.j),R(this,"B",this.N),R(this,"C",this.O),R(this,"BC",Ic(this),4),R(this,"D",this.P),R(this,"E",this.R),R(this,"DE",Kc(this),4),R(this,"H",this.S),R(this,"L",this.V),R(this,"HL",I(this),4),R(this,"SP",this.ca,4),R(this,"PC",this.L,4),a=Gc(this),R(this,"PS",a,4),R(this,"IF",a&512?1:0,1),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.T.speed)a.textContent=
this.A.ma&&this.i.Ka?this.i.Ka.toFixed(2)+"Mhz":"Stopped"};
m.bb=function(a){this.A.qb=!0;var b=this.A.Yb=this.F&&qd(this.F),c=a?this.A.xb?0:1:-1;this.A.xb=!1;this.D=this.b=a;do{if(this.u){var d;this.u&8&&this.qa&512?(d=199|(this.u&7)<<3,this.u&=-16,this.qa&=-513,this.M[d].call(this),d=!0):d=!1;if(d){if(!a){this.g("interrupt dispatched");break}}else if(this.u&16){this.b=0;break}}if(b){if(rd(this.F,this.L,c)){this.da();break}c=1}this.M[L(this)].call(this)}while(0<this.b);return this.A.qb?this.D-this.b:void 0===this.A.qb?0:-1};
Ja(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Ac(d);cb(d,c)}});function sd(){this.b-=4}function td(){F(this,M(this));this.b-=10}function ud(){F(this,N(this));this.b-=10}function vd(){var a=M(this);Q(this,this.L);F(this,a);this.b-=17}
var Bc=[sd,function(){Jc(this,M(this));this.b-=10},function(){this.fa(Ic(this),this.j);this.b-=7},function(){Jc(this,Ic(this)+1);this.b-=5},function(){this.N=md(this,this.N);this.b-=5},function(){this.N=ld(this,this.N);this.b-=5},function(){this.N=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>8;this.I=this.I&255|a&256;this.b-=4},sd,function(){var a;Mc(this,a=I(this)+Ic(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.W(Ic(this));this.b-=7},function(){Jc(this,Ic(this)-
1);this.b-=5},function(){this.O=md(this,this.O);this.b-=5},function(){this.O=ld(this,this.O);this.b-=5},function(){this.O=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;this.I=this.I&255|a;this.b-=4},sd,function(){Lc(this,M(this));this.b-=10},function(){this.fa(Kc(this),this.j);this.b-=7},function(){Lc(this,Kc(this)+1);this.b-=5},function(){this.P=md(this,this.P);this.b-=5},function(){this.P=ld(this,this.P);this.b-=5},function(){this.P=L(this);this.b-=7},function(){var a=this.j<<
1;this.j=a&255|this.I>>8;this.I=this.I&255|a&256;this.b-=4},sd,function(){var a;Mc(this,a=I(this)+Kc(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.W(Kc(this));this.b-=7},function(){Lc(this,Kc(this)-1);this.b-=5},function(){this.R=md(this,this.R);this.b-=5},function(){this.R=ld(this,this.R);this.b-=5},function(){this.R=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(this.I&256|this.j)>>1;this.I=this.I&255|a;this.b-=4},sd,function(){Mc(this,M(this));this.b-=10},function(){var a=
M(this);this.B.ub(a,I(this));this.b-=16},function(){Mc(this,I(this)+1);this.b-=5},function(){this.S=md(this,this.S);this.b-=5},function(){this.S=ld(this,this.S);this.b-=5},function(){this.S=L(this);this.b-=7},function(){var a=0,b=Nc(this);if(Pc(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=Sc(this,a);this.I=b?this.I|256:this.I&-257;this.b-=4},sd,function(){var a;Mc(this,a=I(this)+I(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){var a;a=M(this);a=this.B.Ga(a);Mc(this,a);this.b-=
16},function(){Mc(this,I(this)-1);this.b-=5},function(){this.V=md(this,this.V);this.b-=5},function(){this.V=ld(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},sd,function(){this.ca=M(this)&65535;this.b-=10},function(){this.fa(M(this),this.j);this.b-=13},function(){this.ca=this.ca+1&65535;this.b-=5},function(){var a=I(this);this.fa(a,md(this,this.W(a)));this.b-=10},function(){var a=I(this);this.fa(a,ld(this,this.W(a)));this.b-=10},function(){this.fa(I(this),
L(this));this.b-=10},function(){this.I|=256;this.b-=4},sd,function(){var a;Mc(this,a=I(this)+this.ca);this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.W(M(this));this.b-=13},function(){this.ca=this.ca-1&65535;this.b-=5},function(){this.j=md(this,this.j);this.b-=5},function(){this.j=ld(this,this.j);this.b-=5},function(){this.j=L(this);this.b-=7},function(){this.I=Nc(this)?this.I&-257:this.I|256;this.b-=4},function(){this.b-=5},function(){this.N=this.O;this.b-=5},function(){this.N=this.P;
this.b-=5},function(){this.N=this.R;this.b-=5},function(){this.N=this.S;this.b-=5},function(){this.N=this.V;this.b-=5},function(){this.N=this.W(I(this));this.b-=7},function(){this.N=this.j;this.b-=5},function(){this.O=this.N;this.b-=5},function(){this.b-=5},function(){this.O=this.P;this.b-=5},function(){this.O=this.R;this.b-=5},function(){this.O=this.S;this.b-=5},function(){this.O=this.V;this.b-=5},function(){this.O=this.W(I(this));this.b-=7},function(){this.O=this.j;this.b-=5},function(){this.P=
this.N;this.b-=5},function(){this.P=this.O;this.b-=5},function(){this.b-=5},function(){this.P=this.R;this.b-=5},function(){this.P=this.S;this.b-=5},function(){this.P=this.V;this.b-=5},function(){this.P=this.W(I(this));this.b-=7},function(){this.P=this.j;this.b-=5},function(){this.R=this.N;this.b-=5},function(){this.R=this.O;this.b-=5},function(){this.R=this.P;this.b-=5},function(){this.b-=5},function(){this.R=this.S;this.b-=5},function(){this.R=this.V;this.b-=5},function(){this.R=this.W(I(this));
this.b-=7},function(){this.R=this.j;this.b-=5},function(){this.S=this.N;this.b-=5},function(){this.S=this.O;this.b-=5},function(){this.S=this.P;this.b-=5},function(){this.S=this.R;this.b-=5},function(){this.b-=5},function(){this.S=this.V;this.b-=5},function(){this.S=this.W(I(this));this.b-=7},function(){this.S=this.j;this.b-=5},function(){this.V=this.N;this.b-=5},function(){this.V=this.O;this.b-=5},function(){this.V=this.P;this.b-=5},function(){this.V=this.R;this.b-=5},function(){this.V=this.S;this.b-=
5},function(){this.b-=5},function(){this.V=this.W(I(this));this.b-=7},function(){this.V=this.j;this.b-=5},function(){this.fa(I(this),this.N);this.b-=7},function(){this.fa(I(this),this.O);this.b-=7},function(){this.fa(I(this),this.P);this.b-=7},function(){this.fa(I(this),this.R);this.b-=7},function(){this.fa(I(this),this.S);this.b-=7},function(){this.fa(I(this),this.V);this.b-=7},function(){var a=this.L-1;if(this.J.length)for(var b=0;b<this.J.length;b++)if(this.J[b](a))return;this.u|=16;this.b-=7;
this.F&&gb(this,-2147483648)?(F(this,a),this.F.da()):this.qa&512||(this.F&&F(this,a),this.da())},function(){this.fa(I(this),this.j);this.b-=7},function(){this.j=this.N;this.b-=5},function(){this.j=this.O;this.b-=5},function(){this.j=this.P;this.b-=5},function(){this.j=this.R;this.b-=5},function(){this.j=this.S;this.b-=5},function(){this.j=this.V;this.b-=5},function(){this.j=this.W(I(this));this.b-=7},function(){this.b-=5},function(){this.j=Sc(this,this.N);this.b-=4},function(){this.j=Sc(this,this.O);
this.b-=4},function(){this.j=Sc(this,this.P);this.b-=4},function(){this.j=Sc(this,this.R);this.b-=4},function(){this.j=Sc(this,this.S);this.b-=4},function(){this.j=Sc(this,this.V);this.b-=4},function(){this.j=Sc(this,this.W(I(this)));this.b-=7},function(){this.j=Sc(this,this.j);this.b-=4},function(){this.j=Tc(this,this.N);this.b-=4},function(){this.j=Tc(this,this.O);this.b-=4},function(){this.j=Tc(this,this.P);this.b-=4},function(){this.j=Tc(this,this.R);this.b-=4},function(){this.j=Tc(this,this.S);
this.b-=4},function(){this.j=Tc(this,this.V);this.b-=4},function(){this.j=Tc(this,this.W(I(this)));this.b-=7},function(){this.j=Tc(this,this.j);this.b-=4},function(){this.j=J(this,this.N);this.b-=4},function(){this.j=J(this,this.O);this.b-=4},function(){this.j=J(this,this.P);this.b-=4},function(){this.j=J(this,this.R);this.b-=4},function(){this.j=J(this,this.S);this.b-=4},function(){this.j=J(this,this.V);this.b-=4},function(){this.j=J(this,this.W(I(this)));this.b-=7},function(){this.j=J(this,this.j);
this.b-=4},function(){this.j=od(this,this.N);this.b-=4},function(){this.j=od(this,this.O);this.b-=4},function(){this.j=od(this,this.P);this.b-=4},function(){this.j=od(this,this.R);this.b-=4},function(){this.j=od(this,this.S);this.b-=4},function(){this.j=od(this,this.V);this.b-=4},function(){this.j=od(this,this.W(I(this)));this.b-=7},function(){this.j=od(this,this.j);this.b-=4},function(){this.j=kd(this,this.N);this.b-=4},function(){this.j=kd(this,this.O);this.b-=4},function(){this.j=kd(this,this.P);
this.b-=4},function(){this.j=kd(this,this.R);this.b-=4},function(){this.j=kd(this,this.S);this.b-=4},function(){this.j=kd(this,this.V);this.b-=4},function(){this.j=kd(this,this.W(I(this)));this.b-=7},function(){this.j=kd(this,this.j);this.b-=4},function(){this.j=pd(this,this.N);this.b-=4},function(){this.j=pd(this,this.O);this.b-=4},function(){this.j=pd(this,this.P);this.b-=4},function(){this.j=pd(this,this.R);this.b-=4},function(){this.j=pd(this,this.S);this.b-=4},function(){this.j=pd(this,this.V);
this.b-=4},function(){this.j=pd(this,this.W(I(this)));this.b-=7},function(){this.j=pd(this,this.j);this.b-=4},function(){this.j=nd(this,this.N);this.b-=4},function(){this.j=nd(this,this.O);this.b-=4},function(){this.j=nd(this,this.P);this.b-=4},function(){this.j=nd(this,this.R);this.b-=4},function(){this.j=nd(this,this.S);this.b-=4},function(){this.j=nd(this,this.V);this.b-=4},function(){this.j=nd(this,this.W(I(this)));this.b-=7},function(){this.j=nd(this,this.j);this.b-=4},function(){J(this,this.N);
this.b-=4},function(){J(this,this.O);this.b-=4},function(){J(this,this.P);this.b-=4},function(){J(this,this.R);this.b-=4},function(){J(this,this.S);this.b-=4},function(){J(this,this.V);this.b-=4},function(){J(this,this.W(I(this)));this.b-=7},function(){J(this,this.j);this.b-=4},function(){Qc(this)||(F(this,N(this)),this.b-=6);this.b-=5},function(){Jc(this,N(this));this.b-=10},function(){var a=M(this);Qc(this)||F(this,a);this.b-=10},td,function(){var a=M(this);Qc(this)||(Q(this,this.L),F(this,a),this.b-=
6);this.b-=11},function(){Q(this,Ic(this));this.b-=11},function(){this.j=Sc(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,0);this.b-=11},function(){Qc(this)&&(F(this,N(this)),this.b-=6);this.b-=5},ud,function(){var a=M(this);Qc(this)&&F(this,a);this.b-=10},td,function(){var a=M(this);Qc(this)&&(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},vd,function(){this.j=Tc(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,8);this.b-=11},function(){Nc(this)||(F(this,N(this)),this.b-=6);
this.b-=5},function(){Lc(this,N(this));this.b-=10},function(){var a=M(this);Nc(this)||F(this,a);this.b-=10},function(){var a=L(this);Jb(this.B,a,this.j,this.L+-2&65535);this.b-=10},function(){var a=M(this);Nc(this)||(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},function(){Q(this,Kc(this));this.b-=11},function(){this.j=J(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,16);this.b-=11},function(){Nc(this)&&(F(this,N(this)),this.b-=6);this.b-=5},ud,function(){var a=M(this);Nc(this)&&F(this,
a);this.b-=10},function(){var a=L(this);this.j=yb(this.B,a,this.L+-2&65535)&255;this.b-=10},function(){var a=M(this);Nc(this)&&(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},vd,function(){this.j=od(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,24);this.b-=11},function(){Oc(this)||(F(this,N(this)),this.b-=6);this.b-=5},function(){Mc(this,N(this));this.b-=10},function(){var a=M(this);Oc(this)||F(this,a);this.b-=10},function(){var a=N(this);Q(this,I(this));Mc(this,a);this.b-=18},function(){var a=
M(this);Oc(this)||(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},function(){Q(this,I(this));this.b-=11},function(){this.j=kd(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,32);this.b-=11},function(){Oc(this)&&(F(this,N(this)),this.b-=6);this.b-=5},function(){F(this,I(this));this.b-=5},function(){var a=M(this);Oc(this)&&F(this,a);this.b-=10},function(){var a=I(this);Mc(this,Kc(this));Lc(this,a);this.b-=5},function(){var a=M(this);Oc(this)&&(Q(this,this.L),F(this,a),this.b-=6);this.b-=
11},vd,function(){this.j=pd(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,40);this.b-=11},function(){Rc(this)||(F(this,N(this)),this.b-=6);this.b-=5},function(){var a=N(this);Ec(this,a);this.j=a>>8;this.b-=10},function(){var a=M(this);Rc(this)||F(this,a);this.b-=10},function(){this.qa&=-513;this.b-=4},function(){var a=M(this);Rc(this)||(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},function(){Q(this,Gc(this)&255|this.j<<8);this.b-=11},function(){this.j=nd(this,L(this));this.b-=7},function(){Q(this,
this.L);F(this,48);this.b-=11},function(){Rc(this)&&(F(this,N(this)),this.b-=6);this.b-=5},function(){this.ca=I(this)&65535;this.b-=5},function(){var a=M(this);Rc(this)&&F(this,a);this.b-=10},function(){this.qa|=512;this.b-=4},function(){var a=M(this);Rc(this)&&(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},vd,function(){J(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,56);this.b-=11}];
function S(a){w.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!wd[b]&&t("Unrecognized ChipSet model: "+b);this.Ua=wd[b]||xd;a.sound&&(this.X=null,window&&(this.X=window.AudioContext||window.webkitAudioContext),this.X&&new this.X);C(this)}Wa(S);var xd=1978.1,wd={SI1978:xd};m=S.prototype;m.oa=function(){return!1};
m.Ha=function(a,b,c,d){this.B=b;this.b=c;this.F=d;this.w=a;if(this.Ua==xd){var e;a=yd;void 0===e&&(e=0);for(var f in a){c=b;d=+f+e;var h=a[f].bind(this);if(void 0!==h)for(var g=+f+e;g<=d;g++)void 0!==c.w[g]?t("Input port "+r(g)+" already registered"):c.w[g]=[h,!1]}var k;e=zd;void 0===k&&(k=0);for(var l in e)if(f=b,a=+l+k,c=e[l].bind(this),void 0!==c)for(d=+l+k;d<=a;d++)void 0!==f.u[d]?t("Output port "+r(d)+" already registered"):f.u[d]=[c,!1]}};
m.Ba=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.Aa=function(a){return a?this.save():!0};m.reset=function(){this.G=this.H=this.D=this.u=this.M=this.K=this.J=0};m.save=function(){var a=new Hc(this);this.Ua==xd&&H(a,0,[this.J,this.K,this.M,this.u,this.D,this.G,this.H]);return a.data()};m.restore=function(a){a=a[0];this.Ua==xd&&(this.J=a[0],this.K=a[1],this.M=a[2],this.u=a[3],this.D=a[4],this.G=a[5],this.H=a[6]);return!0};m.start=function(){};m.stop=function(){};
m.cc=function(a,b){var c=this.J;db(this,a,null,b,"STATUS0",c);return c};m.dc=function(a,b){var c=this.K;db(this,a,null,b,"STATUS1",c);return c};m.ec=function(a,b){var c=this.M;db(this,a,null,b,"STATUS2",c);return c};m.bc=function(a,b){var c=this.u>>8-this.D&255;db(this,a,null,b,"SHIFT.RESULT",c);return c};m.ic=function(a,b,c){db(this,a,b,c,"SHIFT.COUNT",null);this.D=b};m.kc=function(a,b,c){db(this,a,b,c,"SOUND1",null);this.G=b};
m.jc=function(a,b,c){db(this,a,b,c,"SHIFT.DATA",null);this.u=b<<8|this.u>>8};m.lc=function(a,b,c){db(this,a,b,c,"SOUND2",null);this.H=b};m.mc=function(a,b,c){db(this,a,b,c,"WATCHDOG",null)};var yd={0:S.prototype.cc,1:S.prototype.dc,2:S.prototype.ec,3:S.prototype.bc},zd={2:S.prototype.ic,3:S.prototype.kc,4:S.prototype.jc,5:S.prototype.lc,6:S.prototype.mc};Ja(function(){for(var a=A(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new S(d);cb(d,c)}});
function Ad(a){w.call(this,"ROM",a,Ad);this.w=null;this.H=a.addr;this.u=a.size;this.J=a.writable;this.D=a.alias;this.G=a.file;this.K=ba(this.G);if(this.G){a=this.G;var b=ca(this.K);"json"!=b&&"hex"!=b&&(a=oa()+"/api/v1/dump?file="+this.G+"&format=bytes&decimal=true");var c=this;na(a,null,!0,function(a,b,f){Bd(c,a,b,f)})}}Wa(Ad);var Cd=[0,5];Ad.prototype.Ha=function(a,b,c,d){this.B=b;this.b=c;this.F=d;Dd(this)};
Ad.prototype.Ba=function(){if(this.Da){if(this.F){var a=this.F,b=this.id,c=this.H,d=this.u,e=this.Da,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var p=f,k=[k>>>0,h],n=ia(p,k,a.Fb);0>n&&p.splice(-(n+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.J.push({nc:b,C:c,gc:d,Da:e,Db:f})}delete this.Da}return!0};Ad.prototype.Aa=function(){return!0};
function Bd(a,b,c,d){if(d)a.pa("Unable to load system ROM (error "+d+": "+b+")");else{Ya(a.Hb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.w=f;else if(h)for(a.w=Array(4*h.length),d=c=0;c<h.length;c++)a.w[d++]=h[c]&255,a.w[d++]=h[c]>>8&255,a.w[d++]=h[c]>>16&255,a.w[d++]=h[c]>>24&255;else a.w=e;a.Da=e.symbols;if(!a.w.length){t("Empty ROM: "+b);return}if(1==a.w.length){t(a.w[0]);return}}catch(g){a.pa("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.w=Array(b.length),e=0;e<b.length;e++)a.w[e]=aa(b[e],16);Dd(a)}}
function Dd(a){if(!jb(a))if(!a.G)C(a);else if(a.w&&a.B){a.u||(a.u=a.w.length);if(a.w.length!=a.u)kb(a,"ROM size (0x"+q(a.w.length)+") does not match specified size ("+("0x"+q(a.u))+")");else if(Ed(a,a.H)){var b=[];"number"==typeof a.D?b.push(a.D):null!=a.D&&a.D.length&&(b=a.D);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.B,h=d.u,g=[],k=d.H>>>f.ea;0<h&&k<f.U.length;)g.push(f.U[k++]),h-=f.ua;f=d.B;d=d.u;h=0;for(e>>>=f.ea;0<d&&e<f.U.length;){k=g[h++];if(!k)break;f.U[e++]=k;d-=f.ua}}delete a.w}C(a)}}
function Ed(a,b){if(sb(a.B,b,a.u,a.J?1:Qb)){var c;for(c=0;c<a.w.length;c++)wb(a.B,b+c,a.w[c]);if(a.J&&256==b){for(c=0;c<Cd.length;c++)wb(a.B,Cd[c],118);Dc(a.b,function(a){return function(b){if(0<=Cd.indexOf(b)){var c=!1,h=a.b,g=a.F;if(5==b)switch(c=!0,h.O){case 2:Fd(a,String.fromCharCode(h.R));break;case 9:for(var k=Kc(h),l="",p=255;p--;){var n=a.b.W(k++);if(36==n)break;l+=String.fromCharCode(n)}Fd(a,l);break;default:c=!1}c?ud.call(h):g&&(a.g("\nCP/M vector "+r(b)),F(h,b),g.da());b=!0}else b=!1;return b}}(a));
Fc(a.b,b)}return!0}return!1}function Fd(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}Ja(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Ad(d);cb(d,c)}});function Gd(a){w.call(this,"RAM",a,Gd);this.D=a.addr;this.u=a.size;this.w=!1}Wa(Gd);m=Gd.prototype;m.Ha=function(a,b,c,d){this.B=b;this.b=c;this.F=d;C(this)};m.Ba=function(a,b){b||this.reset();return!0};m.Aa=function(a){return a?this.save():!0};
m.reset=function(){!this.w&&this.u&&sb(this.B,this.D,this.u,1)&&(this.w=!0,this.status(Math.floor(this.u/1024)+"Kb allocated"));this.w||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ja(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Gd(d);cb(d,c)}});function Hd(a){w.call(this,"Keyboard",a,Hd,65536);C(this)}Wa(Hd);
Ja(function(){for(var a=A(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Hd(d);cb(d,c)}});
function Id(a,b,c,d,e){var f=this;this.sa=va("Gecko/");var h=["","moz","webkit","ms"];w.call(this,"Video",a,Id,262144);this.Y=a.screenWidth;this.M=a.screenHeight;this.ba=a.bufferAddr;this.J=a.bufferCols;this.K=a.bufferRows;this.la=a.bufferBits||1;this.pb=a.bufferLeft||0;this.na=a.bufferRotate;this.Zb=a.interruptRate;this.Ea=a.refreshRate||60;this.G=b;this.H=c;this.wa=d||b||null;b=a.smoothing;(c=Ra.smoothing)&&(b="true"==c?!0:!1);if(null!=b)for(c=0;c<h.length;c++)d=(d=h[c])?d+"ImageSmoothingEnabled":
"imageSmoothingEnabled",this.H[d]=b;this.Fa=a.screenRotate;90==this.Fa&&(this.H.translate(0,this.M),this.H.rotate(-this.Fa*Math.PI/180),this.H.scale(this.M/this.Y,this.Y/this.M));this.Ia=[[0,0,0,255],[255,255,255,255]];a=this.J;b=this.K;this.na&&(a=this.K,b=this.J);this.ka=this.H.createImageData(a,b);this.D=document.createElement("canvas");this.D.width=a;this.D.height=b;this.ra=this.D.getContext("2d");if(this.u=e)if(this.u.Pa=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,
this.u.Pa){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){Jd(f,document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement?!0:!1)},!1);break}for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){Jd(f,null)},!1);break}}}Wa(Id);
Id.prototype.Ha=function(a,b,c,d){this.w=a;this.B=b;this.b=c;this.F=d;this.aa=(this.J*this.la>>3)*this.K;sb(this.B,this.ba,this.aa,3)&&(this.xa=this.aa>>1,this.Ca=16/this.la|0,this.ga=!1,void 0===this.X||this.X.length!=this.xa)&&(this.X=Array(this.xa));C(this)};Id.prototype.oa=function(a,b,c){var d=this;switch(b){case "fullScreen":return this.T[b]=c,this.u&&this.u.Pa?c.onclick=function(){d.Pa()}:c.parentNode.removeChild(c),!0}return!1};
Id.prototype.Pa=function(){var a=!1;if(this.u){if(this.u.Pa){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.Y/this.M;b>c&&(a=Math.round(c/b*100)+"%")}this.sa?(this.G.style.width=a,this.G.style.width=a,this.G.style.display="block",this.G.style.margin="auto"):(this.u.style.width=a,this.u.style.height="auto");this.u.style.backgroundColor="black";this.u.Pa();a=!0}this.wa&&this.wa.focus()}return a};
function Jd(a,b){!b&&a.u&&(a.sa?a.G.style.width=a.G.style.height="":a.u.style.width=a.u.style.height="");fb(a,"notifyFullScreen("+b+")",!0)}
Ja(function(){for(var a=A(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=y(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=pa().indexOf("MSIE")&&(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.onresize());var f=+(d.aspect||Ra.aspect);f&&.3<=f&&3.33>=f&&(Ha("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");va("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);e=e.getContext("2d");d=new Hd(d,0,e);cb(d,c)}});
function Id(a){w.call(this,"Debugger",a,Id);this.aa=Jd;this.ka=this.Na=this.M=0;this.Y=T();this.Gb=T();this.G=-1;this.D=[];this.na=!1;this.ma=T();this.J=[];this.ra={};this.u=this.ba=this.H=[];Kd(this);this.Ba=0;Ld(this);this.bb=[];Md(this,a.messages);this.tb=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return qc(b,a)}):void 0===global.$&&(global.$=function(a){return qc(b,a)})}Wa(Id);
var Nd={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},Jd=8080,Od="NONE ACI ADC ADD ADI ANA ANI CALL CC CM CNC CNZ CP CPE CPO CZ CMA CMC CMP CPI DAA DAD DCR DCX DI EI HLT IN INR INX JMP JC JM JNC JNZ JP JPE JPO JZ LDA LDAX LHLD LXI MOV MVI NOP ORA ORI OUT PCHL POP PUSH RAL RAR RET RC RM RNC RNZ RP RPE RPO RZ RLC RRC RST SBB SBI SHLD SPHL STA STAX STC SUB SUI XCHG XRA XRI XTHL".split(" "),
Pd="NONE ADC ADC ADD ADD AND AND CALL CALLC CALLS CALLNC CALLNZ CALLNS CALLP CALLNP CALLZ NOT CMC CMP CMP DAA ADD DEC DEC CLI STI HLT IN INC INC JMP JC JS JNC JNZ JNS JP JNP JZ MOV MOV MOV MOV MOV MOV NOP OR OR OUT JMP POP PUSH RCL RCR RET RETC RETS RETNC RETNZ RETNS RETP RETNP RETZ ROL ROR RST SBB SBB MOV MOV MOV MOV STC SUB SUB XCHG XOR XOR XCHG".split(" "),Qd="B C D E H L M A BC DE HL SP PC PSW".split(" "),Rd=[[45],[42,2067,32],[71,2131,18193],[29,2067],[28,17],[22,17],[44,17,32],[63],[45,32768],
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Ra.aspect);f&&.3<=f&&3.33>=f&&(Ha("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");va("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new Id(d,e,h,f,c);cb(d,c)}});
function Kd(a){w.call(this,"Debugger",a,Kd);this.style=Ld;this.ga=this.Ca=this.M=0;this.Y=T();this.Gb=T();this.G=-1;this.D=[];this.la=!1;this.ka=T();this.J=[];this.na={};this.u=this.aa=this.H=[];Md(this);this.wa=0;Nd(this);this.Fa=[];Od(this,a.messages);this.Ia=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return rc(b,a)}):void 0===global.$&&(global.$=function(a){return rc(b,a)})}Wa(Kd);
var Pd={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},Ld=8080,Qd="NONE ACI ADC ADD ADI ANA ANI CALL CC CM CNC CNZ CP CPE CPO CZ CMA CMC CMP CPI DAA DAD DCR DCX DI EI HLT IN INR INX JMP JC JM JNC JNZ JP JPE JPO JZ LDA LDAX LHLD LXI MOV MVI NOP ORA ORI OUT PCHL POP PUSH RAL RAR RET RC RM RNC RNZ RP RPE RPO RZ RLC RRC RST SBB SBI SHLD SPHL STA STAX STC SUB SUI XCHG XRA XRI XTHL".split(" "),
Rd="NONE ADC ADC ADD ADD AND AND CALL CALLC CALLS CALLNC CALLNZ CALLNS CALLP CALLNP CALLZ NOT CMC CMP CMP DAA ADD DEC DEC CLI STI HLT IN INC INC JMP JC JS JNC JNZ JNS JP JNP JZ MOV MOV MOV MOV MOV MOV NOP OR OR OUT JMP POP PUSH RCL RCR RET RETC RETS RETNC RETNZ RETNS RETP RETNP RETZ ROL ROR RST SBB SBB MOV MOV MOV MOV STC SUB SUB XCHG XOR XOR XCHG".split(" "),Sd="B C D E H L M A BC DE HL SP PC PSW".split(" "),Td=[[45],[42,2067,32],[71,2131,18193],[29,2067],[28,17],[22,17],[44,17,32],[63],[45,32768],
[21,18963,2067],[40,18193,2131],[23,2067],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2323,32],[71,2387,18193],[29,2323],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,18963,2323],[40,18193,2387],[23,2323],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2579,32],[68,115,18963],[29,2579],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,18963,2579],[41,18963,115],[23,2579],[28,1297],[22,1297],[44,1297,32],[16,18193],[45,32768],[42,2835,32],[70,115,18193],[29,2835],[28,1617],[22,1617],
[44,1617,32],[72],[45,32768],[21,18963,2835],[39,18193,115],[23,2835],[28,1809],[22,1809],[44,1809,32],[17],[43,17,17],[43,17,273],[43,17,529],[43,17,785],[43,17,1041],[43,17,1297],[43,17,1617],[43,17,1809],[43,273,17],[43,273,273],[43,273,529],[43,273,785],[43,273,1041],[43,273,1297],[43,273,1617],[43,273,1809],[43,529,17],[43,529,273],[43,529,529],[43,529,785],[43,529,1041],[43,529,1297],[43,529,1617],[43,529,1809],[43,785,17],[43,785,273],[43,785,529],[43,785,785],[43,785,1041],[43,785,1297],[43,
785,1617],[43,785,1809],[43,1041,17],[43,1041,273],[43,1041,529],[43,1041,785],[43,1041,1041],[43,1041,1297],[43,1041,1617],[43,1041,1809],[43,1297,17],[43,1297,273],[43,1297,529],[43,1297,785],[43,1297,1041],[43,1297,1297],[43,1297,1617],[43,1297,1809],[43,1617,17],[43,1617,273],[43,1617,529],[43,1617,785],[43,1617,1041],[43,1617,1297],[26],[43,1617,1809],[43,1809,17],[43,1809,273],[43,1809,529],[43,1809,785],[43,1809,1041],[43,1809,1297],[43,1809,1617],[43,1809,1809],[3,18193,17],[3,18193,273],
[3,18193,529],[3,18193,785],[3,18193,1041],[3,18193,1297],[3,18193,1617],[3,18193,1809],[2,18193,17],[2,18193,273],[2,18193,529],[2,18193,785],[2,18193,1041],[2,18193,1297],[2,18193,1617],[2,18193,1809],[73,18193,17],[73,18193,273],[73,18193,529],[73,18193,785],[73,18193,1041],[73,18193,1297],[73,18193,1617],[73,18193,1809],[66,18193,17],[66,18193,273],[66,18193,529],[66,18193,785],[66,18193,1041],[66,18193,1297],[66,18193,1617],[66,18193,1809],[5,18193,17],[5,18193,273],[5,18193,529],[5,18193,785],
[5,18193,1041],[5,18193,1297],[5,18193,1617],[5,18193,1809],[76,18193,17],[76,18193,273],[76,18193,529],[76,18193,785],[76,18193,1041],[76,18193,1297],[76,18193,1617],[76,18193,1809],[46,18193,17],[46,18193,273],[46,18193,529],[46,18193,785],[46,18193,1041],[46,18193,1297],[46,18193,1617],[46,18193,1809],[18,18193,17],[18,18193,273],[18,18193,529],[18,18193,785],[18,18193,1041],[18,18193,1297],[18,18193,1617],[18,18193,1809],[58],[50,2067],[34,51],[30,51],[11,51],[51,2067],[4,18193,33],[65,128],[62],
[54],[38,51],[30,32819],[15,51],[7,51],[1,18193,33],[65,128],[57],[50,2323],[33,51],[48,33,18193],[10,51],[51,2323],[74,18193,33],[65,128],[55],[54,32768],[31,51],[27,18193,33],[8,51],[7,32819],[67,18193,33],[65,128],[61],[50,2579],[37,51],[78,19283,18963],[14,51],[51,2579],[6,18193,33],[65,128],[60],[49,2579],[36,51],[75,18963,18707],[13,51],[7,32819],[77,18193,33],[65,128],[59],[50,3347],[35,51],[24],[12,51],[51,3347],[47,18193,33],[65,128],[56],[69,19219,18963],[32,51],[25],[9,51],[7,32819],[19,
18193,33],[65,128]],Sd={cpu:1,bus:64,mem:128,port:256,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:536870912,warn:1073741824,halt:-2147483648};m=Id.prototype;
m.Fa=function(a,b,c,d){this.B=b;this.b=c;this.w=a;(a=cc(a,"messages"))&&Md(this,a);this.Db=Rd;Td(this,function(a){a:{var b=d.B.T,c=a[0],g=a=0,k=b.length;if(c){a=W(X(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.B.ea;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[g];p.type==c?l++||d.g("..."):(c=p.type,l=Ub[c],p&&d.g(q(p.id)+" %"+q(g<<d.B.ea)+" %%"+q(p.C)+" "+r(p.mb)+" "+r(p.size)+
" "+l),c!=Ob&&(c=-1),l=0);a+=d.B.ua;g++}}});C(this)};
m.qa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.Aa=this.V[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",qc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.G<d.D.length-1&&(b=d.D[++d.G]):40==a.keyCode&&(0<d.G?b=d.D[--d.G]:(b="",d.G=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.V[b]=c,Da(c,function(){if(d.Aa){var a=d.Aa.value;d.Aa.value=
"";qc(d,a,!0);return!0}return!1}),!0;case "step":return this.V[b]=c,Da(c,function(a){var b=!1;hb(d,!0)||(gb(d,!0),b=d.$a(a?1:0),gb(d,!1));return b}),!0}return!1};m.lb=function(){this.Aa&&this.Aa.focus()};function W(a){a=a&&a.C;null==a&&(a=-1);return a}m.W=function(a,b){var c=255,d=W(a);-1!==d&&(c=tb(this.B,d),b&&Ud(a,b));return c};m.Ea=function(a,b){var c=65535,d=W(a);-1!==d&&(c=ub(this.B,d),b&&Ud(a,b));return c};m.ga=function(a,b,c){var d=W(a);-1!==d&&(vb(this.B,d,b),c&&Ud(a,c),rc(this.b,!0))};
m.sb=function(a,b,c){var d=W(a);if(-1!==d){var e=this.B,f=d&e.B,h=(d&e.D)>>>e.ea;f!=e.B?e.T[h].Bb(f,b&65535,d):(e.T[h++].nb(f,b&255,d),e.T[h&e.K].nb(0,b>>8&255,d+1));c&&Ud(a,c);rc(this.b,!0)}};function T(a){return{C:a,xa:!1}}function Vd(a){return[a.C,a.xa]}function Wd(a){return{C:a[0],xa:a[1]}}
function X(a,b,c){var d;c=(c?a.Y:a.Gb).C;if(void 0!==b){d=b=Xd(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.J.length;c++){var f=a.J[c].Ca[d];if(void 0!==f){d=f.o;void 0!==d&&(e=T(d));break}}if(d=e)return d;c=Yd(a,b,void 0)}null!=c&&(d=T(c));return d}function Zd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Wb=$d(a,b.Ub=c[2]))}function Ud(a,b){null!=a.C&&(a.C+=b||1)}function Z(a){return q(a,4)}
function ae(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.W(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Md(a,b){a.F=a;a.ha=a.Xb=1073741824;a.Ga=null;var c=$d(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Sd)0<=ma(c,d)&&(a.ha|=Sd[d],a.g(d+" messages enabled"))}function Td(a,b){for(var c in Sd)if(64==Sd[c]){a.bb[c]=b;break}}
function be(a,b){var c;a=a.toUpperCase();null==b?c=ma(Qd,a):(c=ma(Qd,a.substr(b,3)),0>c&&(c=ma(Qd,a.substr(b,2))));return c}function ce(a,b){var c=0,d=de(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 6:c=2;break;case 8:case 9:case 10:case 11:case 12:case 13:c=4}return c?q(d,c):"??"}
function de(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.N;break;case 1:c=d.O;break;case 8:c=Hc(d);break;case 2:c=d.P;break;case 3:c=d.R;break;case 9:c=Jc(d);break;case 4:c=d.S;break;case 5:c=d.U;break;case 10:c=I(d);break;case 6:c=d.W(I(d));break;case 11:c=d.ca;break;case 12:c=d.L;break;case 13:c=d.j<<8|Fc(d)&255}}return c}
function ee(a,b){b=Xd(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=be(b,c+1),0<=e&&(b=b.substr(0,c)+ce(a,e)+b.substr(c+1+Qd[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=aa(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=X(a,e))?(d=e+' "'+ae(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=X(a,e))?(Ud(d),d=e+' "'+
ae(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+Z(T(this.b.L).C));if(!this.Ga||a!=this.Ga)if(this.Ga=a,this.ha&-2147483648&&(this.da(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.Xa=0;c.D-=c.b;c.b=0;rc(c)}};function eb(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.ha&g)!=g||a.message(b.cb+"."+(null!=d?"outPort":"inPort")+"("+r(c)+","+(f?f:"unknown")+(null!=d?",0x"+q(d,2):"")+")"+(null!=h?": 0x"+q(h,2):"")+(null!=e?" at "+Z(e):""))}
function Ld(a){var b;if(pd(a)){if(!a.X||!a.X.length){a.X=Array(1E3);for(b=0;b<a.X.length;b++)a.X[b]=T();a.sa=0;a.g("instruction history buffer allocated")}if(!a.K||!a.K.length)for(a.K=Array(256),b=0;b<a.K.length;b++)a.K[b]=[b,0]}else a.X&&a.X.length&&a.g("instruction history buffer freed"),a.sa=0,a.X=[],a.K=[]}m.Ma=function(a){if(!fe(this))return!1;this.b.Ma(a);return!0};
m.$a=function(a,b,c){if(!fe(this))return!1;this.M=0;a||pd(this)&&qd(this,this.b.L,0);try{var d=this.b.$a(a);0<d&&(this.M+=d,wc(this.b,d,!0),tc(this.b,d),this.ka++)}catch(e){"number"!=typeof e&&(this.M=0,jb(this.b,e.stack||e.message))}!1!==c&&rc(this.b);this.va(b||!1);return 0<this.M};m.da=function(a){this.b&&this.b.da(a)};m.va=function(a){void 0===a&&(a=!0);this.Y=T(this.b.L);a&&1!=this.fa?ge(this):he(this)};
function fe(a){var b;if(b=a.b&&ib(a.b))b=a.b,b.A.ia?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!hb(a.b)?(a=a.b,a.A.Qa?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.za=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.ya=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Ld(this);this.ka=this.Na=0;this.Ga=null;this.M=0;this.Y=T(this.b.L);this.A.la=!1;ie(this);a||this.va()};
m.save=function(){var a=new Gc(this);H(a,0,Vd(this.Y));H(a,1,Vd(this.ma));H(a,2,[this.D,this.na,this.ha]);H(a,3,this.J);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.Y=Wd(a[b++]),this.ma=Wd(a[b++]),this.D=a[b][0],"string"==typeof this.D&&(this.D=[this.D]),this.na=a[b][1],this.ha|=a[b][2]);a[3]&&(this.J=a[3]);return!0};m.start=function(a,b){this.fa||this.g("running");this.A.la=!0;this.$b=a;this.ec=b};
m.stop=function(a,b){if(this.A.la){this.A.la=!1;this.M=b-this.ec;if(!this.fa){var c="stopped";if(this.M){var d=a-this.$b,e=0<d?Math.round(1E3*this.M/d):0,c=c+" (";pd(this)&&(c+=this.ka+" opcodes, ",this.Na-=this.ka,this.ka=0);c+=this.M+" cycles, "+d+" ms, "+e+" hz)"}else fb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.va(!0);this.lb();ie(this,this.b.L)}};function pd(a){return 1<a.u.length||!!a.Ba}
function qd(a,b,c){var d=a.b;if(0<c&&(a.Ba&&!--a.Ba||Yb(a,b,1,a.u)))return!0;0<=c&&a.K.length&&(a.ka++,b=tb(a.B,b),null!=b&&(a.K[b][1]++,b=a.X[a.sa],b.C=d.L,b.xa=!1,++a.sa==a.X.length&&(a.sa=0)));return!1}function Gb(a,b,c){a.g("break on input from port "+r(b)+": "+q(c));a.da(!0)}function Jb(a,b,c){a.g("break on output to port "+r(b)+": "+q(c));a.da(!0)}
function Kd(a){var b,c;a.u=["bp"];if(void 0!==a.ba)for(b=1;b<a.ba.length;b++){c=a.ba[b];var d=a.B;Zb(d.T[W(c)>>>d.ea],!1)}a.ba=["br"];if(void 0!==a.H)for(b=1;b<a.H.length;b++)c=a.H[b],d=a.B,Zb(d.T[W(c)>>>d.ea],!0);a.H=["bw"];a.Mb=0}m.Ha=function(a,b,c){var d=!0;c||je(this,a,b,!1,!0);if(a!=this.u){var e=W(b);if(-1===e)this.g("invalid address: "+Z(b.C)),d=!1;else{var f=this.B;f.T[e>>>f.ea].Ha(e&f.B,a==this.H)}}d&&(a.push(b),c?b.xa=!0:(ke(this,a,a.length-1,"set"),Ld(this)));return d};
function je(a,b,c,d,e){var f=!1;c=W(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==W(g)&&(!d||g.xa)){f=!0;g.xa||e||ke(a,b,h,"cleared");b.splice(h,1);b!=a.u&&(d=a.B,Zb(d.T[c>>>d.ea],b==a.H));g.xa||Ld(a);break}}return f}function le(a,b){for(var c=1;c<b.length;c++)ke(a,b,c);return b.length-1}function ke(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.C)+(d?" "+d:c.Ub?' "'+c.Ub+'"':""))}
function ie(a,b){if(void 0!==b)Yb(a,b,1,a.u,!0),a.fa=0;else for(var c=1;c<a.u.length;c++){var d=a.u[c];if(d.xa){if(!je(a,a.u,d,!0))break;c=0}}}
function Yb(a,b,c,d,e){var f=!1;if(!a.Mb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.xa)for(var k=W(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.xa&&(je(a,d,g,!0),e=!0);if(p=g.Wb){for(var f=!1,n=0;n<p.length;n++)if(!me(a,p[n],!0)){if(p[n].indexOf("if")){f=!0;break}for(var u=n+1;u<p.length&&p[u].indexOf("else");u++)n++;if(u==p.length){f=!0;break}}a.b.A.la||(f=!0)}if(f){e||ke(a,d,h,"hit");break}}}a.Mb--;return f}
function ne(a,b,c,d){for(var e=T(b.C),f=a.W(b,1),h=a.Db[f],g="",k=(8086!=a.aa?Od:Pd)[h[0]],l=h.length-1,p=0,n,u=1;u<=l;u++){var z="";n=h[u];if(void 0!==n&&!(n&16384&&a.aa==Jd)){var v=n&240;if(v){var O=n&15;O?p=O:n|=p;n&61440||(n|=1==u?8192:4096);if(v&32)a:{var z=a,v=n,O=b,B=" ";switch(v&15){case 1:B=q(z.W(O,1),2);break;case 2:B=q(z.W(O,1)<<24>>24,4);break;case 3:B=q(z.Ea(O,2),4);break;default:z="imm("+r(v)+")";break a}8086==z.aa&&v&64?B="["+B+"]":v&16||(B=(z.aa==Jd?"$":"0x")+B);z=B}else v&16?(z=(n&
3840)>>8,v=Qd[z],8086==a.aa&&n&64&&(6==z&&(v="HL"),v="["+v+"]"),z=v):v&128&&(z=(f>>3&7).toString());if(!z||!z.length){g="INVALID";break}0<g.length&&(g+=",");g+=z||"???"}}}f="";h=Z(e.C)+" ";if(-1!==e.C&&-1!==b.C){do if(f+=q(a.W(e,1),2),null==e.C)break;while(e.C!=b.C)}h+=ga(f,10);h=h+(n&32768?"*":" ")+ga(k,7);g&&(h+=" "+g);c&&(h=ga(h,40)+";"+c,h=a.b.A.Pa?h+("cycles="+uc(a.b).toString()+" cs="+q(a.b.i.eb)):h+(null!=d?"="+d.toString():""));return h}
function Me(a,b){var c;switch(b){case "I":c=a.b.pa&512;break;case "S":c=Qc(a.b);break;case "Z":c=Pc(a.b);break;case "A":c=Oc(a.b);break;case "P":c=Nc(a.b);break;case "C":c=Mc(a.b);break;default:c=0}return b+(c?"1":"0")+" "}function Ne(a,b){return Qd[b]+"="+ce(a,b)+" "}function Oe(a){return Ne(a,7)+Ne(a,8)+Ne(a,9)+Ne(a,10)+Ne(a,11)+Me(a,"I")+Me(a,"S")+Me(a,"Z")+Me(a,"A")+Me(a,"P")+Me(a,"C")}
var Pe={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function Qe(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
18193,33],[65,128]],Ud={cpu:1,bus:64,mem:128,port:256,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:536870912,warn:1073741824,halt:-2147483648};m=Kd.prototype;
m.Ha=function(a,b,c,d){this.B=b;this.b=c;this.w=a;(a=oc(a,"messages"))&&Od(this,a);this.pb=Td;Vd(this,function(a){a:{var b=d.B.U,c=a[0],g=a=0,k=b.length;if(c){a=W(X(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.B.ea;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[g];p.type==c?l++||d.g("..."):(c=p.type,l=Vb[c],p&&d.g(q(p.id)+" %"+q(g<<d.B.ea)+" %%"+q(p.C)+" "+r(p.nb)+" "+r(p.size)+
" "+l),c!=Pb&&(c=-1),l=0);a+=d.B.ua;g++}}});C(this)};
m.oa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.sa=this.T[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",rc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.G<d.D.length-1&&(b=d.D[++d.G]):40==a.keyCode&&(0<d.G?b=d.D[--d.G]:(b="",d.G=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.T[b]=c,Da(c,function(){if(d.sa){var a=d.sa.value;d.sa.value=
"";rc(d,a,!0);return!0}return!1}),!0;case "step":return this.T[b]=c,Da(c,function(a){var b=!1;ib(d,!0)||(hb(d,!0),b=d.bb(a?1:0),hb(d,!1));return b}),!0}return!1};m.mb=function(){this.sa&&this.sa.focus()};function W(a){a=a&&a.C;null==a&&(a=-1);return a}m.W=function(a,b){var c=255,d=W(a);-1!==d&&(c=ub(this.B,d),b&&Wd(a,b));return c};m.Ga=function(a,b){var c=65535,d=W(a);-1!==d&&(c=vb(this.B,d),b&&Wd(a,b));return c};m.fa=function(a,b,c){var d=W(a);-1!==d&&(wb(this.B,d,b),c&&Wd(a,c),sc(this.b,!0))};
m.ub=function(a,b,c){var d=W(a);if(-1!==d){var e=this.B,f=d&e.B,h=(d&e.D)>>>e.ea;f!=e.B?e.U[h].Cb(f,b&65535,d):(e.U[h++].ob(f,b&255,d),e.U[h&e.K].ob(0,b>>8&255,d+1));c&&Wd(a,c);sc(this.b,!0)}};function T(a){return{C:a,za:!1}}function Xd(a){return[a.C,a.za]}function Yd(a){return{C:a[0],za:a[1]}}
function X(a,b,c){var d;c=(c?a.Y:a.Gb).C;if(void 0!==b){d=b=Zd(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.J.length;c++){var f=a.J[c].Da[d];if(void 0!==f){d=f.o;void 0!==d&&(e=T(d));break}}if(d=e)return d;c=$d(a,b,void 0)}null!=c&&(d=T(c));return d}function ae(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Wb=be(a,b.Ub=c[2]))}function Wd(a,b){null!=a.C&&(a.C+=b||1)}function Z(a){return q(a,4)}
function ce(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.W(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Od(a,b){a.F=a;a.ha=a.Xb=1073741824;a.xa=null;var c=be(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Ud)0<=ma(c,d)&&(a.ha|=Ud[d],a.g(d+" messages enabled"))}function Vd(a,b){for(var c in Ud)if(64==Ud[c]){a.Fa[c]=b;break}}
function de(a,b){var c;a=a.toUpperCase();null==b?c=ma(Sd,a):(c=ma(Sd,a.substr(b,3)),0>c&&(c=ma(Sd,a.substr(b,2))));return c}function ee(a,b){var c=0,d=fe(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 6:c=2;break;case 8:case 9:case 10:case 11:case 12:case 13:c=4}return c?q(d,c):"??"}
function fe(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.N;break;case 1:c=d.O;break;case 8:c=Ic(d);break;case 2:c=d.P;break;case 3:c=d.R;break;case 9:c=Kc(d);break;case 4:c=d.S;break;case 5:c=d.V;break;case 10:c=I(d);break;case 6:c=d.W(I(d));break;case 11:c=d.ca;break;case 12:c=d.L;break;case 13:c=d.j<<8|Gc(d)&255}}return c}
function ge(a,b){b=Zd(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=de(b,c+1),0<=e&&(b=b.substr(0,c)+ee(a,e)+b.substr(c+1+Sd[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=aa(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=X(a,e))?(d=e+' "'+ce(a,d)+'"',b=b.replace("$"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("^",c));)e=b.substr(c+1,9),(d=X(a,e))?(Wd(d),d=e+' "'+
ce(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+Z(T(this.b.L).C));if(!this.xa||a!=this.xa)if(this.xa=a,this.ha&-2147483648&&(this.da(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.Za=0;c.D-=c.b;c.b=0;sc(c)}};function eb(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.ha&g)!=g||a.message(b.eb+"."+(null!=d?"outPort":"inPort")+"("+r(c)+","+(f?f:"unknown")+(null!=d?",0x"+q(d,2):"")+")"+(null!=h?": 0x"+q(h,2):"")+(null!=e?" at "+Z(e):""))}
function Nd(a){var b;if(qd(a)){if(!a.X||!a.X.length){a.X=Array(1E3);for(b=0;b<a.X.length;b++)a.X[b]=T();a.ra=0;a.g("instruction history buffer allocated")}if(!a.K||!a.K.length)for(a.K=Array(256),b=0;b<a.K.length;b++)a.K[b]=[b,0]}else a.X&&a.X.length&&a.g("instruction history buffer freed"),a.ra=0,a.X=[],a.K=[]}m.Oa=function(a){if(!he(this))return!1;this.b.Oa(a);return!0};
m.bb=function(a,b,c){if(!he(this))return!1;this.M=0;a||qd(this)&&rd(this,this.b.L,0);try{var d=this.b.bb(a);0<d&&(this.M+=d,xc(this.b,d,!0),uc(this.b,d),this.ga++)}catch(e){"number"!=typeof e&&(this.M=0,kb(this.b,e.stack||e.message))}!1!==c&&sc(this.b);this.va(b||!1);return 0<this.M};m.da=function(a){this.b&&this.b.da(a)};m.va=function(a){void 0===a&&(a=!0);this.Y=T(this.b.L);a&&1!=this.ba?ie(this):je(this)};
function he(a){var b;if(b=a.b&&jb(a.b))b=a.b,b.A.ia?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!ib(a.b)?(a=a.b,a.A.Sa?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.Ba=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.Aa=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Nd(this);this.ga=this.Ca=0;this.xa=null;this.M=0;this.Y=T(this.b.L);this.A.ma=!1;ke(this);a||this.va()};
m.save=function(){var a=new Hc(this);H(a,0,Xd(this.Y));H(a,1,Xd(this.ka));H(a,2,[this.D,this.la,this.ha]);H(a,3,this.J);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.Y=Yd(a[b++]),this.ka=Yd(a[b++]),this.D=a[b][0],"string"==typeof this.D&&(this.D=[this.D]),this.la=a[b][1],this.ha|=a[b][2]);a[3]&&(this.J=a[3]);return!0};m.start=function(a,b){this.ba||this.g("running");this.A.ma=!0;this.$b=a;this.ac=b};
m.stop=function(a,b){if(this.A.ma){this.A.ma=!1;this.M=b-this.ac;if(!this.ba){var c="stopped";if(this.M){var d=a-this.$b,e=0<d?Math.round(1E3*this.M/d):0,c=c+" (";qd(this)&&(c+=this.ga+" opcodes, ",this.Ca-=this.ga,this.ga=0);c+=this.M+" cycles, "+d+" ms, "+e+" hz)"}else gb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.va(!0);this.mb();ke(this,this.b.L)}};function qd(a){return 1<a.u.length||!!a.wa}
function rd(a,b,c){var d=a.b;if(0<c&&(a.wa&&!--a.wa||Zb(a,b,1,a.u)))return!0;0<=c&&a.K.length&&(a.ga++,b=ub(a.B,b),null!=b&&(a.K[b][1]++,b=a.X[a.ra],b.C=d.L,b.za=!1,++a.ra==a.X.length&&(a.ra=0)));return!1}function zb(a,b,c){a.g("break on input from port "+r(b)+": "+q(c));a.da(!0)}function Kb(a,b,c){a.g("break on output to port "+r(b)+": "+q(c));a.da(!0)}
function Md(a){var b,c;a.u=["bp"];if(void 0!==a.aa)for(b=1;b<a.aa.length;b++){c=a.aa[b];var d=a.B;$b(d.U[W(c)>>>d.ea],!1)}a.aa=["br"];if(void 0!==a.H)for(b=1;b<a.H.length;b++)c=a.H[b],d=a.B,$b(d.U[W(c)>>>d.ea],!0);a.H=["bw"];a.Jb=0}m.Ja=function(a,b,c){var d=!0;c||le(this,a,b,!1,!0);if(a!=this.u){var e=W(b);if(-1===e)this.g("invalid address: "+Z(b.C)),d=!1;else{var f=this.B;f.U[e>>>f.ea].Ja(e&f.B,a==this.H)}}d&&(a.push(b),c?b.za=!0:(me(this,a,a.length-1,"set"),Nd(this)));return d};
function le(a,b,c,d,e){var f=!1;c=W(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==W(g)&&(!d||g.za)){f=!0;g.za||e||me(a,b,h,"cleared");b.splice(h,1);b!=a.u&&(d=a.B,$b(d.U[c>>>d.ea],b==a.H));g.za||Nd(a);break}}return f}function ne(a,b){for(var c=1;c<b.length;c++)me(a,b,c);return b.length-1}function me(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.C)+(d?" "+d:c.Ub?' "'+c.Ub+'"':""))}
function ke(a,b){if(void 0!==b)Zb(a,b,1,a.u,!0),a.ba=0;else for(var c=1;c<a.u.length;c++){var d=a.u[c];if(d.za){if(!le(a,a.u,d,!0))break;c=0}}}
function Zb(a,b,c,d,e){var f=!1;if(!a.Jb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.za)for(var k=W(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.za&&(le(a,d,g,!0),e=!0);if(p=g.Wb){for(var f=!1,n=0;n<p.length;n++)if(!oe(a,p[n],!0)){if(p[n].indexOf("if")){f=!0;break}for(var u=n+1;u<p.length&&p[u].indexOf("else");u++)n++;if(u==p.length){f=!0;break}}a.b.A.ma||(f=!0)}if(f){e||me(a,d,h,"hit");break}}}a.Jb--;return f}
function pe(a,b,c,d){for(var e=T(b.C),f=a.W(b,1),h=a.pb[f],g="",k=(8086!=a.style?Qd:Rd)[h[0]],l=h.length-1,p=0,n,u=1;u<=l;u++){var z="";n=h[u];if(void 0!==n&&!(n&16384&&a.style==Ld)){var v=n&240;if(v){var O=n&15;O?p=O:n|=p;n&61440||(n|=1==u?8192:4096);if(v&32)a:{var z=a,v=n,O=b,B=" ";switch(v&15){case 1:B=q(z.W(O,1),2);break;case 2:B=q(z.W(O,1)<<24>>24,4);break;case 3:B=q(z.Ga(O,2),4);break;default:z="imm("+r(v)+")";break a}8086==z.style&&v&64?B="["+B+"]":v&16||(B=(z.style==Ld?"$":"0x")+B);z=B}else v&
16?(z=(n&3840)>>8,v=Sd[z],8086==a.style&&n&64&&(6==z&&(v="HL"),v="["+v+"]"),z=v):v&128&&(z=(f>>3&7).toString());if(!z||!z.length){g="INVALID";break}0<g.length&&(g+=",");g+=z||"???"}}}f="";h=Z(e.C)+" ";if(-1!==e.C&&-1!==b.C){do if(f+=q(a.W(e,1),2),null==e.C)break;while(e.C!=b.C)}h+=ga(f,10);h=h+(n&32768?"*":" ")+ga(k,7);g&&(h+=" "+g);c&&(h=ga(h,40)+";"+c,h=a.b.A.Ra?h+("cycles="+vc(a.b).toString()+" cs="+q(a.b.i.fb)):h+(null!=d?"="+d.toString():""));return h}
function Oe(a,b){var c;switch(b){case "I":c=a.b.qa&512;break;case "S":c=Rc(a.b);break;case "Z":c=Qc(a.b);break;case "A":c=Pc(a.b);break;case "P":c=Oc(a.b);break;case "C":c=Nc(a.b);break;default:c=0}return b+(c?"1":"0")+" "}function Pe(a,b){return Sd[b]+"="+ee(a,b)+" "}function Qe(a){return Pe(a,7)+Pe(a,8)+Pe(a,9)+Pe(a,10)+Pe(a,11)+Oe(a,"I")+Oe(a,"S")+Oe(a,"Z")+Oe(a,"A")+Oe(a,"P")+Oe(a,"C")}
var Re={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function Se(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0}
function Yd(a,b,c){var d;if(b){b=Xd(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var p=l[e++],n=p.length,p=ha(p);if(!p){f=!0;break}p=Re(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}g.push(p);if(e==l.length)break;var p=l[e++],u=p.length;k.length&&Pe[p]<Pe[k[k.length-1]]&&Qe(g,k,1);k.push(p);b=b.substr(n+u)}Qe(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Se(a,null,
d))}return d}function Xd(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Yd(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?q(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=X(a,c[1]),b=b.replace("["+c[1]+"]",d?q(a.Ea(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.ka-a.Na}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
function Re(a,b,c,d){var e;void 0!==b?(e=be(b),0<=e?e=de(a,e):(e=a.ra[b],void 0===e&&(e=aa(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
function Se(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=d&255,l=8,p="";void 0===l?l=32:32<l&&(l=32);if(null==k||isNaN(k))for(;0<l--;)p="?"+p;else for(;0<l--;)p=(k&1?"1":"0")+p,k>>=1;h=p+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function Te(a,b){if(b)return Se(a,b,a.ra[b]);var c=0;for(b in a.ra)Se(a,b,a.ra[b]),c++;return 0<c}Id.prototype.Fb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Ue(a,b,c){var d=[],e=W(b)>>>0;for(b=0;b<a.J.length;b++){var f=a.J[b],h=f.C>>>0,g=f.gc;if(e>=h&&e<h+g){e=ia(f.Cb,[e-h],a.Fb);0<=e?Ve(a,b,e,d):c&&(e=~e,Ve(a,b,e-1,d),Ve(a,b,e,d));break}}return d}function Ve(a,b,c,d){var e={},f=a.J[b].Cb,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.J[b].Ca[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
function We(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.K)if("clear"==b){for(c=0;c<a.K.length;c++)a.K[c]=[c,0];a.g("frequency data cleared");d++}else if(void 0!==b)a.g("unknown frequency command: "+b),d++;else{var e=a.K.slice();e.sort(function(a,b){return b[1]-a[1]});var f=8086!=a.aa?Od:Pd;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.Db[h][0]]+" ").substr(0,5)+" ("+("0x"+q(h,2))+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
function Xe(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Te(a)||a.g("no variables"),!0;if(!c[2])return Te(a,c[1]);if(!c[3])return delete a.ra[c[1]],!0;var d=Yd(a,c[3]);return void 0!==d?(a.ra[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
function Ye(a,b,c){var d=null;if(b=X(a,b,!0)){var e=Ue(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.C-e[1])&&(h=" + "+r(f)),f=e[0]+" ("+Z(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.C)&&(h=" - "+r(f)),f=e[4]+" ("+Z(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
function Ze(a,b){switch(b[1]){case "8080":a.aa=Jd;break;case "8086":a.aa=8086;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.b.i.Ua=c;break;case "start":a.b.i.fb=c;break;case "stop":a.b.i.Wa=c;break;default:a.g("unknown cs option");return}void 0!==c&&pc(a.b);a.g("checksums "+(a.b.A.Pa?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(vc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.Ja.toFixed(2)+"Mhz")+" ("+
a.b.i.La+"x)");return;case "?":a.g("debugger options:");a.g("\t8080\t\tselect 8080-style mnemonics");a.g("\t8086\t\tselect 8086-style mnemonics");a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.g("unknown option: "+b[1]);return}}a.g(a.aa+"-style mnemonics enabled")}
function ge(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.g("missing value for "+b[1]);return}var h=!1,g=Yd(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.j=g&255;break;case "B":d.N=g&255;break;case "BC":d.N=g>>8&255;case "C":d.O=g&255;break;case "D":d.P=
g&255;break;case "DE":d.P=g>>8&255;case "E":d.R=g&255;break;case "H":d.S=g&255;break;case "HL":d.S=g>>8&255;case "L":d.U=g&255;break;case "SP":d.ca=g&65535;break;case "PC":F(d,g);a.Y=T(d.L);break;case "PS":Dc(d,g);break;case "C":d.I=g?d.I|256:d.I&255;break;case "P":g?Nc(d)||(d.Z^=1):Nc(d)&&(d.Z^=1);break;case "A":d.ja=g?~d.Z&16|d.ja&-17:d.Z&16|d.ja&-17;break;case "Z":d.I=g?d.I&-256:d.I|255;break;case "S":g?Qc(d)||(d.Z^=192):Qc(d)&&(d.Z^=192);break;case "I":d.pa=g?d.pa|512:d.pa&-513;break;default:a.g("unknown register: "+
e);return}if(!h){a.g("invalid value: "+f);return}rc(d);a.g("updated registers:")}a.g(Oe(a));c&&(a.Y=T(d.L),he(a,Z(a.Y.C)))}}function $e(a,b){b=ha(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(ee(a,c[2])):Yd(a,b,!0)}function af(a,b,c){var d="t"!=b;c=Re(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ca(c,function(){return gb(a,!0)&&a.$a(e,d,!1)},function(){rc(a.b);gb(a,!1)})}
function he(a,b,c,d){if(b=X(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=X(a,c,!0);if(!d||d.C<b.C)return;e=d.C-b.C;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=hb(a,!1)||a.fa?a.M:null;var h=null!=f?"cycles":null,g=Ue(a,b),k=b.C;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.g(l)}g[3]&&(h=g[3],f=null);f=ne(a,b,h,f);a.g(f);a.Y=b;e-=b.C-k;c++}}}
function $d(a,b,c,d){if(c)if(b){0>a.G&&a.D.length&&(a.G=0);if(0>a.G||b!=a.D[a.G])a.D.splice(0,0,b),a.G=0;a.G--}else a.na?b="end":b=a.D[a.G+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(ha(b.substring(c,f))),c=f+1}}return a}
function me(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.na&&(a.g("ended assemble at "+Z(a.ma.C)),a.Y=a.ma,a.na=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Ga=null;if(ib(a)&&0<b.length){a.na&&(b="a "+Z(a.ma.C)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var p=X(a,f[1],!0);if(p)if(a.ma=
p,void 0===f[2])a.g("begin assemble at "+Z(p.C)),a.na=!0,rc(a.b);else{var n;a.g("not supported yet");n=[];if(n.length){for(var u=0;u<n.length;u++)a.ga(p,n[u],1);a.g(ne(a,a.ma))}}break;case "b":a:{var z=f[0],v=f[1],O=b;if("?"==v)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),
a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var B=z.charAt(1);if("l"==B){var U=0,U=U+le(a,a.u),U=U+le(a,a.ba);(U+=le(a,a.H))||a.g("no breakpoints")}else if("n"==B)a.Ba=Re(a,v),a.g("break after "+a.Ba+" instruction(s)");else if(void 0===v)a.g("missing breakpoint address");else{var E=T();if("*"!=v&&(E=X(a,v,!0),!E))break a;v=r(E.C);"c"==B?null==E.C?(Kd(a),a.g("all breakpoints cleared")):je(a,a.u,E)||je(a,a.ba,E)||
je(a,a.H,E)||a.g("breakpoint missing: "+Z(E.C)):"i"==B?a.g("breakpoint "+(wb(a.B,E.C)?"enabled":"cleared")+": port "+v+" (input)"):"o"==B?a.g("breakpoint "+(Hb(a.B,E.C)?"enabled":"cleared")+": port "+v+" (output)"):null!=E.C&&(Zd(a,E,O),"p"==B?a.Ha(a.u,E):"r"==B?a.Ha(a.ba,E):"w"==B?a.Ha(a.H,E):a.g("unknown breakpoint command: "+B))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var wa,P=f[0],K=f[1],ka=f[2],xa=f[3];if("?"==K){var ya="";for(wa in Sd)a.bb[wa]&&(ya&&(ya+=","),ya+=wa);ya+=",state,symbols";
a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");ya.length&&a.g("dump extension commands:\n\t"+ya)}else if("state"==K){var oe=bf(a.w,!0);"console"==ka?console.log(oe):(a.ta&&(a.ta.value=""),a.g(oe))}else if("symbols"==K)for(var Tc=0;Tc<a.J.length;Tc++){var Uc=a.J[Tc],ab;for(ab in Uc.Ca)if("."!=ab.charAt(0)){var pe=Uc.Ca[ab].o;
if(void 0!==pe){var qe=Uc.Ca[ab].l;qe&&(ab=qe);a.g(Z(pe)+" "+ab)}}}else{if("d"==P){for(wa in Sd)if(f[1]==wa){var re=a.bb[wa];re?(f.shift(),f.shift(),re(f)):a.g("no dump registered for "+K);break a}K||(P=a.fc||"db")}else a.fc=P;if("dh"==P){var se=K,te=ka,ue="",ve=0,V=a.sa,za=a.X;if(za.length){var Y=+se||a.Nb,bb=+te||10;isNaN(Y)?Y=bb:ue="more ";Y>za.length&&(a.g("note: only "+za.length+" available"),Y=za.length);V-=Y;0>V&&(null==za[za.length-1].C?(Y=V+Y,V=0):V+=za.length);var Vc=[];"call"==te&&(bb=
1E5,Vc=["CALL"]);for(void 0!==se&&a.g(Y+" instructions earlier:");0<bb&&V!=a.sa;){var we=za[V++];if(null==we.C)break;var xb=T(we.C),xf=Y--,xe=ne(a,xb,"history",xf);(!Vc.length||0<=xe.indexOf(Vc[0]))&&a.g(xe);xb.ub&&(V+=xb.ub,bb-=xb.ub,Y-=xb.ub);V>=za.length&&(V=0);a.Nb=Y;ve++;bb--}}ve||(a.g("no "+ue+"history available"),a.Nb=void 0)}else{var dc=X(a,K);if(dc){var ec=0;ka&&("l"==ka.charAt(0)&&(ka=ka.substr(1)||xa),ec=Re(a,ka)>>>0,65536<ec&&(ec=65536));for(var Ma="",fc="dd"==P?4:"dw"==P?2:1,gc=fc*ec||
128,yf=gc+15>>4||1;yf--&&0<gc;){var hc=0,Wc=0,yb,zb="",Xc="",K=Z(dc.C);for(yb=16;0<yb&&0<gc;yb--){var ic=a.W(dc,1),hc=hc|ic<<(Wc++<<3);Wc==fc&&(zb+=q(hc,2*fc),zb+=1==fc?9==yb?"-":" ":" ",hc=Wc=0);Xc+=32<=ic&&128>ic?String.fromCharCode(ic):".";gc--}Ma&&(Ma+="\n");Ma+=K+" "+zb+(0==yb?" "+Xc:"")}Ma&&a.g(Ma);a.Gb=dc}}}}break;case "e":if("else"==f[0])break;var jc=1,ye=255,ze=a.W,Ae=a.ga;"ew"==f[0]&&(jc=2,ye=65535,ze=a.Ea,Ae=a.sb);var Be=jc<<1,Ce=f[1];if(null==Ce)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"),
a.g("\tew [a] [...] edit words at address a");else{var kc=X(a,Ce);if(kc)for(var lc=2;lc<f.length;lc++){var Ab=Yd(a,f[lc]);if(void 0===Ab){a.g("unrecognized value: "+f[lc]);break}Ab&~ye&&a.g("warning: "+q(Ab)+" exceeds "+jc+"-byte value");var zf=ze.call(a,kc);a.g("changing "+Z(kc.C)+" from 0x"+q(zf,Be)+" to 0x"+q(Ab,Be));Ae.call(a,kc,Ab,jc)}}break;case "f":We(a,f[1]);break;case "g":a:{var De=f[1],Af=b;if(void 0!==De){var Yc=X(a,De,!0);if(!Yc)break a;Zd(a,Yc,Af);a.Ha(a.u,Yc,!0)}a.Ma(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var Zc;if(a.A.la)Zc="halting",a.da();else{if(hb(a,!0))break a;Zc="already halted"}c||a.g(Zc)}break;case "i":if("if"==f[0]){var $c;var Bb=b.substr(2),Bb=ha(Bb);Yd(a,Bb)?(c||a.g("true: "+Bb),$c=!0):(c||a.g("false: "+Bb),$c=!1);$c||(d=!1);break}var ad=f[1];if(ad&&"?"!=ad){var bd=Re(a,ad);if(void 0!==bd){var Bf=Fb(a.B,bd);a.g(r(bd)+": "+("0x"+q(Bf,2)))}}else a.g("input commands:"),a.g("\ti [p]\tread port [p]"),a.g("warning: port accesses can affect hardware state");break;case "k":var Cf=f[0];
if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var cd=0,Ee=T(),Cb=T(a.b.ca);for(a.g("stack trace for "+Z(Cb.C));10>cd;){for(var Na=null,Df=256;65536>Cb.C>>>0;){Ee.C=a.Ea(Cb,2);if(null==Cb.C||!Df--)break;for(var Ef=a,mc=Ee,Fe=null,Db=mc.C,Ge=Db,dd=1;6>=dd&&Db;dd++){if(2<dd){mc.C=Db;var nc=ne(Ef,mc);if(0<=nc.indexOf("CALL")){var He=nc.indexOf(" ");if(Db+(nc.indexOf(" ",He+1)-He-1)/2==Ge){Fe=nc;break}}}Db--}mc.C=Ge;if(Na=Fe)break}if(!Na||
null==Na)break;var Ie=null;if("ks"==Cf){var Je=Na.match(/[0-9A-F]+$/);Je&&(Ie=Ye(a,Je[0]))}Na=ga(Na,50)+" ;"+(Ie||"stack="+Z(Cb.C));a.g(Na);cd++}cd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Ye(a,f[1],!0);break}break;case "m":a:{var Aa,Ba=null,G=f[1];"?"==G&&(G=void 0);if(void 0!==G){var Oa=0;if("all"==G)Oa=1610481663,G=null;else if("on"==G)Ba=!0,G=null;else if("off"==G)Ba=!1,G=null;else{"keys"==G&&(G="key");"kbd"==G&&(G="keyboard");for(Aa in Sd)if(G==Aa){Oa=Sd[Aa];Ba=!!(a.ha&
Oa);break}if(!Oa){a.g("unknown message category: "+G);break a}}Oa&&("on"==f[2]?(a.ha|=Oa,Ba=!0):"off"==f[2]&&(a.ha&=~Oa,Ba=!1))}var Ff=0,Ia="";for(Aa in Sd)if(!G||G==Aa){var Gf=!!(a.ha&Sd[Aa]);if(null===Ba||Ba==Gf)Ia&&(Ia+=","),++Ff%10||(Ia+="\n\t"),"key"==Aa&&(Aa="keys"),Ia+=Aa}void 0===G&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ba?Ba?"messages on: ":"messages off: ":"message categories:\n\t")+(Ia||"none"));Ld(a)}break;case "o":var ed=f[1],Hf=f[2];if(ed&&
"?"!=ed){var fd=Re(a,ed,"port #"),gd=Re(a,Hf);void 0!==fd&&void 0!==gd&&(Ib(a.B,fd,gd),a.g(r(fd)+": "+("0x"+q(gd,2))))}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),a.g("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){$e(a,b.substr(5));break}var Ke="pr"==f[0]?1:0,If=1+Ke;if(a.fa)a.g("step in progress");else{var hd=T(a.b.L);switch(a.W(hd)){case 205:a.fa=If,Ud(hd,3)}a.fa?(a.Ha(a.u,hd,!0),a.Ma()||(a.w&&a.w.lb(),a.fa=0)):af(a,Ke?"tr":"t")}break;
case "r":if("reset"==b){a.w&&a.w.reset();break}ge(a,f);break;case "s":Ze(a,f);break;case "t":af(a,f[0],f[1]);break;case "u":he(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Xe(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.22.0 ("+a.b.Sa+",RELEASE"+(kb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(pa());break;case "?":if(f[1]){$e(a,b.substr(1));break}var Eb="commands:",id;for(id in Nd)Eb+="\n"+ga(id,7)+Nd[id];pd(a)||(Eb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Eb);break;default:a.g("unknown command: "+
b),d=!1}}}catch(Le){a.g("debugger error: "+(Le.stack||Le.message)),d=!1}return d}function qc(a,b,c){b=$d(a,b,c);for(var d in b)if(!me(a,b[d]))return!1;return!0}Ja(function(){for(var a=A(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Id(d);cb(d,c)}});function Gc(a,b,c){this.id=a.id;this.key=cf(a,b,c);this.F=a.F;df(this,a.Sb)}function cf(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
Gc.prototype={constructor:Gc,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){df(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
function df(a,b){a[a.id]={};b&&H(a,"parms",b);a.b=!1}function ef(a){var b=!0;if(sa()){var c=JSON.stringify(a[a.id]);ua(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function ff(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function gf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:sa()&&(b=ta(a.key))?(a[a.id]=b,a.b=!0):!1}function hf(a,b){return a[a.id][b]||null}function H(a,b,c){try{a[a.id][b]=c}catch(d){}}
function jf(a,b,c){w.call(this,"Computer",a,jf,67108864);this.A.ia=!1;kf(this,b);this.ba=cc(this,"autoPower",a);this.D=0;this.ra=a.busWidth||a.buswidth;this.w=lf;this.X=null;this.J=this.na=!1;this.sa=cc(this,"url")||"";(Math.random()+.1).toString(36);this.u=mf(this);if(this.b=$a("CPU",this.id)){this.F=$a("Debugger",this.id);this.aa=[];for(b=null;b=nb(this,"Video",b);)this.aa.push(b);this.B=new pb({id:this.Ib+".bus",busWidth:this.ra},this.b,this.F);var d,e=Za(this.id);if((this.G=$a("Panel",this.id))&&
this.G.ta)for(b=0;b<e.length;b++)d=e[b],d.oa=this.G.oa,d.g=this.G.g,d.ta=this.G.ta;for(b=0;b<e.length;b++)d=e[b],d.Fa&&d.Fa(this,this.B,this.b,this.F);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.M=d:this.w=parseInt(d,10));var f;if(a=cc(this,"state")||(f=!0,a.state))b=this.fa=a,f||(this.J=!0,this.w=lf),this.w&&(this.Y=new Gc(this,nf),gf(this.Y)?b=null:delete this.Y);!b&&this.w&&(b=of(this))&&(this.J=!0);if(b){var h=this;na(b,null,!0,function(a,b,c){c?(h.M=null,h.J=!1,h.oa("Unable to load machine state from server (error "+
c+(b?": "+ha(b):"")+")")):(h.X=b,h.na=!0);C(h)})}else C(this);this.V.power||(this.ba=!0);!c&&this.ba&&pf(this,this.jb)}else t("Unable to find CPU component")}Wa(jf);var nf="1.22.0",lf=0;function kf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.K=b}
function cc(a,b,c){var d=b.toLowerCase(),d=Ra[b]||Ra[d];void 0===d&&a.K&&(d=a.K[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function pf(a,b,c){for(var d=Za(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ib(f)){ib(f,function(){pf(a,b,c)});return}}b.call(a,c)}
function qf(a,b){var c=new Gc(a,nf,"validate");if(gf(c)&&ff(c)){var d=hf(c,"timestamp"),e=b?hf(b,"timestamp"):"unknown";d!=e&&(a.oa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=jf.prototype;
m.jb=function(a){void 0===a&&(a=this.w||(this.X?1:lf));if(!this.D){this.D++;var b=!1,c=!1;this.ma=!1;var d=this.Y||new Gc(this,nf);if(-1==a)b=!0;else if(a>lf){if(gf(d,this.X)){this.H=new Gc(this,nf,"failsafe");gf(this.H)&&(rf(this,d),a=2,df(this.H));H(this.H,"timestamp",la());ef(this.H);var e=this.w&&!this.J;if(1==a||qa("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ff(d)){var f=hf(d,"code"),h=hf(d,"data");f&&("ok"==f?gf(d,h):("error"==f&&"no machine state"!=
h?(this.oa("Error: "+h),"unable to verify user"==h&&(ua("user",""),this.u=null)):this.g(f+": "+h),df(d),gf(d)?(c=ff(d),e=!0):c=!1))}e&&qf(this,c?d:null)}else 2==a&&d.clear()}else qf(this);delete this.X;delete this.Y}e=Za(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=sf(this,h,d,b,c));b=[d,a,c];-1!=a?pf(this,this.Hb,b):this.Hb(b)}};
function sf(a,b,c,d,e){if(!b.A.ia){b.A.ia=!0;if(b.za){var f=null;e&&((f=hf(c,b.id))||(f=hf(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.za(f,d)&&f&&(t("Unable to restore state for "+b.type),a.fa&&!a.na?(c.clear(),a.w=lf,window&&window.location.reload()):a.ma=!0,b.za(null),e=!1)}if(!d&&b.Eb)for(a=b.Eb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
m.Hb=function(a){var b=a[0],c=0>a[1];a=a[2];this.A.ia=!0;var d=this.V.power;d&&(d.textContent="Shutdown");this.ka||(this.g("PC8080 v"+nf+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.ka=!0);this.b&&(sf(this,this.b,b,c,a),sc(this.b));this.ma&&(rf(this,b),b.clear());!c&&this.H&&(this.H.clear(),delete this.H);this.D=0};
function rf(a,b){if(qa("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.sa,d=a.u||"",e=b.toString(),f={app:"PC8080"};f.ver=nf;f.url=c;f.user=d;f.type="bug";f.data=e;na("http://www.pcjs.org/api/v1/report",f,!0)}}
function bf(a,b,c){var d,e="none";if(a.D)return null;a.D--;var f=new Gc(a,nf),h=new Gc(a,nf,"validate"),g=la();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.22.0");H(f,"url",window?window.location.href:null);H(f,"browser",pa());a.b&&a.b.ya&&(c&&a.b.da(),d=a.b.ya(b,c),"object"===typeof d&&H(f,a.b.id,d),c&&(a.b.A.ia=!1,!1===d&&(e=null)));for(var g=Za(a.id),k=0;k<g.length;k++){var l=g[k];l.A.ia&&(l.ya&&(d=l.ya(b,c),"object"===typeof d&&H(f,l.id,d)),c&&(l.A.ia=!1,!1===d&&(e=null)))}e&&(c?(g=
d=!1,b?(a.u&&tf(a,a.u,f.toString()),ef(h)&&ef(f)||(e=null,d=g=!0)):a.w&&(d=!0,g=3==a.w),d&&f.clear(g)):e=f.toString());c&&(a.A.ia=!1,b=a.V.power)&&(b.textContent="Power");a.D=0;return e}m.reset=function(){this.B&&this.B.reset&&(this.F&&fb(this,0)&&this.F.message("Resetting "+this.B.type,void 0),this.B.reset());for(var a=Za(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.B&&c.reset&&(this.F&&fb(this,0)&&this.F.message("Resetting "+c.type,void 0),c.reset())}};
function $d(a,b,c){var d;if(b){b=Zd(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var p=l[e++],n=p.length,p=ha(p);if(!p){f=!0;break}p=Te(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}g.push(p);if(e==l.length)break;var p=l[e++],u=p.length;k.length&&Re[p]<Re[k[k.length-1]]&&Se(g,k,1);k.push(p);b=b.substr(n+u)}Se(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&Ue(a,null,
d))}return d}function Zd(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=$d(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?q(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=X(a,c[1]),b=b.replace("["+c[1]+"]",d?q(a.Ga(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.ga-a.Ca}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
function Te(a,b,c,d){var e;void 0!==b?(e=de(b),0<=e?e=fe(a,e):(e=a.na[b],void 0===e&&(e=aa(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
function Ue(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,h="";if(!f||4<f)f=4;for(var g=0;g<f;g++){h&&(h=","+h);var k=d&255,l=8,p="";void 0===l?l=32:32<l&&(l=32);if(null==k||isNaN(k))for(;0<l--;)p="?"+p;else for(;0<l--;)p=(k&1?"1":"0")+p,k>>=1;h=p+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function Ve(a,b){if(b)return Ue(a,b,a.na[b]);var c=0;for(b in a.na)Ue(a,b,a.na[b]),c++;return 0<c}Kd.prototype.Fb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function We(a,b,c){var d=[],e=W(b)>>>0;for(b=0;b<a.J.length;b++){var f=a.J[b],h=f.C>>>0,g=f.gc;if(e>=h&&e<h+g){e=ia(f.Db,[e-h],a.Fb);0<=e?Xe(a,b,e,d):c&&(e=~e,Xe(a,b,e-1,d),Xe(a,b,e,d));break}}return d}function Xe(a,b,c,d){var e={},f=a.J[b].Db,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.J[b].Da[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
function Ye(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.K)if("clear"==b){for(c=0;c<a.K.length;c++)a.K[c]=[c,0];a.g("frequency data cleared");d++}else if(void 0!==b)a.g("unknown frequency command: "+b),d++;else{var e=a.K.slice();e.sort(function(a,b){return b[1]-a[1]});var f=8086!=a.style?Qd:Rd;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.pb[h][0]]+" ").substr(0,5)+" ("+("0x"+q(h,2))+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
function Ze(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ve(a)||a.g("no variables"),!0;if(!c[2])return Ve(a,c[1]);if(!c[3])return delete a.na[c[1]],!0;var d=$d(a,c[3]);return void 0!==d?(a.na[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
function $e(a,b,c){var d=null;if(b=X(a,b,!0)){var e=We(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.C-e[1])&&(h=" + "+r(f)),f=e[0]+" ("+Z(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.C)&&(h=" - "+r(f)),f=e[4]+" ("+Z(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
function af(a,b){switch(b[1]){case "8080":a.style=Ld;break;case "8086":a.style=8086;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.b.i.Wa=c;break;case "start":a.b.i.gb=c;break;case "stop":a.b.i.Ya=c;break;default:a.g("unknown cs option");return}void 0!==c&&qc(a.b);a.g("checksums "+(a.b.A.Ra?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(wc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.La.toFixed(2)+"Mhz")+
" ("+a.b.i.Na+"x)");return;case "?":a.g("debugger options:");a.g("\t8080\t\tselect 8080-style mnemonics");a.g("\t8086\t\tselect 8086-style mnemonics");a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.g("unknown option: "+b[1]);return}}a.g(a.style+"-style mnemonics enabled")}
function ie(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!0);if(null!=b&&1<b.length){var e=b[1],f=null,h=e.indexOf("=");if(0<h)f=e.substr(h+1),e=e.substr(0,h);else if(2<b.length)f=b[2];else{a.g("missing value for "+b[1]);return}var h=!1,g=$d(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.j=g&255;break;case "B":d.N=g&255;break;case "BC":d.N=g>>8&255;case "C":d.O=g&255;break;case "D":d.P=
g&255;break;case "DE":d.P=g>>8&255;case "E":d.R=g&255;break;case "H":d.S=g&255;break;case "HL":d.S=g>>8&255;case "L":d.V=g&255;break;case "SP":d.ca=g&65535;break;case "PC":F(d,g);a.Y=T(d.L);break;case "PS":Ec(d,g);break;case "C":d.I=g?d.I|256:d.I&255;break;case "P":g?Oc(d)||(d.Z^=1):Oc(d)&&(d.Z^=1);break;case "A":d.ja=g?~d.Z&16|d.ja&-17:d.Z&16|d.ja&-17;break;case "Z":d.I=g?d.I&-256:d.I|255;break;case "S":g?Rc(d)||(d.Z^=192):Rc(d)&&(d.Z^=192);break;case "I":d.qa=g?d.qa|512:d.qa&-513;break;default:a.g("unknown register: "+
e);return}if(!h){a.g("invalid value: "+f);return}sc(d);a.g("updated registers:")}a.g(Qe(a));c&&(a.Y=T(d.L),je(a,Z(a.Y.C)))}}function bf(a,b){b=ha(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(ge(a,c[2])):$d(a,b,!0)}function cf(a,b,c){var d="t"!=b;c=Te(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ca(c,function(){return hb(a,!0)&&a.bb(e,d,!1)},function(){sc(a.b);hb(a,!1)})}
function je(a,b,c,d){if(b=X(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=X(a,c,!0);if(!d||d.C<b.C)return;e=d.C-b.C;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=ib(a,!1)||a.ba?a.M:null;var h=null!=f?"cycles":null,g=We(a,b),k=b.C;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var l=g[0]+":";g[2]&&(l+=" "+g[2]);a.g(l)}g[3]&&(h=g[3],f=null);f=pe(a,b,h,f);a.g(f);a.Y=b;e-=b.C-k;c++}}}
function be(a,b,c,d){if(c)if(b){0>a.G&&a.D.length&&(a.G=0);if(0>a.G||b!=a.D[a.G])a.D.splice(0,0,b),a.G=0;a.G--}else a.la?b="end":b=a.D[a.G+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(ha(b.substring(c,f))),c=f+1}}return a}
function oe(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.la&&(a.g("ended assemble at "+Z(a.ka.C)),a.Y=a.ka,a.la=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.xa=null;if(jb(a)&&0<b.length){a.la&&(b="a "+Z(a.ka.C)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var p=X(a,f[1],!0);if(p)if(a.ka=
p,void 0===f[2])a.g("begin assemble at "+Z(p.C)),a.la=!0,sc(a.b);else{var n;a.g("not supported yet");n=[];if(n.length){for(var u=0;u<n.length;u++)a.fa(p,n[u],1);a.g(pe(a,a.ka))}}break;case "b":a:{var z=f[0],v=f[1],O=b;if("?"==v)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),
a.g("\tbc [a]\tclear breakpoint at addr [a]"),a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var B=z.charAt(1);if("l"==B){var U=0,U=U+ne(a,a.u),U=U+ne(a,a.aa);(U+=ne(a,a.H))||a.g("no breakpoints")}else if("n"==B)a.wa=Te(a,v),a.g("break after "+a.wa+" instruction(s)");else if(void 0===v)a.g("missing breakpoint address");else{var E=T();if("*"!=v&&(E=X(a,v,!0),!E))break a;v=r(E.C);"c"==B?null==E.C?(Md(a),a.g("all breakpoints cleared")):le(a,a.u,E)||le(a,a.aa,E)||
le(a,a.H,E)||a.g("breakpoint missing: "+Z(E.C)):"i"==B?a.g("breakpoint "+(xb(a.B,E.C)?"enabled":"cleared")+": port "+v+" (input)"):"o"==B?a.g("breakpoint "+(Ib(a.B,E.C)?"enabled":"cleared")+": port "+v+" (output)"):null!=E.C&&(ae(a,E,O),"p"==B?a.Ja(a.u,E):"r"==B?a.Ja(a.aa,E):"w"==B?a.Ja(a.H,E):a.g("unknown breakpoint command: "+B))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var wa,P=f[0],K=f[1],ka=f[2],xa=f[3];if("?"==K){var ya="";for(wa in Ud)a.Fa[wa]&&(ya&&(ya+=","),ya+=wa);ya+=",state,symbols";
a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");ya.length&&a.g("dump extension commands:\n\t"+ya)}else if("state"==K){var qe=df(a.w,!0);"console"==ka?console.log(qe):(a.ta&&(a.ta.value=""),a.g(qe))}else if("symbols"==K)for(var Uc=0;Uc<a.J.length;Uc++){var Vc=a.J[Uc],ab;for(ab in Vc.Da)if("."!=ab.charAt(0)){var re=Vc.Da[ab].o;
if(void 0!==re){var se=Vc.Da[ab].l;se&&(ab=se);a.g(Z(re)+" "+ab)}}}else{if("d"==P){for(wa in Ud)if(f[1]==wa){var te=a.Fa[wa];te?(f.shift(),f.shift(),te(f)):a.g("no dump registered for "+K);break a}K||(P=a.fc||"db")}else a.fc=P;if("dh"==P){var ue=K,ve=ka,we="",xe=0,V=a.ra,za=a.X;if(za.length){var Y=+ue||a.Nb,bb=+ve||10;isNaN(Y)?Y=bb:we="more ";Y>za.length&&(a.g("note: only "+za.length+" available"),Y=za.length);V-=Y;0>V&&(null==za[za.length-1].C?(Y=V+Y,V=0):V+=za.length);var Wc=[];"call"==ve&&(bb=
1E5,Wc=["CALL"]);for(void 0!==ue&&a.g(Y+" instructions earlier:");0<bb&&V!=a.ra;){var ye=za[V++];if(null==ye.C)break;var Ab=T(ye.C),zf=Y--,ze=pe(a,Ab,"history",zf);(!Wc.length||0<=ze.indexOf(Wc[0]))&&a.g(ze);Ab.vb&&(V+=Ab.vb,bb-=Ab.vb,Y-=Ab.vb);V>=za.length&&(V=0);a.Nb=Y;xe++;bb--}}xe||(a.g("no "+we+"history available"),a.Nb=void 0)}else{var dc=X(a,K);if(dc){var ec=0;ka&&("l"==ka.charAt(0)&&(ka=ka.substr(1)||xa),ec=Te(a,ka)>>>0,65536<ec&&(ec=65536));for(var Ma="",fc="dd"==P?4:"dw"==P?2:1,gc=fc*ec||
128,Af=gc+15>>4||1;Af--&&0<gc;){var hc=0,Xc=0,Bb,Cb="",Yc="",K=Z(dc.C);for(Bb=16;0<Bb&&0<gc;Bb--){var ic=a.W(dc,1),hc=hc|ic<<(Xc++<<3);Xc==fc&&(Cb+=q(hc,2*fc),Cb+=1==fc?9==Bb?"-":" ":" ",hc=Xc=0);Yc+=32<=ic&&128>ic?String.fromCharCode(ic):".";gc--}Ma&&(Ma+="\n");Ma+=K+" "+Cb+(0==Bb?" "+Yc:"")}Ma&&a.g(Ma);a.Gb=dc}}}}break;case "e":if("else"==f[0])break;var jc=1,Ae=255,Be=a.W,Ce=a.fa;"ew"==f[0]&&(jc=2,Ae=65535,Be=a.Ga,Ce=a.ub);var De=jc<<1,Ee=f[1];if(null==Ee)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"),
a.g("\tew [a] [...] edit words at address a");else{var kc=X(a,Ee);if(kc)for(var lc=2;lc<f.length;lc++){var Db=$d(a,f[lc]);if(void 0===Db){a.g("unrecognized value: "+f[lc]);break}Db&~Ae&&a.g("warning: "+q(Db)+" exceeds "+jc+"-byte value");var Bf=Be.call(a,kc);a.g("changing "+Z(kc.C)+" from 0x"+q(Bf,De)+" to 0x"+q(Db,De));Ce.call(a,kc,Db,jc)}}break;case "f":Ye(a,f[1]);break;case "g":a:{var Fe=f[1],Cf=b;if(void 0!==Fe){var Zc=X(a,Fe,!0);if(!Zc)break a;ae(a,Zc,Cf);a.Ja(a.u,Zc,!0)}a.Oa(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var $c;if(a.A.ma)$c="halting",a.da();else{if(ib(a,!0))break a;$c="already halted"}c||a.g($c)}break;case "i":if("if"==f[0]){var ad;var Eb=b.substr(2),Eb=ha(Eb);$d(a,Eb)?(c||a.g("true: "+Eb),ad=!0):(c||a.g("false: "+Eb),ad=!1);ad||(d=!1);break}var bd=f[1];if(bd&&"?"!=bd){var cd=Te(a,bd);if(void 0!==cd){var Df=yb(a.B,cd);a.g(r(cd)+": "+("0x"+q(Df,2)))}}else a.g("input commands:"),a.g("\ti [p]\tread port [p]"),a.g("warning: port accesses can affect hardware state");break;case "k":var Ef=f[0];
if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var dd=0,Ge=T(),Fb=T(a.b.ca);for(a.g("stack trace for "+Z(Fb.C));10>dd;){for(var Na=null,Ff=256;65536>Fb.C>>>0;){Ge.C=a.Ga(Fb,2);if(null==Fb.C||!Ff--)break;for(var Gf=a,mc=Ge,He=null,Gb=mc.C,Ie=Gb,ed=1;6>=ed&&Gb;ed++){if(2<ed){mc.C=Gb;var nc=pe(Gf,mc);if(0<=nc.indexOf("CALL")){var Je=nc.indexOf(" ");if(Gb+(nc.indexOf(" ",Je+1)-Je-1)/2==Ie){He=nc;break}}}Gb--}mc.C=Ie;if(Na=He)break}if(!Na||
null==Na)break;var Ke=null;if("ks"==Ef){var Le=Na.match(/[0-9A-F]+$/);Le&&(Ke=$e(a,Le[0]))}Na=ga(Na,50)+" ;"+(Ke||"stack="+Z(Fb.C));a.g(Na);dd++}dd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){$e(a,f[1],!0);break}break;case "m":a:{var Aa,Ba=null,G=f[1];"?"==G&&(G=void 0);if(void 0!==G){var Oa=0;if("all"==G)Oa=1610481663,G=null;else if("on"==G)Ba=!0,G=null;else if("off"==G)Ba=!1,G=null;else{"keys"==G&&(G="key");"kbd"==G&&(G="keyboard");for(Aa in Ud)if(G==Aa){Oa=Ud[Aa];Ba=!!(a.ha&
Oa);break}if(!Oa){a.g("unknown message category: "+G);break a}}Oa&&("on"==f[2]?(a.ha|=Oa,Ba=!0):"off"==f[2]&&(a.ha&=~Oa,Ba=!1))}var Hf=0,Ia="";for(Aa in Ud)if(!G||G==Aa){var If=!!(a.ha&Ud[Aa]);if(null===Ba||Ba==If)Ia&&(Ia+=","),++Hf%10||(Ia+="\n\t"),"key"==Aa&&(Aa="keys"),Ia+=Aa}void 0===G&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ba?Ba?"messages on: ":"messages off: ":"message categories:\n\t")+(Ia||"none"));Nd(a)}break;case "o":var fd=f[1],Jf=f[2];if(fd&&
"?"!=fd){var gd=Te(a,fd,"port #"),hd=Te(a,Jf);void 0!==gd&&void 0!==hd&&(Jb(a.B,gd,hd),a.g(r(gd)+": "+("0x"+q(hd,2))))}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),a.g("warning: port accesses can affect hardware state");break;case "p":if("print"==f[0]){bf(a,b.substr(5));break}var Me="pr"==f[0]?1:0,Kf=1+Me;if(a.ba)a.g("step in progress");else{var id=T(a.b.L);switch(a.W(id)){case 205:a.ba=Kf,Wd(id,3)}a.ba?(a.Ja(a.u,id,!0),a.Oa()||(a.w&&a.w.mb(),a.ba=0)):cf(a,Me?"tr":"t")}break;
case "r":if("reset"==b){a.w&&a.w.reset();break}ie(a,f);break;case "s":af(a,f);break;case "t":cf(a,f[0],f[1]);break;case "u":je(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Ze(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.22.0 ("+a.b.Ua+",RELEASE"+(lb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(pa());break;case "?":if(f[1]){bf(a,b.substr(1));break}var Hb="commands:",jd;for(jd in Pd)Hb+="\n"+ga(jd,7)+Pd[jd];qd(a)||(Hb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Hb);break;default:a.g("unknown command: "+
b),d=!1}}}catch(Ne){a.g("debugger error: "+(Ne.stack||Ne.message)),d=!1}return d}function rc(a,b,c){b=be(a,b,c);for(var d in b)if(!oe(a,b[d]))return!1;return!0}Ja(function(){for(var a=A(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Kd(d);cb(d,c)}});function Hc(a,b,c){this.id=a.id;this.key=ef(a,b,c);this.F=a.F;ff(this,a.Sb)}function ef(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
Hc.prototype={constructor:Hc,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){ff(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
function ff(a,b){a[a.id]={};b&&H(a,"parms",b);a.b=!1}function gf(a){var b=!0;if(sa()){var c=JSON.stringify(a[a.id]);ua(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function hf(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function jf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:sa()&&(b=ta(a.key))?(a[a.id]=b,a.b=!0):!1}function kf(a,b){return a[a.id][b]||null}function H(a,b,c){try{a[a.id][b]=c}catch(d){}}
function lf(a,b,c){w.call(this,"Computer",a,lf,67108864);this.A.ia=!1;mf(this,b);this.ba=oc(this,"autoPower",a);this.D=0;this.ra=a.busWidth||a.buswidth;this.w=nf;this.X=null;this.J=this.na=!1;this.sa=oc(this,"url")||"";(Math.random()+.1).toString(36);this.u=of(this);if(this.b=$a("CPU",this.id)){this.F=$a("Debugger",this.id);this.aa=[];for(b=null;b=ob(this,"Video",b);)this.aa.push(b);this.B=new qb({id:this.Hb+".bus",busWidth:this.ra},this.b,this.F);var d,e=Za(this.id);if((this.G=$a("Panel",this.id))&&
this.G.ta)for(b=0;b<e.length;b++)d=e[b],d.pa=this.G.pa,d.g=this.G.g,d.ta=this.G.ta;for(b=0;b<e.length;b++)d=e[b],d.Ha&&d.Ha(this,this.B,this.b,this.F);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.M=d:this.w=parseInt(d,10));var f;if(a=oc(this,"state")||(f=!0,a.state))b=this.ga=a,f||(this.J=!0,this.w=nf),this.w&&(this.Y=new Hc(this,pf),jf(this.Y)?b=null:delete this.Y);!b&&this.w&&(b=qf(this))&&(this.J=!0);if(b){var h=this;na(b,null,!0,function(a,b,c){c?(h.M=null,h.J=!1,h.pa("Unable to load machine state from server (error "+
c+(b?": "+ha(b):"")+")")):(h.X=b,h.na=!0);C(h)})}else C(this);this.T.power||(this.ba=!0);!c&&this.ba&&rf(this,this.kb)}else t("Unable to find CPU component")}Wa(lf);var pf="1.22.0",nf=0;function mf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.K=b}
function oc(a,b,c){var d=b.toLowerCase(),d=Ra[b]||Ra[d];void 0===d&&a.K&&(d=a.K[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function rf(a,b,c){for(var d=Za(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!jb(f)){jb(f,function(){rf(a,b,c)});return}}b.call(a,c)}
function sf(a,b){var c=new Hc(a,pf,"validate");if(jf(c)&&hf(c)){var d=kf(c,"timestamp"),e=b?kf(b,"timestamp"):"unknown";d!=e&&(a.pa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=lf.prototype;
m.kb=function(a){void 0===a&&(a=this.w||(this.X?1:nf));if(!this.D){this.D++;var b=!1,c=!1;this.la=!1;var d=this.Y||new Hc(this,pf);if(-1==a)b=!0;else if(a>nf){if(jf(d,this.X)){this.H=new Hc(this,pf,"failsafe");jf(this.H)&&(tf(this,d),a=2,ff(this.H));H(this.H,"timestamp",la());gf(this.H);var e=this.w&&!this.J;if(1==a||qa("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=hf(d)){var f=kf(d,"code"),h=kf(d,"data");f&&("ok"==f?jf(d,h):("error"==f&&"no machine state"!=
h?(this.pa("Error: "+h),"unable to verify user"==h&&(ua("user",""),this.u=null)):this.g(f+": "+h),ff(d),jf(d)?(c=hf(d),e=!0):c=!1))}e&&sf(this,c?d:null)}else 2==a&&d.clear()}else sf(this);delete this.X;delete this.Y}e=Za(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=uf(this,h,d,b,c));b=[d,a,c];-1!=a?rf(this,this.Ib,b):this.Ib(b)}};
function uf(a,b,c,d,e){if(!b.A.ia){b.A.ia=!0;if(b.Ba){var f=null;e&&((f=kf(c,b.id))||(f=kf(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Ba(f,d)&&f&&(t("Unable to restore state for "+b.type),a.ga&&!a.na?(c.clear(),a.w=nf,window&&window.location.reload()):a.la=!0,b.Ba(null),e=!1)}if(!d&&b.Eb)for(a=b.Eb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
m.Ib=function(a){var b=a[0],c=0>a[1];a=a[2];this.A.ia=!0;var d=this.T.power;d&&(d.textContent="Shutdown");this.ka||(this.g("PC8080 v"+pf+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.ka=!0);this.b&&(uf(this,this.b,b,c,a),tc(this.b));this.la&&(tf(this,b),b.clear());!c&&this.H&&(this.H.clear(),delete this.H);this.D=0};
function tf(a,b){if(qa("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.sa,d=a.u||"",e=b.toString(),f={app:"PC8080"};f.ver=pf;f.url=c;f.user=d;f.type="bug";f.data=e;na("http://www.pcjs.org/api/v1/report",f,!0)}}
function df(a,b,c){var d,e="none";if(a.D)return null;a.D--;var f=new Hc(a,pf),h=new Hc(a,pf,"validate"),g=la();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.22.0");H(f,"url",window?window.location.href:null);H(f,"browser",pa());a.b&&a.b.Aa&&(c&&a.b.da(),d=a.b.Aa(b,c),"object"===typeof d&&H(f,a.b.id,d),c&&(a.b.A.ia=!1,!1===d&&(e=null)));for(var g=Za(a.id),k=0;k<g.length;k++){var l=g[k];l.A.ia&&(l.Aa&&(d=l.Aa(b,c),"object"===typeof d&&H(f,l.id,d)),c&&(l.A.ia=!1,!1===d&&(e=null)))}e&&(c?(g=
d=!1,b?(a.u&&vf(a,a.u,f.toString()),gf(h)&&gf(f)||(e=null,d=g=!0)):a.w&&(d=!0,g=3==a.w),d&&f.clear(g)):e=f.toString());c&&(a.A.ia=!1,b=a.T.power)&&(b.textContent="Power");a.D=0;return e}m.reset=function(){this.B&&this.B.reset&&(fb(this,"Resetting "+this.B.type),this.B.reset());for(var a=Za(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.B&&c.reset&&(fb(this,"Resetting "+c.type),c.reset())}};
m.start=function(a,b){for(var c=Za(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=Za(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
m.qa=function(a,b,c){var d=this;switch(b){case "power":return this.V[b]=c,c.onclick=function(){d.D||(d.A.ia?bf(d,!1,!0):pf(d,d.jb))},!0;case "reset":return this.V[b]=c,c.onclick=function(){if(d.A.ia&&!d.D)if(d.w&&!d.M){var a=qa("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");bf(d,a,!0);!a&&d.fa?window&&window.location.reload():d.jb(lf)}else d.reset(),d.b&&sc(d.b)},!0;case "save":if(da(oa(),"pcjs.org")){c.parentNode.removeChild(c);
break}this.V[b]=c;c.onclick=function(){var a=mf(d,!0);if(a){var b=!!(d.w&&!d.M||d.fa),c=bf(d,b);b?tf(d,a,c):d.oa("Resume disabled, machine state not saved")}};return!0}return!1};
function mf(a,b){var c=a.u;c||(c=ta("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=uf(a,c))||a.oa("The user ID is invalid."))):b&&a.oa("Browser local storage is not available"));return c}
function uf(a,b){a.u=null;var c=na(oa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(ua("user",c.data),a.u=c.data)}catch(e){t(e.message+" ("+d+")")}return a.u}function of(a){var b=null;a.u&&(b=oa()+"/api/v1/user?req=load&user="+a.u+"&state="+cf(a,nf));return b}
function tf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=cf(a,nf);d.data=c;b=na(oa()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.oa("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.oa(c),ua("user",""),a.u=null)}}
function nb(a,b,c){a=Za(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}m.lb=function(){};m.va=function(a){this.b&&this.b.va(a);this.G&&this.G.va(a)};
function yc(a,b){for(var c=0;c<a.aa.length;c++)a:{var d=a.aa[c];if(0<=b){if(b&1){d=d.b;d.u=d.u&-8|10;break a}var e=d.b;e.u=e.u&-8|9;if(e=d.aa){for(var e=d.B,f=d.M,h=!0,g=d.X>>>e.ea;0<f&&g<e.T.length;)e.T[g].wa&&(e.T[g].wa=h=!1,e.T[g].Kb=!0),f-=e.ua,g++;e=h}if(e)break a}var g=d.X,k=g+d.M,l=0,p=d.Aa,n=0,u=0,e=d.G,z=0,f=d.H,v=h=0,O=d.fa,B=(1<<O)-1;d.Ba&&(O=-O,v=16+O);for(;g<k;){var U=ub(d.B,g);if(d.aa&&U===d.J[l])n+=d.ra;else{d.J[l]=U;var E=v;v&&(U=U>>8|(U&255)<<8);n<e&&(e=n);for(var wa=0;wa<d.ra;wa++){var P=
U>>E&B,K=d.ba,ka=n++,P=p[P],xa=void 0,xa=d.ka?(K.height-ka-1)*K.width+u:ka+u*K.width,xa=xa*P.length;K.data[xa]=P[0];K.data[xa+1]=P[1];K.data[xa+2]=P[2];K.data[xa+3]=P[3];E+=O}n>z&&(z=n);u<f&&(f=u);u>=h&&(h=u+1)}g+=2;l++;if(n>=d.G&&(n=0,u++,u>d.H))break}d.aa=!0;e<d.G&&(g=z-e,h-=f,d.ka?d.ma.putImageData(d.ba,0,0):d.ma.putImageData(d.ba,0,0,e,f,g,h),d.u.drawImage(d.D,0,0,d.D.width,d.D.height,0,0,d.Y,d.K))}}
Ja(function(){for(var a=A(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=y(c),c=A(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=y(f),h=new jf(h,d,!0);cb(h,f);h.ba&&pf(h,h.jb)}});Ea.show.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=$a("Computer",c.id))&&c.ka&&!c.A.ia&&c.jb(-1)}});
Ea.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=$a("Computer",c.id))&&c.A.ia&&bf(c,!(!c.w||c.M),!0)}});var vf=0;function wf(a,b,c,d,e,f){e("Loading "+a+"...");na(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Jf(g,a,b,c,d,e,f)})}
function Jf(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ya(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(n){g=null,a=n.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Kf(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Kf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");na(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],h);Kf(a,b,c)}})}else c(a,null)}
function Lf(a,b,c,d){function e(a){if(void 0===g){var b=h&&A(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=fa(a))}function f(a){e("Error: "+a);k&&(--vf||La(!0));k=!1}var h,g,k=!0;vf++;Xa[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css";n.styleSheet?n.styleSheet.cssText=l:n.appendChild(document.createTextNode(l));p.appendChild(n)}c||
(c="/versions/pc8080/1.22.0/components.xsl");l=function(d,g){g?wf(c,null,null,!1,e,function(d,l){if(l)if(Ya(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var k=g.transformNode(l);k?(h.outerHTML=k,--vf||La(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(k=new XSLTProcessor,k.importStylesheet(l),(k=k.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(k,h),--vf||La(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?wf(b,a,d,!0,e,l):Jf(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}window.embedPC8080=function(a,b,c,d){La(!1);return Lf(a,b,c,d)};window.enableEvents=La;window.sendEvent=Pa;
function Mf(a,b,c,d){if(!c&&b){d.push(b);a=Xa[d[0]];b=null;for(var e in a)if(da(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?na(b,null,!0,function(a,b){Nf(b,d)}):Nf(null,d)}else t("Error ("+c+") requesting "+a)}
function Nf(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Xa[f],k={},l;for(l in g){var p=g[l],n=ca(l);if("xml"==n){for(n=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=n.exec(g[l]);){var u=d[2];u&&(g[u]||(p=p.replace(d[0],"")))}d=l=ba(l)}else"xsl"==n&&(e=l=ba(l));k[l]=p}a&&(k[l="css"]=a);b[2]&&(k[l="parms"]=b[2]);b[3]&&(k[l="state"]=b[3]);d&&e?(l=JSON.stringify(k),h+=".js",c=c[1]+"var resources="+l+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
m.oa=function(a,b,c){var d=this;switch(b){case "power":return this.T[b]=c,c.onclick=function(){d.D||(d.A.ia?df(d,!1,!0):rf(d,d.kb))},!0;case "reset":return this.T[b]=c,c.onclick=function(){if(d.A.ia&&!d.D)if(d.w&&!d.M){var a=qa("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");df(d,a,!0);!a&&d.ga?window&&window.location.reload():d.kb(nf)}else d.reset(),d.b&&tc(d.b)},!0;case "save":if(da(oa(),"pcjs.org")){c.parentNode.removeChild(c);
break}this.T[b]=c;c.onclick=function(){var a=of(d,!0);if(a){var b=!!(d.w&&!d.M||d.ga),c=df(d,b);b?vf(d,a,c):d.pa("Resume disabled, machine state not saved")}};return!0}return!1};
function of(a,b){var c=a.u;c||(c=ta("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=wf(a,c))||a.pa("The user ID is invalid."))):b&&a.pa("Browser local storage is not available"));return c}
function wf(a,b){a.u=null;var c=na(oa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(ua("user",c.data),a.u=c.data)}catch(e){t(e.message+" ("+d+")")}return a.u}function qf(a){var b=null;a.u&&(b=oa()+"/api/v1/user?req=load&user="+a.u+"&state="+ef(a,pf));return b}
function vf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=ef(a,pf);d.data=c;b=na(oa()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.pa("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.pa(c),ua("user",""),a.u=null)}}
function ob(a,b,c){a=Za(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}m.mb=function(){};m.va=function(a){this.b&&this.b.va(a);this.G&&this.G.va(a)};
function zc(a,b){for(var c=0;c<a.aa.length;c++)a:{var d=a.aa[c];if(0<=b){if(b&1){d=d.b;d.u=d.u&-8|10;break a}var e=d.b;e.u=e.u&-8|9;if(e=d.ga){for(var e=d.B,f=d.aa,h=!0,g=d.ba>>>e.ea;0<f&&g<e.U.length;)e.U[g].ya&&(e.U[g].ya=h=!1,e.U[g].Lb=!0),f-=e.ua,g++;e=h}if(e)break a}var g=d.ba,k=g+d.aa,l=0,p=d.Ia,n=0,u=0,e=d.J,z=0,f=d.K,v=h=0,O=d.la,B=(1<<O)-1;d.pb&&(O=-O,v=16+O);for(;g<k;){var U=vb(d.B,g);if(d.ga&&U===d.X[l])n+=d.Ca;else{d.X[l]=U;var E=v;v&&(U=U>>8|(U&255)<<8);n<e&&(e=n);for(var wa=0;wa<d.Ca;wa++){var P=
U>>E&B,K=d.ka,ka=n++,P=p[P],xa=void 0,xa=d.na?(K.height-ka-1)*K.width+u:ka+u*K.width,xa=xa*P.length;K.data[xa]=P[0];K.data[xa+1]=P[1];K.data[xa+2]=P[2];K.data[xa+3]=P[3];E+=O}n>z&&(z=n);u<f&&(f=u);u>=h&&(h=u+1)}g+=2;l++;if(n>=d.J&&(n=0,u++,u>d.K))break}d.ga=!0;e<d.J&&(g=z-e,h-=f,d.na?d.ra.putImageData(d.ka,0,0):d.ra.putImageData(d.ka,0,0,e,f,g,h),d.H.drawImage(d.D,0,0,d.D.width,d.D.height,0,0,d.Y,d.M))}}
Ja(function(){for(var a=A(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=y(c),c=A(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=y(f),h=new lf(h,d,!0);cb(h,f);h.ba&&rf(h,h.kb)}});Ea.show.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=$a("Computer",c.id))&&c.ka&&!c.A.ia&&c.kb(-1)}});
Ea.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=$a("Computer",c.id))&&c.A.ia&&df(c,!(!c.w||c.M),!0)}});var xf=0;function yf(a,b,c,d,e,f){e("Loading "+a+"...");na(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Lf(g,a,b,c,d,e,f)})}
function Lf(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ya(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(n){g=null,a=n.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Mf(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Mf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");na(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=g[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],h);Mf(a,b,c)}})}else c(a,null)}
function Nf(a,b,c,d){function e(a){if(void 0===g){var b=h&&A(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=fa(a))}function f(a){e("Error: "+a);k&&(--xf||La(!0));k=!1}var h,g,k=!0;xf++;Xa[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css";n.styleSheet?n.styleSheet.cssText=l:n.appendChild(document.createTextNode(l));p.appendChild(n)}c||
(c="/versions/pc8080/1.22.0/components.xsl");l=function(d,g){g?yf(c,null,null,!1,e,function(d,l){if(l)if(Ya(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var k=g.transformNode(l);k?(h.outerHTML=k,--xf||La(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(k=new XSLTProcessor,k.importStylesheet(l),(k=k.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(k,h),--xf||La(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?yf(b,a,d,!0,e,l):Lf(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(u){f(u.message)}return k}window.embedPC8080=function(a,b,c,d){La(!1);return Nf(a,b,c,d)};window.enableEvents=La;window.sendEvent=Pa;
function Of(a,b,c,d){if(!c&&b){d.push(b);a=Xa[d[0]];b=null;for(var e in a)if(da(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?na(b,null,!0,function(a,b){Pf(b,d)}):Pf(null,d)}else t("Error ("+c+") requesting "+a)}
function Pf(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Xa[f],k={},l;for(l in g){var p=g[l],n=ca(l);if("xml"==n){for(n=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=n.exec(g[l]);){var u=d[2];u&&(g[u]||(p=p.replace(d[0],"")))}d=l=ba(l)}else"xsl"==n&&(e=l=ba(l));k[l]=p}a&&(k[l="css"]=a);b[2]&&(k[l="parms"]=b[2]);b[3]&&(k[l="state"]=b[3]);d&&e?(l=JSON.stringify(k),h+=".js",c=c[1]+"var resources="+l+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),l=h,g=null,k="data:application/javascript,",k=va("Firefox")?k+encodeURIComponent(c):k+encodeURI(c),l&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=k,g.download=l,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+l+"."):(window.open(k),c="Check your browser for a new window/tab containing the requested data"+(l?" ("+l+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n',
c+='<div id="'+f+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+h+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",t(c)):t("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=$a("Computer",a),e=$a("Debugger",a);if(d){var f=bf(d,!0),h=d.K?JSON.stringify(d.K):null;b||(b="/versions/pcjs/1.22.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Sb:h}))return!0;na(b,null,!0,function(c,d,e){Mf(c,d,e,[a,ba(b,!0),h,f])});return!0}t("Unable to identify machine '"+a+"'");return!1};})();
window.savePC=function(a,b,c){var d=$a("Computer",a),e=$a("Debugger",a);if(d){var f=df(d,!0),h=d.K?JSON.stringify(d.K):null;b||(b="/versions/pcjs/1.22.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Sb:h}))return!0;na(b,null,!0,function(c,d,e){Of(c,d,e,[a,ba(b,!0),h,f])});return!0}t("Unable to identify machine '"+a+"'");return!1};})();

View file

@ -4,50 +4,50 @@ function ea(a,b){return-1!==a.indexOf(b,a.length-b.length)}var fa={"&":"&amp;","
function p(a,b,c,d){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),d&&d(a,f,e))});if(b&&"object"==
typeof b){var l="",k;for(k in b)b.hasOwnProperty(k)&&(l&&(l+="&"),l+=k+"="+encodeURIComponent(b[k]));l=l.replace(/%20/g,"+");g.open("POST",a,!!c);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(l)}else g.open("GET",a,!!c),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();c||(f=g.responseText,200!=g.status&&(e=g.status||-1),d&&d(a,f,e),h=[f,e]);return h}function ja(){return"http://"+(window?window.location.host:"www.pcjs.org")}
function r(a){window&&window.alert(a)}function ka(a){var b=!1;window&&(b=window.confirm(a));return b}var la=null;function oa(){if(null==la){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}la=a}return la}function pa(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function qa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function ra(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var ta={init:[],show:[],exit:[]},ua=!1,va=!0;function wa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function xa(a){ta.init.push(a)}
function ya(a){if(va)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){r("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function za(a){!va&&a?(va=!0,ua&&Aa("init")):va=a}function Aa(a){ta[a]&&ya(ta[a])}wa("onload",function(){ua=!0;ya(ta.init)});wa("onpageshow",function(){ya(ta.show)});wa(ra("Opera")||ra("iOS")?"onunload":"onbeforeunload",function(){ya(ta.exit)});
function t(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.ya=b.comment;this.Ya=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Oa=this.id.substr(0,b),this.za=this.id.substr(b+1)):this.za=this.id;this[a]=c;this.h={ea:!1,la:!1,Ia:!1,J:!1,$:!1};this.Ca=null;this.h.$=!1;this.B={};this.H=null;u.push(this)}var Ba=void 0,Ca={};
if(window){Ba||(Ba=window.location.search.substr(1));for(var Da,Ea=/\+/g,Ga=/([^&=]+)=?([^&]*)/g;Da=Ga.exec(Ba);)Ca[decodeURIComponent(Da[1].replace(Ea," "))]=decodeURIComponent(Da[2].replace(Ea," "))}function Ha(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 v(a,b){b||(b=t);a.prototype=Ha(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var u=[],Ia={};function Ja(a,b,c){Ia[a]&&b&&(Ia[a][b]=c)}function w(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<u.length;b++){var d=u[b];a&&d.id.indexOf(a)||c.push(d)}return c}
function qa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function ra(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}var sa={init:[],show:[],exit:[]},ua=!1,va=!0;function wa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function xa(a){sa.init.push(a)}
function ya(a){if(va)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){r("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function za(a){!va&&a?(va=!0,ua&&Aa("init")):va=a}function Aa(a){sa[a]&&ya(sa[a])}wa("onload",function(){ua=!0;ya(sa.init)});wa("onpageshow",function(){ya(sa.show)});wa(ra("Opera")||ra("iOS")?"onunload":"onbeforeunload",function(){ya(sa.exit)});
function t(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.za=b.comment;this.$a=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Qa=this.id.substr(0,b),this.Aa=this.id.substr(b+1)):this.Aa=this.id;this[a]=c;this.h={ia:!1,pa:!1,Ka:!1,K:!1,ba:!1};this.Da=null;this.h.ba=!1;this.B={};this.H=null;u.push(this)}var Ba=void 0,Ca={};
if(window){Ba||(Ba=window.location.search.substr(1));for(var Da,Ea=/\+/g,Fa=/([^&=]+)=?([^&]*)/g;Da=Fa.exec(Ba);)Ca[decodeURIComponent(Da[1].replace(Ea," "))]=decodeURIComponent(Da[2].replace(Ea," "))}function Ga(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 v(a,b){b||(b=t);a.prototype=Ga(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var u=[],Ha={};function Ja(a,b,c){Ha[a]&&b&&(Ha[a][b]=c)}function w(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<u.length;b++){var d=u[b];a&&d.id.indexOf(a)||c.push(d)}return c}
function Ka(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<u.length;d++)if(c)c==u[d]&&(c=null);else if(!(a!=u[d].type||b&&u[d].id.indexOf(b)))return u[d]}return null}function x(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){r(c.message+" ("+a+")")}return b}
function La(a,b){for(var c=y(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var l=g.split(" "),k=0;k<l.length;k++)switch(g=l[k],g){case "pc8080-binding":(g=x(h))&&g.binding&&a.R(g.type,g.binding,h,g.value),k=l.length}}}}
function La(a,b){for(var c=y(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var l=g.split(" "),k=0;k<l.length;k++)switch(g=l[k],g){case "pc8080-binding":(g=x(h))&&g.binding&&a.O(g.type,g.binding,h,g.value),k=l.length}}}}
function y(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}
t.prototype={constructor:t,parent:null,toString:function(){return this.name?this.name:this.id||this.type},R:function(a,b,c){switch(b){case "clear":return this.B[b]||(this.B[b]=c,c.onclick=function(a){return function(){a.B.print&&(a.B.print.value="")}}(this)),!0;case "print":return this.B[b]||(this.Z=this.B[b]=c,c.value="",this.P=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.K=function(a,b,c){this.P(a,"notice",c)}),!0;default:return!1}},log:function(){},P:function(){},status:function(a){this.P(this.za+": "+a)},K:function(a,b){b||r(a)},V:function(){return this.h.J=!0},U:function(a,b){b&&(this.h.J=!1);return!0}};function Ma(a,b){if(a.h.Ia)return a.h.la&&(a.h.la=!1),a.h.Ia=!1;if(a.h.$)return a.P(a.toString()+" error"),!1;a.h.la=b;return a.h.la}function B(a){if(!a.h.$&&(a.h.ea=!0,a.h.ea)){var b=a.Ca;a.Ca=null;b&&b()}}
function Na(a,b){b&&(a.h.ea?b():a.Ca=b);return a.h.ea}
t.prototype={constructor:t,parent:null,toString:function(){return this.name?this.name:this.id||this.type},O:function(a,b,c){switch(b){case "clear":return this.B[b]||(this.B[b]=c,c.onclick=function(a){return function(){a.B.print&&(a.B.print.value="")}}(this)),!0;case "print":return this.B[b]||(this.Z=this.B[b]=c,c.value="",this.R=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.L=function(a,b,c){this.R(a,"notice",c)}),!0;default:return!1}},log:function(){},R:function(){},status:function(a){this.R(this.Aa+": "+a)},L:function(a,b){b||r(a)},X:function(){return this.h.K=!0},W:function(a,b){b&&(this.h.K=!1);return!0}};function Ma(a,b){if(a.h.Ka)return a.h.pa&&(a.h.pa=!1),a.h.Ka=!1;if(a.h.ba)return a.R(a.toString()+" error"),!1;a.h.pa=b;return a.h.pa}function B(a){if(!a.h.ba&&(a.h.ia=!0,a.h.ia)){var b=a.Da;a.Da=null;b&&b()}}
function Na(a,b){b&&(a.h.ia?b():a.Da=b);return a.h.ia}
var Oa="undefined"!==typeof ArrayBuffer,Pa=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function Qa(a){t.call(this,"Panel",a,Qa)}v(Qa);m=Qa.prototype;m.R=function(a,b,c,d){return this.u&&this.u.R(a,b,c,d)||this.a&&this.a.R(a,b,c,d)||this.b&&this.b.R(a,b,c,d)?!0:this.parent.R.call(this,a,b,c,d)};m.aa=function(a,b,c,d){this.u=a;this.o=b;this.a=c;this.H=d;this.b=Ra(a,"Keyboard")};m.V=function(a,b){b||Sa();return!0};m.U=function(){return!0};m.da=function(){};
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function Qa(a){t.call(this,"Panel",a,Qa)}v(Qa);m=Qa.prototype;m.O=function(a,b,c,d){return this.u&&this.u.O(a,b,c,d)||this.a&&this.a.O(a,b,c,d)||this.b&&this.b.O(a,b,c,d)?!0:this.parent.O.call(this,a,b,c,d)};m.ca=function(a,b,c,d){this.u=a;this.o=b;this.a=c;this.H=d;this.b=Ra(a,"Keyboard")};m.X=function(a,b){b||Sa();return!0};m.W=function(){return!0};m.fa=function(){};
function Sa(){for(var a=!1,b=y(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=x(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<u.length;h++)if(u[h].id===f){f=u[h];break a}f=null}f||(a=!0,f=new Qa(e));La(f,d);a&&B(f)}}xa(Sa);
function Ta(a,b,c){t.call(this,"Bus",a,Ta);this.a=b;this.H=c;this.j=a.busWidth||16;this.s=Math.pow(2,this.j);this.i=this.s-1|0;this.c=16>=this.j?10:20>=this.j?12:24>=this.j?14:15;this.f=1<<this.c;this.A=this.f>>2;this.g=this.f-1;this.l=this.s/this.f|0;this.u=this.l-1;this.o=[];this.m=[];this.C=[];this.D=[];a=new C;Ua(a,this.H);this.b=Array(this.l);for(b=0;b<this.l;b++)this.b[b]=a;B(this)}v(Ta);Ta.prototype.reset=function(){};Ta.prototype.V=function(a,b){b||this.reset();return!0};
function Va(a,b,c,d){for(var e=b>>>a.c;0<c&&e<a.b.length;){var f=a.b[e],h=e*a.f,g=a.f-(b-h);g>c&&(g=c);if(f&&f.size){if(f.type==d){if(b+c<=f.ka)return f.Ha+=f.ka-b,f.ka=b,!0;if(b>=f.ka+f.Ha){g=f.size-(b-h);g>c&&(g=c);f.Ha=b-f.ka+g;b=h+a.f;c-=g;e++;continue}}return Wa(1,b,c)}b=new C(b,g,a.f,d);Ua(b,a.H,f);a.b[e++]=b;b=h+a.f;c-=g}return 0>=c?!0:Wa(2,b,c)}Ta.prototype.F=function(a){return this.b[(a&this.i)>>>this.c].ta(a&this.g,a)};
function Xa(a,b){var c=b&a.g,d=(b&a.i)>>>a.c;return c!=a.g?a.b[d].pb(c,b):a.b[d++].ta(c,b)|a.b[d&a.u].ta(0,b+1)<<8}Ta.prototype.M=function(a,b){this.b[(a&this.i)>>>this.c].ua(a&this.g,b&255,a)};function Ya(a,b,c){a.b[(b&a.i)>>>a.c].ab(b&a.g,c&255,b)}function Za(a,b,c){var d=b&a.g,e=(b&a.i)>>>a.c;d!=a.g?a.b[e].qb(d,c&65535,b):(a.b[e++].ua(d,c&255,b),a.b[e&a.u].ua(0,c>>8&255,b+1))}function Wa(a,b,c){r("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var $a;
function Ta(a,b,c){t.call(this,"Bus",a,Ta);this.a=b;this.H=c;this.j=a.busWidth||16;this.s=Math.pow(2,this.j);this.i=this.s-1|0;this.c=16>=this.j?10:20>=this.j?12:24>=this.j?14:15;this.f=1<<this.c;this.A=this.f>>2;this.g=this.f-1;this.l=this.s/this.f|0;this.u=this.l-1;this.o=[];this.m=[];this.C=[];this.D=[];a=new C;Ua(a,this.H);this.b=Array(this.l);for(b=0;b<this.l;b++)this.b[b]=a;B(this)}v(Ta);Ta.prototype.reset=function(){};Ta.prototype.X=function(a,b){b||this.reset();return!0};
function Va(a,b,c,d){for(var e=b>>>a.c;0<c&&e<a.b.length;){var f=a.b[e],h=e*a.f,g=a.f-(b-h);g>c&&(g=c);if(f&&f.size){if(f.type==d){if(b+c<=f.oa)return f.Ia+=f.oa-b,f.oa=b,!0;if(b>=f.oa+f.Ia){g=f.size-(b-h);g>c&&(g=c);f.Ia=b-f.oa+g;b=h+a.f;c-=g;e++;continue}}return Wa(1,b,c)}b=new C(b,g,a.f,d);Ua(b,a.H,f);a.b[e++]=b;b=h+a.f;c-=g}return 0>=c?!0:Wa(2,b,c)}Ta.prototype.F=function(a){return this.b[(a&this.i)>>>this.c].xa(a&this.g,a)};
function Xa(a,b){var c=b&a.g,d=(b&a.i)>>>a.c;return c!=a.g?a.b[d].qb(c,b):a.b[d++].xa(c,b)|a.b[d&a.u].xa(0,b+1)<<8}Ta.prototype.M=function(a,b){this.b[(a&this.i)>>>this.c].ya(a&this.g,b&255,a)};function Ya(a,b,c){a.b[(b&a.i)>>>a.c].cb(b&a.g,c&255,b)}function Za(a,b,c){var d=b&a.g,e=(b&a.i)>>>a.c;d!=a.g?a.b[e].rb(d,c&65535,b):(a.b[e++].ya(d,c&255,b),a.b[e&a.u].ya(0,c>>8&255,b+1))}function Wa(a,b,c){r("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var $a;
if(Oa){var ab=new ArrayBuffer(2);(new DataView(ab)).setUint16(0,256,!0);$a=256===(new Uint16Array(ab))[0]}else $a=!1;var bb=$a;
function C(a,b,c,d){this.id=cb+=2;this.a=null;this.ka=a;this.Ha=b;this.size=c||0;this.type=d||db;this.g=d==eb;Ua(this);this.S=this.Ra=!1;if(c)if(Oa)this.c=new ArrayBuffer(c),this.f=new DataView(this.c,0,c),this.b=new Uint8Array(this.c,0,c),this.l=new Uint16Array(this.c,0,c>>1),this.a=new Int32Array(this.c,0,c>>2),fb(this,bb?gb:hb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;fb(this,ib)}else fb(this)}var db=0,eb=2,cb=0;
C.prototype={constructor:C,parent:null,save:function(){var a,b;if(Oa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.f.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Oa)for(b=0;b<a.length;b++)this.f.setInt32(b<<2,a[b],!0);else this.a=a;return this.S=!0}return!1},o:function(){return 255},B:function(){},m:function(a,b){return this.ta(a++,b++)|this.ta(a,b)<<8},u:function(a,b,c){this.ua(a++,b&255,c++);this.ua(a,b>>8,c)},D:function(a){return this.a[a>>
2]>>>((a&3)<<3)&255},N:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},Y:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.S=!0},za:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.S=!0},A:function(a,b){return this.Ma(a,b)},I:function(a,b){return this.Za(a,b)},O:function(a,b,c){this.g||this.ab(a,b,c)},wa:function(a,
b,c){this.g||this.xa(a,b,c)},s:function(a){return this.b[a]},C:function(a){return this.b[a]},G:function(a){return this.f.getUint16(a,!0)},L:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.l[a>>1]},W:function(a,b){this.b[a]=b;this.S=!0},X:function(a,b){this.b[a]=b;this.S=!0},va:function(a,b){this.f.setUint16(a,b,!0);this.S=!0},ya:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.l[a>>1]=b;this.S=!0}};function Ua(a,b,c){a.H=b;a.i=a.j=0;c&&((a.i=c.i)&&jb(a,kb,!1),(a.j=c.j)&&lb(a,kb,!1))}
function lb(a,b,c){c&&a.j||(a.ua=!a.g&&b[2]||a.B,a.qb=!a.g&&b[3]||a.u);if(c||void 0===c)a.ab=b[2]||a.B,a.xa=b[3]||a.u}function jb(a,b,c){c&&a.i||(a.ta=b[0]||a.o,a.pb=b[1]||a.m);if(c||void 0===c)a.Ma=b[0]||a.o,a.Za=b[1]||a.m}function fb(a,b){b||(b=mb);jb(a,b,void 0);lb(a,b,void 0)}var mb=[],ib=[C.prototype.D,C.prototype.N,C.prototype.Y,C.prototype.za],kb=[C.prototype.A,C.prototype.I,C.prototype.O,C.prototype.wa];
if(Oa)var hb=[C.prototype.s,C.prototype.G,C.prototype.W,C.prototype.va],gb=[C.prototype.C,C.prototype.L,C.prototype.X,C.prototype.ya];
function nb(a,b){t.call(this,"CPU",a,nb);var c=a.cycles||b,d=a.multiplier||1;this.c={};this.c.ja=c;this.c.Ga=0;this.c.ia=d;this.c.Ja=Math.round(this.c.ja/1E4)/100;this.c.fa=this.c.Ja*this.c.ia;this.h.T=!1;this.h.Ta=!1;this.h.Qa=a.autoStart;this.h.Sa=!1;this.h.Aa=!1;this.c.Ea=this.c.ha=0;this.c.Fa=a.csStart;this.c.ma=a.csInterval;this.c.na=a.csStop;this.cb=this.Na.bind(this);B(this)}v(nb);var ob=["power","reset"];m=nb.prototype;
m.aa=function(a,b,c,d){this.u=a;this.o=b;this.H=d;for(b=0;b<ob.length;b++)(c=this.B[ob[b]])&&this.u.R(null,ob[b],c);this.W=(b=Ra(a,"Video"))&&Math.max(b.W,b.bb)||60;this.Y=Ra(a,"ChipSet");a=pb(a,"autoStart");null!=a&&(this.h.Qa="true"==a?!0:"false"==a?!1:!!a);B(this)};m.reset=function(){this.c.Ga=0};m.save=function(){return null};m.restore=function(){return!1};
m.V=function(a,b){if(!b){if(a&&this.restore){qb(this);if(!this.restore(a))return!1;rb(this)}else this.reset();this.P("No debugger detected")}sb(this);return!0};m.U=function(a){return a?this.save():!0};function tb(a){(a.h.Qa||void 0===a.B.run)&&a.Na()}m.Ua=function(){return 0};function rb(a){void 0===a.c.Fa&&(a.c.Fa=0);void 0===a.c.ma&&(a.c.ma=-1);void 0===a.c.na&&(a.c.na=-1);a.h.Aa=0<=a.c.Fa&&0<a.c.ma;a.h.Aa&&(a.c.Ea=0,a.c.ha=a.c.Fa-a.N)}
m.R=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.B[b]=c;a=!0;break;case "run":this.B[b]=c;c.onclick=function(){var a;if(a=d.u)if(a=d.u,a.h.J)a=!0;else{var b=null,c,g=w(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.h.ea);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.h.J);c++);c==g.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.h.ea?"powered yet":"ready yet"+(b.Ca?" (waiting for notification)":""))+".");a=!1}a&&(d.h.T?ub(d,!0):d.Na())};a=!0;break;
case "speed":this.B[b]=c;a=!0;break;case "setSpeed":this.B[b]=c,c.onclick=function(){wb(d,d.c.ia<<1)},c.textContent=this.c.fa.toFixed(2)+"Mhz",a=!0}return a};function xb(a,b,c){a.N+=b;c&&(a.L=a.a=0)}
function yb(a,b){var c=30;c<a.W&&(c=a.W);2>c&&(c=2);var d=1;b&&1<a.c.ia&&a.c.ba&&(d=a.c.ba/a.c.Ja);a.c.Va=Math.round(1E3/30);a.c.jb=Math.floor(a.c.ja/c*d);a.c.Ka=Math.floor(a.c.ja/30*d);a.c.Xa=Math.floor(a.c.ja/a.W*d);a.c.Wa=Math.floor(a.c.ja/2*d);b||(a.c.qa=a.c.Ka,a.c.pa=a.c.Xa,a.c.oa=a.c.Wa);a.c.La=0}function zb(a){return a.N+a.I+a.L-a.a}function qb(a){a.c.ba=0;a.N=a.I=a.L=a.a=0;rb(a);wb(a,1)}
function wb(a,b){if(void 0!==b){.8>a.c.ba/a.c.fa&&(b=1);a.c.ia=b;var c=a.c.Ja*a.c.ia;if(a.c.fa!=c){a.c.fa=c;var c=a.c.fa.toFixed(2)+"Mhz",d=a.B.setSpeed;d&&(d.textContent=c);a.P("target speed: "+c)}}xb(a,a.I);a.I=0;a.c.ga=ha();a.c.ca=0;yb(a)}
m.Na=function(){if(Ma(this,!0)){if(!this.h.T){wb(this);this.u&&this.u.start(this.c.ga,zb(this));this.h.T=!0;this.h.Ta=!0;this.Y&&this.Y.start();var a=this.B.run;a&&(a.textContent="Halt");this.u&&this.u.da(!0)}this.c.La>=this.c.ja&&yb(this,!0);this.c.ra=0;this.c.Da=ha();this.c.ca&&(a=this.c.Da-this.c.ca,a>this.c.Va&&(this.c.ga+=a,this.c.ga>this.c.Da&&(this.c.ga=this.c.Da)));try{do{var b=this.h.Aa?1:this.c.jb;try{this.$a(b)}catch(e){if("number"!=typeof e)throw e;}var c=this.L-this.a;this.I+=c;this.c.ra+=
c;xb(this,0,!0);a=c;if(this.h.Aa){var d=!1;this.c.Ea=this.c.Ea+this.Ua()|0;this.c.ha-=a;0>=this.c.ha&&(this.c.ha+=this.c.ma,d=!0);0<=this.c.na&&this.c.na<=zb(this)&&(this.c.ma=this.c.na=-1,rb(this),ub(this),d=!0);d&&this.P(zb(this)+" cycles: checksum="+n(this.c.Ea))}this.c.pa-=c;0>=this.c.pa&&(this.c.pa+=this.c.Xa,this.u&&Ab(this.u,this.c.Ga++),this.c.Ga>this.W&&(this.c.Ga=0));this.c.oa-=c;0>=this.c.oa&&(this.c.oa+=this.c.Wa,this.u&&this.u.da());this.c.qa-=c;if(0>=this.c.qa){this.c.qa+=this.c.Ka;
break}}while(this.h.T)}catch(e){ub(this);sb(this);this.u&&this.u.stop(ha(),zb(this));Ma(this,!1);b=e.stack||e.message;this.h.$=!0;this.K(b);return}b=setTimeout;c=this.cb;this.c.ca=ha();a=this.c.Va;this.c.ra&&(a=Math.round(a*this.c.ra/this.c.Ka));a-=this.c.ca-this.c.Da;if(d=this.c.ca-this.c.ga)this.c.ba=Math.round(this.I/(10*d))/100,864E5<=d&&(this.N=0,wb(this));if(0>a||this.c.ba<this.c.fa)a=0;this.c.La+=this.c.ra;this.c.ca+=a;b(c,a)}else sb(this),this.u&&this.u.stop(ha(),zb(this))};m.$a=function(){return 0};
function ub(a,b){a.h.la&&(a.h.Ia=!0);a.L-=a.a;a.a=0;xb(a,a.I);a.I=0;if(a.h.T){a.h.T=!1;a.Y&&a.Y.stop();var c=a.B.run;c&&(c.textContent="Run")}a.h.Ba=b}function sb(a){a.u&&(Ab(a.u,-1),a.u.da(void 0))}function Bb(a){this.O=a.model||8080;nb.call(this,a,1E6);this.va=Cb;qb(this);this.h.Ba=this.h.eb=!1;this.xa=0;this.X=[];this.wa=0;Db(this)}v(Bb,nb);function Eb(a,b){a.X.push(b)}m=Bb.prototype;m.reset=function(){this.h.T&&ub(this);Db(this);qb(this);this.h.$=!1;this.parent.reset.call(this)};
function Db(a){a.b=0;a.g=0;a.v=0;a.i=0;a.w=0;a.j=0;a.l=0;a.A=0;D(a,a.wa);Fb(a,0);a.D=0}function Gb(a,b){a.wa=b;D(a,b)}m.Ua=function(){var a=this.b+this.g+this.v+this.i+this.w+this.j+this.l|0;return a=a+this.A+this.m+Hb(this)|0};
m.save=function(){var a=new E(this);G(a,0,[this.b,this.g,this.v,this.i,this.w,this.j,this.l,this.A,this.m,Hb(this)]);G(a,1,[this.D,this.N,this.c.ia]);for(var b=this.o,c=0,d=[],e=0;e<b.l;e++){var f=b.b[e];if(f.S||f.Ra){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,l=0,k=[];g<f.length;){for(var A=f[g],q=g+1;q<f.length&&f[q]===A;)q++;k[l++]=q-g;k[l++]=A;g=q}if(k.length<f.length){f=k;break a}}d[h]=f}}G(a,2,d);return a.data()};
function C(a,b,c,d){this.id=cb+=2;this.a=null;this.oa=a;this.Ia=b;this.size=c||0;this.type=d||db;this.g=d==eb;Ua(this);this.S=this.Ta=!1;if(c)if(Oa)this.c=new ArrayBuffer(c),this.f=new DataView(this.c,0,c),this.b=new Uint8Array(this.c,0,c),this.l=new Uint16Array(this.c,0,c>>1),this.a=new Int32Array(this.c,0,c>>2),fb(this,bb?gb:hb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;fb(this,ib)}else fb(this)}var db=0,eb=2,cb=0;
C.prototype={constructor:C,parent:null,save:function(){var a,b;if(Oa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.f.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Oa)for(b=0;b<a.length;b++)this.f.setInt32(b<<2,a[b],!0);else this.a=a;return this.S=!0}return!1},o:function(){return 255},m:function(){},B:function(a,b){return this.xa(a++,b++)|this.xa(a,b)<<8},u:function(a,b,c){this.ya(a++,b&255,c++);this.ya(a,b>>8,c)},D:function(a){return this.a[a>>
2]>>>((a&3)<<3)&255},N:function(a){var b=a>>2;a=(a&3)<<3;var c=this.a[b]>>a;return 24>a?c&65535:c&255|(this.a[b+1]&255)<<8},V:function(a,b){var c=a>>2,d=(a&3)<<3;this.a[c]=this.a[c]&~(255<<d)|b<<d;this.S=!0},Aa:function(a,b){var c=a>>2,d=(a&3)<<3;24>d?this.a[c]=this.a[c]&~(65535<<d)|b<<d:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.S=!0},A:function(a,b){return this.Oa(a,b)},I:function(a,b){return this.ab(a,b)},P:function(a,b,c){this.g||this.cb(a,b,c)},aa:function(a,
b,c){this.g||this.ga(a,b,c)},s:function(a){return this.b[a]},C:function(a){return this.b[a]},G:function(a){return this.f.getUint16(a,!0)},J:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.l[a>>1]},Y:function(a,b){this.b[a]=b;this.S=!0},U:function(a,b){this.b[a]=b;this.S=!0},$:function(a,b){this.f.setUint16(a,b,!0);this.S=!0},za:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.l[a>>1]=b;this.S=!0}};function Ua(a,b,c){a.H=b;a.i=a.j=0;c&&((a.i=c.i)&&jb(a,kb,!1),(a.j=c.j)&&lb(a,kb,!1))}
function lb(a,b,c){c&&a.j||(a.ya=!a.g&&b[2]||a.m,a.rb=!a.g&&b[3]||a.u);if(c||void 0===c)a.cb=b[2]||a.m,a.ga=b[3]||a.u}function jb(a,b,c){c&&a.i||(a.xa=b[0]||a.o,a.qb=b[1]||a.B);if(c||void 0===c)a.Oa=b[0]||a.o,a.ab=b[1]||a.B}function fb(a,b){b||(b=mb);jb(a,b,void 0);lb(a,b,void 0)}var mb=[],ib=[C.prototype.D,C.prototype.N,C.prototype.V,C.prototype.Aa],kb=[C.prototype.A,C.prototype.I,C.prototype.P,C.prototype.aa];
if(Oa)var hb=[C.prototype.s,C.prototype.G,C.prototype.Y,C.prototype.$],gb=[C.prototype.C,C.prototype.J,C.prototype.U,C.prototype.za];
function nb(a,b){t.call(this,"CPU",a,nb);var c=a.cycles||b,d=a.multiplier||1;this.c={};this.c.na=c;this.c.Ha=0;this.c.ma=d;this.c.La=Math.round(this.c.na/1E4)/100;this.c.ja=this.c.La*this.c.ma;this.h.T=!1;this.h.Va=!1;this.h.Sa=a.autoStart;this.h.Ua=!1;this.h.Ba=!1;this.c.Fa=this.c.la=0;this.c.Ga=a.csStart;this.c.qa=a.csInterval;this.c.ra=a.csStop;this.Ja=this.Pa.bind(this);B(this)}v(nb);var ob=["power","reset"];m=nb.prototype;
m.ca=function(a,b,c,d){this.u=a;this.o=b;this.H=d;for(b=0;b<ob.length;b++)(c=this.B[ob[b]])&&this.u.O(null,ob[b],c);this.Y=(b=Ra(a,"Video"))&&Math.max(b.Y,b.eb)||60;this.V=Ra(a,"ChipSet");a=pb(a,"autoStart");null!=a&&(this.h.Sa="true"==a?!0:"false"==a?!1:!!a);B(this)};m.reset=function(){this.c.Ha=0};m.save=function(){return null};m.restore=function(){return!1};
m.X=function(a,b){if(!b){if(a&&this.restore){qb(this);if(!this.restore(a))return!1;rb(this)}else this.reset();this.R("No debugger detected")}sb(this);return!0};m.W=function(a){return a?this.save():!0};function tb(a){(a.h.Sa||void 0===a.B.run)&&a.Pa()}m.Wa=function(){return 0};function rb(a){void 0===a.c.Ga&&(a.c.Ga=0);void 0===a.c.qa&&(a.c.qa=-1);void 0===a.c.ra&&(a.c.ra=-1);a.h.Ba=0<=a.c.Ga&&0<a.c.qa;a.h.Ba&&(a.c.Fa=0,a.c.la=a.c.Ga-a.N)}
m.O=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.B[b]=c;a=!0;break;case "run":this.B[b]=c;c.onclick=function(){var a;if(a=d.u)if(a=d.u,a.h.K)a=!0;else{var b=null,c,g=w(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.h.ia);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.h.K);c++);c==g.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.h.ia?"powered yet":"ready yet"+(b.Da?" (waiting for notification)":""))+".");a=!1}a&&(d.h.T?ub(d,!0):d.Pa())};a=!0;break;
case "speed":this.B[b]=c;a=!0;break;case "setSpeed":this.B[b]=c,c.onclick=function(){wb(d,d.c.ma<<1)},c.textContent=this.c.ja.toFixed(2)+"Mhz",a=!0}return a};function xb(a,b,c){a.N+=b;c&&(a.J=a.a=0)}
function yb(a,b){var c=30;c<a.Y&&(c=a.Y);2>c&&(c=2);var d=1;b&&1<a.c.ma&&a.c.da&&(d=a.c.da/a.c.La);a.c.Xa=Math.round(1E3/30);a.c.kb=Math.floor(a.c.na/c*d);a.c.Ma=Math.floor(a.c.na/30*d);a.c.Za=Math.floor(a.c.na/a.Y*d);a.c.Ya=Math.floor(a.c.na/2*d);b||(a.c.ua=a.c.Ma,a.c.ta=a.c.Za,a.c.sa=a.c.Ya);a.c.Na=0}function zb(a){return a.N+a.I+a.J-a.a}function qb(a){a.c.da=0;a.N=a.I=a.J=a.a=0;rb(a);wb(a,1)}
function wb(a,b){if(void 0!==b){.8>a.c.da/a.c.ja&&(b=1);a.c.ma=b;var c=a.c.La*a.c.ma;if(a.c.ja!=c){a.c.ja=c;var c=a.c.ja.toFixed(2)+"Mhz",d=a.B.setSpeed;d&&(d.textContent=c);a.R("target speed: "+c)}}xb(a,a.I);a.I=0;a.c.ka=ha();a.c.ea=0;yb(a)}
m.Pa=function(){if(Ma(this,!0)){if(!this.h.T){wb(this);this.u&&this.u.start(this.c.ka,zb(this));this.h.T=!0;this.h.Va=!0;this.V&&this.V.start();var a=this.B.run;a&&(a.textContent="Halt");this.u&&this.u.fa(!0)}this.c.Na>=this.c.na&&yb(this,!0);this.c.va=0;this.c.Ea=ha();this.c.ea&&(a=this.c.Ea-this.c.ea,a>this.c.Xa&&(this.c.ka+=a,this.c.ka>this.c.Ea&&(this.c.ka=this.c.Ea)));try{do{var b=this.h.Ba?1:this.c.kb;try{this.bb(b)}catch(e){if("number"!=typeof e)throw e;}var c=this.J-this.a;this.I+=c;this.c.va+=
c;xb(this,0,!0);a=c;if(this.h.Ba){var d=!1;this.c.Fa=this.c.Fa+this.Wa()|0;this.c.la-=a;0>=this.c.la&&(this.c.la+=this.c.qa,d=!0);0<=this.c.ra&&this.c.ra<=zb(this)&&(this.c.qa=this.c.ra=-1,rb(this),ub(this),d=!0);d&&this.R(zb(this)+" cycles: checksum="+n(this.c.Fa))}this.c.ta-=c;0>=this.c.ta&&(this.c.ta+=this.c.Za,this.u&&Ab(this.u,this.c.Ha++),this.c.Ha>this.Y&&(this.c.Ha=0));this.c.sa-=c;0>=this.c.sa&&(this.c.sa+=this.c.Ya,this.u&&this.u.fa());this.c.ua-=c;if(0>=this.c.ua){this.c.ua+=this.c.Ma;
break}}while(this.h.T)}catch(e){ub(this);sb(this);this.u&&this.u.stop(ha(),zb(this));Ma(this,!1);b=e.stack||e.message;this.h.ba=!0;this.L(b);return}b=setTimeout;c=this.Ja;this.c.ea=ha();a=this.c.Xa;this.c.va&&(a=Math.round(a*this.c.va/this.c.Ma));a-=this.c.ea-this.c.Ea;if(d=this.c.ea-this.c.ka)this.c.da=Math.round(this.I/(10*d))/100,864E5<=d&&(this.N=0,wb(this));if(0>a||this.c.da<this.c.ja)a=0;this.c.Na+=this.c.va;this.c.ea+=a;b(c,a)}else sb(this),this.u&&this.u.stop(ha(),zb(this))};m.bb=function(){return 0};
function ub(a,b){a.h.pa&&(a.h.Ka=!0);a.J-=a.a;a.a=0;xb(a,a.I);a.I=0;if(a.h.T){a.h.T=!1;a.V&&a.V.stop();var c=a.B.run;c&&(c.textContent="Run")}a.h.Ca=b}function sb(a){a.u&&(Ab(a.u,-1),a.u.fa(void 0))}function Bb(a){this.P=a.model||8080;nb.call(this,a,1E6);this.$=Cb;qb(this);this.h.Ca=this.h.fb=!1;this.ga=0;this.U=[];this.aa=0;Db(this)}v(Bb,nb);function Eb(a,b){a.U.push(b)}m=Bb.prototype;m.reset=function(){this.h.T&&ub(this);Db(this);qb(this);this.h.ba=!1;this.parent.reset.call(this)};
function Db(a){a.b=0;a.g=0;a.v=0;a.i=0;a.w=0;a.j=0;a.l=0;a.A=0;D(a,a.aa);Fb(a,0);a.D=0}function Gb(a,b){a.aa=b;D(a,b)}m.Wa=function(){var a=this.b+this.g+this.v+this.i+this.w+this.j+this.l|0;return a=a+this.A+this.m+Hb(this)|0};
m.save=function(){var a=new E(this);G(a,0,[this.b,this.g,this.v,this.i,this.w,this.j,this.l,this.A,this.m,Hb(this)]);G(a,1,[this.D,this.N,this.c.ma]);for(var b=this.o,c=0,d=[],e=0;e<b.l;e++){var f=b.b[e];if(f.S||f.Ta){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,l=0,k=[];g<f.length;){for(var A=f[g],q=g+1;q<f.length&&f[q]===A;)q++;k[l++]=q-g;k[l++]=A;g=q}if(k.length<f.length){f=k;break a}}d[h]=f}}G(a,2,d);return a.data()};
m.restore=function(a){var b=a[0];this.b=b[0];this.g=b[1];this.v=b[2];this.i=b[3];this.w=b[4];this.j=b[5];this.l=b[6];this.A=b[7]&65535;D(this,b[8]);Fb(this,b[9]);b=a[1];this.D=b[0];this.N=b[1];wb(this,b[3]);a:{b=this.o;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.A){for(var f=0,h=Array(b.A),g=0;g<e.length-1;)for(var l=e[g++],k=e[g++];l--;)h[f++]=k;e=h}f=b.b[d];if(!f||!f.restore(e)){r("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.R=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.B[b]=c;this.xa++;d=!0;break;default:d=this.parent.R.call(this,a,b,c)}return d};function Ib(a){return a.g<<8|a.v}function Jb(a,b){a.g=b>>8&255;a.v=b&255}function H(a){return a.i<<8|a.w}function Kb(a,b){a.i=b>>8&255;a.w=b&255}function I(a){return a.j<<8|a.l}
m.O=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.B[b]=c;this.ga++;d=!0;break;default:d=this.parent.O.call(this,a,b,c)}return d};function Ib(a){return a.g<<8|a.v}function Jb(a,b){a.g=b>>8&255;a.v=b&255}function H(a){return a.i<<8|a.w}function Kb(a,b){a.i=b>>8&255;a.w=b&255}function I(a){return a.j<<8|a.l}
function J(a,b){a.j=b>>8&255;a.l=b&255}function D(a,b){a.m=b&65535}function K(a){return a.f&256?1:0}function Lb(a){return Pa[a.s&255]?4:0}function Hb(a){return a.G&-214|(a.s&128?128:0)|(a.f&255?0:64)|((a.s^a.C)&16?16:0)|Lb(a)|K(a)}function Fb(a,b){a.f=a.s=a.C=0;b&1&&(a.f|=256);b&4||(a.s|=1);b&16&&(a.C|=16);b&64||(a.f|=255);b&128&&(a.s^=192);a.G=a.G&-513|b&512|2}function M(a,b){a.C=a.b^b;return a.s=(a.f=a.b+b)&255}function N(a,b){a.C=a.b^b;return a.s=(a.f=a.b+b+(a.f&256?1:0))&255}
function O(a,b){a.f=a.s=a.C=a.b&b;(a.b|b)&8&&(a.C^=16);return a.f}function Mb(a,b){a.C=b^255;b=a.s=b+255&255;a.f=a.f&-256|b;return b}function Nb(a,b){a.C=b;b=a.s=b+1&255;a.f=a.f&-256|b;return b}function P(a,b){return a.s=a.f=a.C=a.b|b}function Q(a,b){b^=255;a.C=a.b^b;return a.s=(a.f=a.b+b+1^256)&255}function R(a,b){b^=255;a.C=a.b^b;return a.s=(a.f=a.b+b+(a.f&256?0:1)^256)&255}function S(a,b){return a.s=a.f=a.C=a.b^b}m.F=function(a){return this.o.F(a)};m.M=function(a,b){this.o.M(a,b)};
function T(a){var b=a.F(a.m);D(a,a.m+1);return b}function U(a){var b=Xa(a.o,a.m);D(a,a.m+2);return b}function V(a){var b=Xa(a.o,a.A);a.A=a.A+2&65535;return b}function W(a,b){a.A=a.A-2&65535;Za(a.o,a.A,b)}function X(a,b,c,d){d=d||2;a.B[b]&&(void 0===c&&(a.h.$=!0,a.K("Value for "+b+" is invalid"),ub(a)),c=!a.h.T||a.h.Sa?n(c,d):"--------".substr(0,d),a.B[b].textContent!=c&&(a.B[b].textContent=c))}
m.da=function(a){this.xa&&(a||!this.h.T||this.h.Sa)&&(X(this,"A",this.b),X(this,"B",this.g),X(this,"C",this.v),X(this,"BC",Ib(this),4),X(this,"D",this.i),X(this,"E",this.w),X(this,"DE",H(this),4),X(this,"H",this.j),X(this,"L",this.l),X(this,"HL",I(this),4),X(this,"SP",this.A,4),X(this,"PC",this.m,4),a=Hb(this),X(this,"PS",a,4),X(this,"IF",a&512?1:0,1),X(this,"SF",a&128?1:0,1),X(this,"ZF",a&64?1:0,1),X(this,"AF",a&16?1:0,1),X(this,"PF",a&4?1:0,1),X(this,"CF",a&1?1:0,1));if(a=this.B.speed)a.textContent=
this.h.T&&this.c.ba?this.c.ba.toFixed(2)+"Mhz":"Stopped"};m.$a=function(a){this.h.Ba=!0;this.h.eb=!1;this.h.Ta=!1;this.L=this.a=a;do{if(a=this.D)this.D&8&&this.G&512?(a=199|(this.D&7)<<3,this.D&=-16,this.G&=-513,this.va[a].call(this),a=!0):a=!1,a=!a;if(a&&this.D&16){this.a=0;break}this.va[T(this)].call(this)}while(0<this.a);return this.h.Ba?this.L-this.a:void 0===this.h.Ba?0:-1};xa(function(){for(var a=y(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Bb(d);La(d,c)}});
function T(a){var b=a.F(a.m);D(a,a.m+1);return b}function U(a){var b=Xa(a.o,a.m);D(a,a.m+2);return b}function V(a){var b=Xa(a.o,a.A);a.A=a.A+2&65535;return b}function W(a,b){a.A=a.A-2&65535;Za(a.o,a.A,b)}function X(a,b,c,d){d=d||2;a.B[b]&&(void 0===c&&(a.h.ba=!0,a.L("Value for "+b+" is invalid"),ub(a)),c=!a.h.T||a.h.Ua?n(c,d):"--------".substr(0,d),a.B[b].textContent!=c&&(a.B[b].textContent=c))}
m.fa=function(a){this.ga&&(a||!this.h.T||this.h.Ua)&&(X(this,"A",this.b),X(this,"B",this.g),X(this,"C",this.v),X(this,"BC",Ib(this),4),X(this,"D",this.i),X(this,"E",this.w),X(this,"DE",H(this),4),X(this,"H",this.j),X(this,"L",this.l),X(this,"HL",I(this),4),X(this,"SP",this.A,4),X(this,"PC",this.m,4),a=Hb(this),X(this,"PS",a,4),X(this,"IF",a&512?1:0,1),X(this,"SF",a&128?1:0,1),X(this,"ZF",a&64?1:0,1),X(this,"AF",a&16?1:0,1),X(this,"PF",a&4?1:0,1),X(this,"CF",a&1?1:0,1));if(a=this.B.speed)a.textContent=
this.h.T&&this.c.da?this.c.da.toFixed(2)+"Mhz":"Stopped"};m.bb=function(a){this.h.Ca=!0;this.h.fb=!1;this.h.Va=!1;this.J=this.a=a;do{if(a=this.D)this.D&8&&this.G&512?(a=199|(this.D&7)<<3,this.D&=-16,this.G&=-513,this.$[a].call(this),a=!0):a=!1,a=!a;if(a&&this.D&16){this.a=0;break}this.$[T(this)].call(this)}while(0<this.a);return this.h.Ca?this.J-this.a:void 0===this.h.Ca?0:-1};xa(function(){for(var a=y(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Bb(d);La(d,c)}});
function Ob(){this.a-=4}function Pb(){D(this,U(this));this.a-=10}function Qb(){D(this,V(this));this.a-=10}function Rb(){var a=U(this);W(this,this.m);D(this,a);this.a-=17}
var Cb=[Ob,function(){Jb(this,U(this));this.a-=10},function(){this.M(Ib(this),this.b);this.a-=7},function(){Jb(this,Ib(this)+1);this.a-=5},function(){this.g=Nb(this,this.g);this.a-=5},function(){this.g=Mb(this,this.g);this.a-=5},function(){this.g=T(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;this.f=this.f&255|a&256;this.a-=4},Ob,function(){var a;J(this,a=I(this)+Ib(this));this.f=this.f&255|a>>8&256;this.a-=10},function(){this.b=this.F(Ib(this));this.a-=7},function(){Jb(this,Ib(this)-
1);this.a-=5},function(){this.v=Nb(this,this.v);this.a-=5},function(){this.v=Mb(this,this.v);this.a-=5},function(){this.v=T(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;this.f=this.f&255|a;this.a-=4},Ob,function(){Kb(this,U(this));this.a-=10},function(){this.M(H(this),this.b);this.a-=7},function(){Kb(this,H(this)+1);this.a-=5},function(){this.i=Nb(this,this.i);this.a-=5},function(){this.i=Mb(this,this.i);this.a-=5},function(){this.i=T(this);this.a-=7},function(){var a=this.b<<
@ -58,7 +58,7 @@ T(this));this.a-=10},function(){this.f|=256;this.a-=4},Ob,function(){var a;J(thi
5},function(){this.g=this.w;this.a-=5},function(){this.g=this.j;this.a-=5},function(){this.g=this.l;this.a-=5},function(){this.g=this.F(I(this));this.a-=7},function(){this.g=this.b;this.a-=5},function(){this.v=this.g;this.a-=5},function(){this.a-=5},function(){this.v=this.i;this.a-=5},function(){this.v=this.w;this.a-=5},function(){this.v=this.j;this.a-=5},function(){this.v=this.l;this.a-=5},function(){this.v=this.F(I(this));this.a-=7},function(){this.v=this.b;this.a-=5},function(){this.i=this.g;this.a-=
5},function(){this.i=this.v;this.a-=5},function(){this.a-=5},function(){this.i=this.w;this.a-=5},function(){this.i=this.j;this.a-=5},function(){this.i=this.l;this.a-=5},function(){this.i=this.F(I(this));this.a-=7},function(){this.i=this.b;this.a-=5},function(){this.w=this.g;this.a-=5},function(){this.w=this.v;this.a-=5},function(){this.w=this.i;this.a-=5},function(){this.a-=5},function(){this.w=this.j;this.a-=5},function(){this.w=this.l;this.a-=5},function(){this.w=this.F(I(this));this.a-=7},function(){this.w=
this.b;this.a-=5},function(){this.j=this.g;this.a-=5},function(){this.j=this.v;this.a-=5},function(){this.j=this.i;this.a-=5},function(){this.j=this.w;this.a-=5},function(){this.a-=5},function(){this.j=this.l;this.a-=5},function(){this.j=this.F(I(this));this.a-=7},function(){this.j=this.b;this.a-=5},function(){this.l=this.g;this.a-=5},function(){this.l=this.v;this.a-=5},function(){this.l=this.i;this.a-=5},function(){this.l=this.w;this.a-=5},function(){this.l=this.j;this.a-=5},function(){this.a-=5},
function(){this.l=this.F(I(this));this.a-=7},function(){this.l=this.b;this.a-=5},function(){this.M(I(this),this.g);this.a-=7},function(){this.M(I(this),this.v);this.a-=7},function(){this.M(I(this),this.i);this.a-=7},function(){this.M(I(this),this.w);this.a-=7},function(){this.M(I(this),this.j);this.a-=7},function(){this.M(I(this),this.l);this.a-=7},function(){var a=this.m-1;if(this.X.length)for(var b=0;b<this.X.length;b++)if(this.X[b](a))return;this.D|=16;this.a-=7;this.G&512||ub(this)},function(){this.M(I(this),
function(){this.l=this.F(I(this));this.a-=7},function(){this.l=this.b;this.a-=5},function(){this.M(I(this),this.g);this.a-=7},function(){this.M(I(this),this.v);this.a-=7},function(){this.M(I(this),this.i);this.a-=7},function(){this.M(I(this),this.w);this.a-=7},function(){this.M(I(this),this.j);this.a-=7},function(){this.M(I(this),this.l);this.a-=7},function(){var a=this.m-1;if(this.U.length)for(var b=0;b<this.U.length;b++)if(this.U[b](a))return;this.D|=16;this.a-=7;this.G&512||ub(this)},function(){this.M(I(this),
this.b);this.a-=7},function(){this.b=this.g;this.a-=5},function(){this.b=this.v;this.a-=5},function(){this.b=this.i;this.a-=5},function(){this.b=this.w;this.a-=5},function(){this.b=this.j;this.a-=5},function(){this.b=this.l;this.a-=5},function(){this.b=this.F(I(this));this.a-=7},function(){this.a-=5},function(){this.b=M(this,this.g);this.a-=4},function(){this.b=M(this,this.v);this.a-=4},function(){this.b=M(this,this.i);this.a-=4},function(){this.b=M(this,this.w);this.a-=4},function(){this.b=M(this,
this.j);this.a-=4},function(){this.b=M(this,this.l);this.a-=4},function(){this.b=M(this,this.F(I(this)));this.a-=7},function(){this.b=M(this,this.b);this.a-=4},function(){this.b=N(this,this.g);this.a-=4},function(){this.b=N(this,this.v);this.a-=4},function(){this.b=N(this,this.i);this.a-=4},function(){this.b=N(this,this.w);this.a-=4},function(){this.b=N(this,this.j);this.a-=4},function(){this.b=N(this,this.l);this.a-=4},function(){this.b=N(this,this.F(I(this)));this.a-=7},function(){this.b=N(this,
this.b);this.a-=4},function(){this.b=Q(this,this.g);this.a-=4},function(){this.b=Q(this,this.v);this.a-=4},function(){this.b=Q(this,this.i);this.a-=4},function(){this.b=Q(this,this.w);this.a-=4},function(){this.b=Q(this,this.j);this.a-=4},function(){this.b=Q(this,this.l);this.a-=4},function(){this.b=Q(this,this.F(I(this)));this.a-=7},function(){this.b=Q(this,this.b);this.a-=4},function(){this.b=R(this,this.g);this.a-=4},function(){this.b=R(this,this.v);this.a-=4},function(){this.b=R(this,this.i);
@ -72,59 +72,62 @@ T(this),b=this.o,c=this.m+-2&65535,d=1,e=0,f=0;0<d;){var h=b.o[a],g=b.C[a]||1,l=
U(this);Lb(this)||D(this,a);this.a-=10},function(){var a=V(this);W(this,I(this));J(this,a);this.a-=18},function(){var a=U(this);Lb(this)||(W(this,this.m),D(this,a),this.a-=6);this.a-=11},function(){W(this,I(this));this.a-=11},function(){this.b=O(this,T(this));this.a-=7},function(){W(this,this.m);D(this,32);this.a-=11},function(){Lb(this)&&(D(this,V(this)),this.a-=6);this.a-=5},function(){D(this,I(this));this.a-=5},function(){var a=U(this);Lb(this)&&D(this,a);this.a-=10},function(){var a=I(this);J(this,
H(this));Kb(this,a);this.a-=5},function(){var a=U(this);Lb(this)&&(W(this,this.m),D(this,a),this.a-=6);this.a-=11},Rb,function(){this.b=S(this,T(this));this.a-=7},function(){W(this,this.m);D(this,40);this.a-=11},function(){this.s&128||(D(this,V(this)),this.a-=6);this.a-=5},function(){var a=V(this);Fb(this,a);this.b=a>>8;this.a-=10},function(){var a=U(this);this.s&128||D(this,a);this.a-=10},function(){this.G&=-513;this.a-=4},function(){var a=U(this);this.s&128||(W(this,this.m),D(this,a),this.a-=6);
this.a-=11},function(){W(this,Hb(this)&255|this.b<<8);this.a-=11},function(){this.b=P(this,T(this));this.a-=7},function(){W(this,this.m);D(this,48);this.a-=11},function(){this.s&128&&(D(this,V(this)),this.a-=6);this.a-=5},function(){this.A=I(this)&65535;this.a-=5},function(){var a=U(this);this.s&128&&D(this,a);this.a-=10},function(){this.G|=512;this.a-=4},function(){var a=U(this);this.s&128&&(W(this,this.m),D(this,a),this.a-=6);this.a-=11},Rb,function(){Q(this,T(this));this.a-=7},function(){W(this,
this.m);D(this,56);this.a-=11}];function Y(a){t.call(this,"ChipSet",a,Y);var b=a.model;b&&!Sb[b]&&r("Unrecognized ChipSet model: "+b);this.O=Sb[b]||Tb;a.sound&&(this.m=null,window&&(this.m=window.AudioContext||window.webkitAudioContext),this.m&&new this.m);B(this)}v(Y);var Tb=1978.1,Sb={SI1978:Tb};m=Y.prototype;m.R=function(){return!1};
m.aa=function(a,b,c,d){this.o=b;this.a=c;this.H=d;this.u=a;if(this.O==Tb){var e;a=Ub;void 0===e&&(e=0);for(var f in a){c=b;d=+f+e;var h=a[f].bind(this);if(void 0!==h)for(var g=+f+e;g<=d;g++)void 0!==c.o[g]?r("Input port 0x"+n(g,4)+" already registered"):c.o[g]=[h,!1]}var l;e=Vb;void 0===l&&(l=0);for(var k in e)if(f=b,a=+k+l,c=e[k].bind(this),void 0!==c)for(d=+k+l;d<=a;d++)void 0!==f.m[d]?r("Output port 0x"+n(d,4)+" already registered"):f.m[d]=[c,!1]}};
m.V=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.U=function(a){return a?this.save():!0};m.reset=function(){this.f=this.g=this.c=this.b=this.l=this.j=this.i=0};m.save=function(){var a=new E(this);this.O==Tb&&G(a,0,[this.i,this.j,this.l,this.b,this.c,this.f,this.g]);return a.data()};m.restore=function(a){a=a[0];this.O==Tb&&(this.i=a[0],this.j=a[1],this.l=a[2],this.b=a[3],this.c=a[4],this.f=a[5],this.g=a[6]);return!0};m.start=function(){};m.stop=function(){};
m.gb=function(){return this.i};m.hb=function(){return this.j};m.ib=function(){return this.l};m.fb=function(){return this.b>>8-this.c&255};m.kb=function(a,b){this.c=b};m.mb=function(a,b){this.f=b};m.lb=function(a,b){this.b=b<<8|this.b>>8};m.nb=function(a,b){this.g=b};m.ob=function(){};var Ub={0:Y.prototype.gb,1:Y.prototype.hb,2:Y.prototype.ib,3:Y.prototype.fb},Vb={2:Y.prototype.kb,3:Y.prototype.mb,4:Y.prototype.lb,5:Y.prototype.nb,6:Y.prototype.ob};
this.m);D(this,56);this.a-=11}];function Y(a){t.call(this,"ChipSet",a,Y);var b=a.model;b&&!Sb[b]&&r("Unrecognized ChipSet model: "+b);this.P=Sb[b]||Tb;a.sound&&(this.m=null,window&&(this.m=window.AudioContext||window.webkitAudioContext),this.m&&new this.m);B(this)}v(Y);var Tb=1978.1,Sb={SI1978:Tb};m=Y.prototype;m.O=function(){return!1};
m.ca=function(a,b,c,d){this.o=b;this.a=c;this.H=d;this.u=a;if(this.P==Tb){var e;a=Ub;void 0===e&&(e=0);for(var f in a){c=b;d=+f+e;var h=a[f].bind(this);if(void 0!==h)for(var g=+f+e;g<=d;g++)void 0!==c.o[g]?r("Input port 0x"+n(g,4)+" already registered"):c.o[g]=[h,!1]}var l;e=Vb;void 0===l&&(l=0);for(var k in e)if(f=b,a=+k+l,c=e[k].bind(this),void 0!==c)for(d=+k+l;d<=a;d++)void 0!==f.m[d]?r("Output port 0x"+n(d,4)+" already registered"):f.m[d]=[c,!1]}};
m.X=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.W=function(a){return a?this.save():!0};m.reset=function(){this.f=this.g=this.c=this.b=this.l=this.j=this.i=0};m.save=function(){var a=new E(this);this.P==Tb&&G(a,0,[this.i,this.j,this.l,this.b,this.c,this.f,this.g]);return a.data()};m.restore=function(a){a=a[0];this.P==Tb&&(this.i=a[0],this.j=a[1],this.l=a[2],this.b=a[3],this.c=a[4],this.f=a[5],this.g=a[6]);return!0};m.start=function(){};m.stop=function(){};
m.hb=function(){return this.i};m.ib=function(){return this.j};m.jb=function(){return this.l};m.gb=function(){return this.b>>8-this.c&255};m.lb=function(a,b){this.c=b};m.nb=function(a,b){this.f=b};m.mb=function(a,b){this.b=b<<8|this.b>>8};m.ob=function(a,b){this.g=b};m.pb=function(){};var Ub={0:Y.prototype.hb,1:Y.prototype.ib,2:Y.prototype.jb,3:Y.prototype.gb},Vb={2:Y.prototype.lb,3:Y.prototype.nb,4:Y.prototype.mb,5:Y.prototype.ob,6:Y.prototype.pb};
xa(function(){for(var a=y(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Y(d);La(d,c)}});function Wb(a){t.call(this,"ROM",a,Wb);this.b=null;this.j=a.addr;this.c=a.size;this.l=a.writable;this.f=a.alias;this.g=a.file;this.m=ca(this.g);if(this.g){a=this.g;var b=da(this.m);"json"!=b&&"hex"!=b&&(a=ja()+"/api/v1/dump?file="+this.g+"&format=bytes&decimal=true");var c=this;p(a,null,!0,function(a,b,f){Xb(c,a,b,f)})}}v(Wb);var Yb=[0,5];
Wb.prototype.aa=function(a,b,c,d){this.o=b;this.a=c;this.H=d;Zb(this)};Wb.prototype.V=function(){this.i&&(this.H&&this.H.a(this.id,this.j,this.c,this.i),delete this.i);return!0};Wb.prototype.U=function(){return!0};
function Xb(a,b,c,d){if(d)a.K("Unable to load system ROM (error "+d+": "+b+")");else{Ja(a.Oa,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.b=f;else if(h)for(a.b=Array(4*h.length),d=c=0;c<h.length;c++)a.b[d++]=h[c]&255,a.b[d++]=h[c]>>8&255,a.b[d++]=h[c]>>16&255,a.b[d++]=h[c]>>24&255;else a.b=e;a.i=e.symbols;if(!a.b.length){r("Empty ROM: "+b);return}if(1==a.b.length){r(a.b[0]);return}}catch(g){a.K("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
Wb.prototype.ca=function(a,b,c,d){this.o=b;this.a=c;this.H=d;Zb(this)};Wb.prototype.X=function(){this.i&&(this.H&&this.H.a(this.id,this.j,this.c,this.i),delete this.i);return!0};Wb.prototype.W=function(){return!0};
function Xb(a,b,c,d){if(d)a.L("Unable to load system ROM (error "+d+": "+b+")");else{Ja(a.Qa,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.b=f;else if(h)for(a.b=Array(4*h.length),d=c=0;c<h.length;c++)a.b[d++]=h[c]&255,a.b[d++]=h[c]>>8&255,a.b[d++]=h[c]>>16&255,a.b[d++]=h[c]>>24&255;else a.b=e;a.i=e.symbols;if(!a.b.length){r("Empty ROM: "+b);return}if(1==a.b.length){r(a.b[0]);return}}catch(g){a.L("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=ba(b[e]);Zb(a)}}
function Zb(a){if(!Na(a))if(!a.g)B(a);else if(a.b&&a.o){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+n(a.b.length)+") does not match specified size ("+("0x"+n(a.c))+")";a.h.$=!0;a.K(b)}else if($b(a,a.j)){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.o,h=d.c,g=[],l=d.j>>>f.c;0<h&&l<f.b.length;)g.push(f.b[l++]),h-=f.f;f=d.o;d=d.c;h=0;for(e>>>=f.c;0<d&&e<f.b.length;){l=g[h++];if(!l)break;f.b[e++]=l;d-=f.f}}delete a.b}B(a)}}
function $b(a,b){if(Va(a.o,b,a.c,a.l?1:eb)){var c;for(c=0;c<a.b.length;c++)Ya(a.o,b+c,a.b[c]);if(a.l&&256==b){for(c=0;c<Yb.length;c++)Ya(a.o,Yb[c],118);Eb(a.a,function(a){return function(b){if(0<=Yb.indexOf(b)){var c=!1,h=a.a,g=a.H;if(5==b)switch(c=!0,h.v){case 2:ac(a,String.fromCharCode(h.w));break;case 9:for(var l=H(h),k="",A=255;A--;){var q=a.a.F(l++);if(36==q)break;k+=String.fromCharCode(q)}ac(a,k);break;default:c=!1}c?Qb.call(h):g&&(a.P("\nCP/M vector 0x"+n(b,4)),D(h,b),ub(g));b=!0}else b=!1;
return b}}(a));Gb(a.a,b)}return!0}return!1}function ac(a,b){b=b.replace(/\r/g,"");a.Z&&(a.Z.value+=b,a.Z.scrollTop=a.Z.scrollHeight)}xa(function(){for(var a=y(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Wb(d);La(d,c)}});function dc(a){t.call(this,"RAM",a,dc);this.f=a.addr;this.c=a.size;this.b=!1}v(dc);m=dc.prototype;m.aa=function(a,b,c,d){this.o=b;this.a=c;this.H=d;B(this)};m.V=function(a,b){b||this.reset();return!0};m.U=function(a){return a?this.save():!0};
m.reset=function(){!this.b&&this.c&&Va(this.o,this.f,this.c,1)&&(this.b=!0,this.status(Math.floor(this.c/1024)+"Kb allocated"));this.b||r("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};xa(function(){for(var a=y(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new dc(d);La(d,c)}});function ec(a){t.call(this,"Keyboard",a,ec);B(this)}v(ec);
function Zb(a){if(!Na(a))if(!a.g)B(a);else if(a.b&&a.o){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size (0x"+n(a.b.length)+") does not match specified size ("+("0x"+n(a.c))+")";a.h.ba=!0;a.L(b)}else if($b(a,a.j)){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.o,h=d.c,g=[],l=d.j>>>f.c;0<h&&l<f.b.length;)g.push(f.b[l++]),h-=f.f;f=d.o;d=d.c;h=0;for(e>>>=f.c;0<d&&e<f.b.length;){l=g[h++];if(!l)break;f.b[e++]=l;d-=f.f}}delete a.b}B(a)}}
function $b(a,b){if(Va(a.o,b,a.c,a.l?1:eb)){var c;for(c=0;c<a.b.length;c++)Ya(a.o,b+c,a.b[c]);if(a.l&&256==b){for(c=0;c<Yb.length;c++)Ya(a.o,Yb[c],118);Eb(a.a,function(a){return function(b){if(0<=Yb.indexOf(b)){var c=!1,h=a.a,g=a.H;if(5==b)switch(c=!0,h.v){case 2:ac(a,String.fromCharCode(h.w));break;case 9:for(var l=H(h),k="",A=255;A--;){var q=a.a.F(l++);if(36==q)break;k+=String.fromCharCode(q)}ac(a,k);break;default:c=!1}c?Qb.call(h):g&&(a.R("\nCP/M vector 0x"+n(b,4)),D(h,b),ub(g));b=!0}else b=!1;
return b}}(a));Gb(a.a,b)}return!0}return!1}function ac(a,b){b=b.replace(/\r/g,"");a.Z&&(a.Z.value+=b,a.Z.scrollTop=a.Z.scrollHeight)}xa(function(){for(var a=y(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Wb(d);La(d,c)}});function bc(a){t.call(this,"RAM",a,bc);this.f=a.addr;this.c=a.size;this.b=!1}v(bc);m=bc.prototype;m.ca=function(a,b,c,d){this.o=b;this.a=c;this.H=d;B(this)};m.X=function(a,b){b||this.reset();return!0};m.W=function(a){return a?this.save():!0};
m.reset=function(){!this.b&&this.c&&Va(this.o,this.f,this.c,1)&&(this.b=!0,this.status(Math.floor(this.c/1024)+"Kb allocated"));this.b||r("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};xa(function(){for(var a=y(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new bc(d);La(d,c)}});function ec(a){t.call(this,"Keyboard",a,ec);B(this)}v(ec);
xa(function(){for(var a=y(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new ec(d);La(d,c)}});
function fc(a,b,c){t.call(this,"Video",a,fc);this.s=a.screenWidth;this.j=a.screenHeight;this.m=a.bufferAddr;this.f=a.bufferCols;this.g=a.bufferRows;this.D=a.bufferBits||1;this.Y=a.bufferLeft||0;this.G=a.bufferRotate;this.bb=a.interruptRate;this.W=a.refreshRate||60;this.b=c;this.b.webkitImageSmoothingEnabled=!1;this.b.mozImageSmoothingEnabled=!1;this.b.msImageSmoothingEnabled=!1;this.b.imageSmoothingEnabled=!1;this.O=a.screenRotate;90==this.O&&(this.b.translate(0,this.j),this.b.rotate(-this.O*Math.PI/
180),this.b.scale(this.j/this.s,this.s/this.j));this.X=[[0,0,0,255],[255,255,255,255]];a=this.f;b=this.g;this.G&&(a=this.g,b=this.f);this.C=this.b.createImageData(a,b);this.c=document.createElement("canvas");this.c.width=a;this.c.height=b;this.I=this.c.getContext("2d")}v(fc);
fc.prototype.aa=function(a,b,c,d){this.u=a;this.o=b;this.a=c;this.H=d;this.l=(this.f*this.D>>3)*this.g;Va(this.o,this.m,this.l,3)&&(this.L=this.l>>1,this.N=16/this.D|0,this.A=!1,void 0===this.i||this.i.length!=this.L)&&(this.i=Array(this.L));B(this)};
function fc(a,b,c,d,e){var f=this;this.P=ra("Gecko/");var h=["","moz","webkit","ms"];t.call(this,"Video",a,fc);this.s=a.screenWidth;this.l=a.screenHeight;this.C=a.bufferAddr;this.i=a.bufferCols;this.j=a.bufferRows;this.I=a.bufferBits||1;this.Ja=a.bufferLeft||0;this.J=a.bufferRotate;this.eb=a.interruptRate;this.Y=a.refreshRate||60;this.f=b;this.g=c;this.U=d||b||null;b=a.smoothing;(c=Ca.smoothing)&&(b="true"==c?!0:!1);if(null!=b)for(c=0;c<h.length;c++)d=(d=h[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",
this.g[d]=b;this.aa=a.screenRotate;90==this.aa&&(this.g.translate(0,this.l),this.g.rotate(-this.aa*Math.PI/180),this.g.scale(this.l/this.s,this.s/this.l));this.ga=[[0,0,0,255],[255,255,255,255]];a=this.i;b=this.j;this.J&&(a=this.j,b=this.i);this.G=this.g.createImageData(a,b);this.c=document.createElement("canvas");this.c.width=a;this.c.height=b;this.N=this.c.getContext("2d");if(this.b=e)if(this.b.ha=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.ha){for(c=
0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){gc(f,document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement?!0:!1)},!1);break}for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){gc(f,null)},!1);break}}}v(fc);
fc.prototype.ca=function(a,b,c,d){this.u=a;this.o=b;this.a=c;this.H=d;this.A=(this.i*this.I>>3)*this.j;Va(this.o,this.C,this.A,3)&&(this.V=this.A>>1,this.$=16/this.I|0,this.D=!1,void 0===this.m||this.m.length!=this.V)&&(this.m=Array(this.V));B(this)};fc.prototype.O=function(a,b,c){var d=this;switch(b){case "fullScreen":return this.B[b]=c,this.b&&this.b.ha?c.onclick=function(){d.ha()}:c.parentNode.removeChild(c),!0}return!1};
fc.prototype.ha=function(){var a=!1;if(this.b){if(this.b.ha){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.s/this.l;b>c&&(a=Math.round(c/b*100)+"%")}this.P?(this.f.style.width=a,this.f.style.width=a,this.f.style.display="block",this.f.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.ha();a=!0}this.U&&this.U.focus()}return a};
function gc(a,b){!b&&a.b&&(a.P?a.f.style.width=a.f.style.height="":a.b.style.width=a.b.style.height="")}
xa(function(){for(var a=y(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=x(c),e=document.createElement("canvas");if(void 0===e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(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.onresize());var f=+(d.aspect||Ca.aspect);f&&.3<=f&&3.33>=f&&(wa("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");ra("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);e=e.getContext("2d");d=new fc(d,0,e);La(d,c)}});
function E(a,b,c){this.id=a.id;this.key=gc(a,b,c);this.H=a.H;hc(this,a.Ya)}function gc(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
E.prototype={constructor:E,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){hc(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
function hc(a,b){a[a.id]={};b&&G(a,"parms",b);a.a=!1}function ic(a){var b=!0;if(oa()){var c=JSON.stringify(a[a.id]);qa(a.key,c)||(r("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function jc(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){r(c.message||c),b=!1}return b}function kc(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:oa()&&(b=pa(a.key))?(a[a.id]=b,a.a=!0):!1}function lc(a,b){return a[a.id][b]||null}function G(a,b,c){try{a[a.id][b]=c}catch(d){}}
function mc(a,b,c){t.call(this,"Computer",a,mc);this.h.J=!1;nc(this,b);this.C=pb(this,"autoPower",a);this.f=0;this.N=a.busWidth||a.buswidth;this.b=oc;this.u=null;this.j=this.L=!1;this.O=pb(this,"url")||"";(Math.random()+.1).toString(36);this.c=pc(this);if(this.a=Ka("CPU",this.id)){this.H=Ka("Debugger",this.id);this.A=[];for(b=null;b=Ra(this,"Video",b);)this.A.push(b);this.o=new Ta({id:this.Oa+".bus",busWidth:this.N},this.a,this.H);var d,e=w(this.id);if((this.g=Ka("Panel",this.id))&&this.g.Z)for(b=
0;b<e.length;b++)d=e[b],d.K=this.g.K,d.P=this.g.P,d.Z=this.g.Z;for(b=0;b<e.length;b++)d=e[b],d.aa&&d.aa(this,this.o,this.a,this.H);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.m=d:this.b=parseInt(d,10));var f;if(a=pb(this,"state")||(f=!0,a.state))b=this.D=a,f||(this.j=!0,this.b=oc),this.b&&(this.s=new E(this,Z),kc(this.s)?b=null:delete this.s);!b&&this.b&&(b=qc(this))&&(this.j=!0);if(b){var h=this;p(b,null,!0,function(a,b,c){c?(h.m=null,h.j=!1,h.K("Unable to load machine state from server (error "+
c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(h.u=b,h.L=!0);B(h)})}else B(this);this.B.power||(this.C=!0);!c&&this.C&&rc(this,this.sa)}else r("Unable to find CPU component")}v(mc);var Z="1.22.0",oc=0;function nc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.l=b}
function pb(a,b,c){var d=b.toLowerCase(),d=Ca[b]||Ca[d];void 0===d&&a.l&&(d=a.l[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function rc(a,b,c){for(var d=w(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Na(f)){Na(f,function(){rc(a,b,c)});return}}b.call(a,c)}
function sc(a,b){var c=new E(a,Z,"validate");if(kc(c)&&jc(c)){var d=lc(c,"timestamp"),e=b?lc(b,"timestamp"):"unknown";d!=e&&(a.K("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=mc.prototype;
m.sa=function(a){void 0===a&&(a=this.b||(this.u?1:oc));if(!this.f){this.f++;var b=!1,c=!1;this.I=!1;var d=this.s||new E(this,Z);if(-1==a)b=!0;else if(a>oc){if(kc(d,this.u)){this.i=new E(this,Z,"failsafe");kc(this.i)&&(tc(this,d),a=2,hc(this.i));G(this.i,"timestamp",ia());ic(this.i);var e=this.b&&!this.j;if(1==a||ka("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=jc(d)){var f=lc(d,"code"),h=lc(d,"data");f&&("ok"==f?kc(d,h):("error"==f&&"no machine state"!=
h?(this.K("Error: "+h),"unable to verify user"==h&&(qa("user",""),this.c=null)):this.P(f+": "+h),hc(d),kc(d)?(c=jc(d),e=!0):c=!1))}e&&sc(this,c?d:null)}else 2==a&&d.clear()}else sc(this);delete this.u;delete this.s}e=w(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.a&&(c=uc(this,h,d,b,c));b=[d,a,c];-1!=a?rc(this,this.Pa,b):this.Pa(b)}};
function uc(a,b,c,d,e){if(!b.h.J){b.h.J=!0;if(b.V){var f=null;e&&((f=lc(c,b.id))||(f=lc(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.V(f,d)&&f&&(r("Unable to restore state for "+b.type),a.D&&!a.L?(c.clear(),a.b=oc,window&&window.location.reload()):a.I=!0,b.V(null),e=!1)}if(!d&&b.ya)for(a=b.ya.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
m.Pa=function(a){var b=a[0],c=0>a[1];a=a[2];this.h.J=!0;var d=this.B.power;d&&(d.textContent="Shutdown");this.G||(this.P("PC8080 v"+Z+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.G=!0);this.a&&(uc(this,this.a,b,c,a),tb(this.a));this.I&&(tc(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
function tc(a,b){if(ka("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.O,d=a.c||"",e=b.toString(),f={app:"PC8080"};f.ver=Z;f.url=c;f.user=d;f.type="bug";f.data=e;p("http://www.pcjs.org/api/v1/report",f,!0)}}
function vc(a,b,c){var d,e="none";if(a.f)return null;a.f--;var f=new E(a,Z),h=new E(a,Z,"validate"),g=ia();G(h,"timestamp",g);G(f,"timestamp",g);G(f,"version","1.22.0");G(f,"url",window?window.location.href:null);G(f,"browser",window?window.navigator.userAgent:"");a.a&&a.a.U&&(c&&ub(a.a),d=a.a.U(b,c),"object"===typeof d&&G(f,a.a.id,d),c&&(a.a.h.J=!1,!1===d&&(e=null)));for(var g=w(a.id),l=0;l<g.length;l++){var k=g[l];k.h.J&&(k.U&&(d=k.U(b,c),"object"===typeof d&&G(f,k.id,d)),c&&(k.h.J=!1,!1===d&&(e=
null)))}e&&(c?(g=d=!1,b?(a.c&&wc(a,a.c,f.toString()),ic(h)&&ic(f)||(e=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&f.clear(g)):e=f.toString());c&&(a.h.J=!1,b=a.B.power)&&(b.textContent="Power");a.f=0;return e}m.reset=function(){this.o&&this.o.reset&&this.o.reset();for(var a=w(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.o&&c.reset&&c.reset()}};m.start=function(a,b){for(var c=w(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
b,c,d){return function(){b.style.height=(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Ca.aspect);f&&.3<=f&&3.33>=f&&(wa("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");ra("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new fc(d,e,h,f,c);La(d,c)}});
function E(a,b,c){this.id=a.id;this.key=hc(a,b,c);this.H=a.H;ic(this,a.$a)}function hc(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
E.prototype={constructor:E,value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){ic(this);var b=[];try{for(var c=0,d=window.localStorage.length;c<d;c++)b.push(window.localStorage.key(c))}catch(e){}for(c=0;c<b.length;c++)if((d=b[c])&&(a||d.substr(0,this.key.length)==this.key)){try{window.localStorage.removeItem(d)}catch(e){}b.splice(c,1);c=0}}};
function ic(a,b){a[a.id]={};b&&G(a,"parms",b);a.a=!1}function jc(a){var b=!0;if(oa()){var c=JSON.stringify(a[a.id]);qa(a.key,c)||(r("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function kc(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){r(c.message||c),b=!1}return b}function lc(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:oa()&&(b=pa(a.key))?(a[a.id]=b,a.a=!0):!1}function mc(a,b){return a[a.id][b]||null}function G(a,b,c){try{a[a.id][b]=c}catch(d){}}
function nc(a,b,c){t.call(this,"Computer",a,nc);this.h.K=!1;oc(this,b);this.C=pb(this,"autoPower",a);this.f=0;this.N=a.busWidth||a.buswidth;this.b=pc;this.u=null;this.j=this.J=!1;this.P=pb(this,"url")||"";(Math.random()+.1).toString(36);this.c=qc(this);if(this.a=Ka("CPU",this.id)){this.H=Ka("Debugger",this.id);this.A=[];for(b=null;b=Ra(this,"Video",b);)this.A.push(b);this.o=new Ta({id:this.Qa+".bus",busWidth:this.N},this.a,this.H);var d,e=w(this.id);if((this.g=Ka("Panel",this.id))&&this.g.Z)for(b=
0;b<e.length;b++)d=e[b],d.L=this.g.L,d.R=this.g.R,d.Z=this.g.Z;for(b=0;b<e.length;b++)d=e[b],d.ca&&d.ca(this,this.o,this.a,this.H);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.m=d:this.b=parseInt(d,10));var f;if(a=pb(this,"state")||(f=!0,a.state))b=this.D=a,f||(this.j=!0,this.b=pc),this.b&&(this.s=new E(this,Z),lc(this.s)?b=null:delete this.s);!b&&this.b&&(b=rc(this))&&(this.j=!0);if(b){var h=this;p(b,null,!0,function(a,b,c){c?(h.m=null,h.j=!1,h.L("Unable to load machine state from server (error "+
c+(b?": "+(String.prototype.trim?b.trim():b.replace(/^\s+|\s+$/g,"")):"")+")")):(h.u=b,h.J=!0);B(h)})}else B(this);this.B.power||(this.C=!0);!c&&this.C&&sc(this,this.wa)}else r("Unable to find CPU component")}v(nc);var Z="1.22.0",pc=0;function oc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.l=b}
function pb(a,b,c){var d=b.toLowerCase(),d=Ca[b]||Ca[d];void 0===d&&a.l&&(d=a.l[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function sc(a,b,c){for(var d=w(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Na(f)){Na(f,function(){sc(a,b,c)});return}}b.call(a,c)}
function tc(a,b){var c=new E(a,Z,"validate");if(lc(c)&&kc(c)){var d=mc(c,"timestamp"),e=b?mc(b,"timestamp"):"unknown";d!=e&&(a.L("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=nc.prototype;
m.wa=function(a){void 0===a&&(a=this.b||(this.u?1:pc));if(!this.f){this.f++;var b=!1,c=!1;this.I=!1;var d=this.s||new E(this,Z);if(-1==a)b=!0;else if(a>pc){if(lc(d,this.u)){this.i=new E(this,Z,"failsafe");lc(this.i)&&(uc(this,d),a=2,ic(this.i));G(this.i,"timestamp",ia());jc(this.i);var e=this.b&&!this.j;if(1==a||ka("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=kc(d)){var f=mc(d,"code"),h=mc(d,"data");f&&("ok"==f?lc(d,h):("error"==f&&"no machine state"!=
h?(this.L("Error: "+h),"unable to verify user"==h&&(qa("user",""),this.c=null)):this.R(f+": "+h),ic(d),lc(d)?(c=kc(d),e=!0):c=!1))}e&&tc(this,c?d:null)}else 2==a&&d.clear()}else tc(this);delete this.u;delete this.s}e=w(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.a&&(c=vc(this,h,d,b,c));b=[d,a,c];-1!=a?sc(this,this.Ra,b):this.Ra(b)}};
function vc(a,b,c,d,e){if(!b.h.K){b.h.K=!0;if(b.X){var f=null;e&&((f=mc(c,b.id))||(f=mc(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.X(f,d)&&f&&(r("Unable to restore state for "+b.type),a.D&&!a.J?(c.clear(),a.b=pc,window&&window.location.reload()):a.I=!0,b.X(null),e=!1)}if(!d&&b.za)for(a=b.za.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
m.Ra=function(a){var b=a[0],c=0>a[1];a=a[2];this.h.K=!0;var d=this.B.power;d&&(d.textContent="Shutdown");this.G||(this.R("PC8080 v"+Z+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.G=!0);this.a&&(vc(this,this.a,b,c,a),tb(this.a));this.I&&(uc(this,b),b.clear());!c&&this.i&&(this.i.clear(),delete this.i);this.f=0};
function uc(a,b){if(ka("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.P,d=a.c||"",e=b.toString(),f={app:"PC8080"};f.ver=Z;f.url=c;f.user=d;f.type="bug";f.data=e;p("http://www.pcjs.org/api/v1/report",f,!0)}}
function wc(a,b,c){var d,e="none";if(a.f)return null;a.f--;var f=new E(a,Z),h=new E(a,Z,"validate"),g=ia();G(h,"timestamp",g);G(f,"timestamp",g);G(f,"version","1.22.0");G(f,"url",window?window.location.href:null);G(f,"browser",window?window.navigator.userAgent:"");a.a&&a.a.W&&(c&&ub(a.a),d=a.a.W(b,c),"object"===typeof d&&G(f,a.a.id,d),c&&(a.a.h.K=!1,!1===d&&(e=null)));for(var g=w(a.id),l=0;l<g.length;l++){var k=g[l];k.h.K&&(k.W&&(d=k.W(b,c),"object"===typeof d&&G(f,k.id,d)),c&&(k.h.K=!1,!1===d&&(e=
null)))}e&&(c?(g=d=!1,b?(a.c&&xc(a,a.c,f.toString()),jc(h)&&jc(f)||(e=null,d=g=!0)):a.b&&(d=!0,g=3==a.b),d&&f.clear(g)):e=f.toString());c&&(a.h.K=!1,b=a.B.power)&&(b.textContent="Power");a.f=0;return e}m.reset=function(){this.o&&this.o.reset&&this.o.reset();for(var a=w(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.o&&c.reset&&c.reset()}};m.start=function(a,b){for(var c=w(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};
m.stop=function(a,b){for(var c=w(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
m.R=function(a,b,c){var d=this;switch(b){case "power":return this.B[b]=c,c.onclick=function(){d.f||(d.h.J?vc(d,!1,!0):rc(d,d.sa))},!0;case "reset":return this.B[b]=c,c.onclick=function(){if(d.h.J&&!d.f)if(d.b&&!d.m){var a=ka("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");vc(d,a,!0);!a&&d.D?window&&window.location.reload():d.sa(oc)}else d.reset(),d.a&&tb(d.a)},!0;case "save":if(ea(ja(),"pcjs.org")){c.parentNode.removeChild(c);break}this.B[b]=
c;c.onclick=function(){var a=pc(d,!0);if(a){var b=!!(d.b&&!d.m||d.D),c=vc(d,b);b?wc(d,a,c):d.K("Resume disabled, machine state not saved")}};return!0}return!1};
function pc(a,b){var c=a.c;c||(c=pa("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=xc(a,c))||a.K("The user ID is invalid."))):b&&a.K("Browser local storage is not available"));return c}
function xc(a,b){a.c=null;var c=p(ja()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(qa("user",c.data),a.c=c.data)}catch(e){r(e.message+" ("+d+")")}return a.c}function qc(a){var b=null;a.c&&(b=ja()+"/api/v1/user?req=load&user="+a.c+"&state="+gc(a,Z));return b}
function wc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=gc(a,Z);d.data=c;b=p(ja()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.K("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.K(c),qa("user",""),a.c=null)}}
function Ra(a,b,c){a=w(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}m.da=function(a){this.a&&this.a.da(a);this.g&&this.g.da(a)};
function Ab(a,b){for(var c=0;c<a.A.length;c++)a:{var d=a.A[c];if(0<=b){if(b&1){d=d.a;d.D=d.D&-8|10;break a}var e=d.a;e.D=e.D&-8|9;if(e=d.A){for(var e=d.o,f=d.l,h=!0,g=d.m>>>e.c;0<f&&g<e.b.length;)e.b[g].S&&(e.b[g].S=h=!1,e.b[g].Ra=!0),f-=e.f,g++;e=h}if(e)break a}var g=d.m,l=g+d.l,k=0,A=d.X,q=0,F=0,e=d.f,vb=0,f=d.g,bc=h=0,Fa=d.D,Dc=(1<<Fa)-1;d.Y&&(Fa=-Fa,bc=16+Fa);for(;g<l;){var z;z=d.o;var aa=g,sa=aa&z.g,L=(aa&z.i)>>>z.c;z=sa!=z.g?z.b[L].Za(sa,aa):z.b[L++].Ma(sa,aa)|z.b[L&z.u].Ma(0,aa+1)<<8;if(d.A&&
z===d.i[k])q+=d.N;else{d.i[k]=z;(aa=bc)&&(z=z>>8|(z&255)<<8);q<e&&(e=q);for(sa=0;sa<d.N;sa++){var ma=z>>aa&Dc,L=d.C,cc=q++,ma=A[ma],na=void 0,na=d.G?(L.height-cc-1)*L.width+F:cc+F*L.width,na=na*ma.length;L.data[na]=ma[0];L.data[na+1]=ma[1];L.data[na+2]=ma[2];L.data[na+3]=ma[3];aa+=Fa}q>vb&&(vb=q);F<f&&(f=F);F>=h&&(h=F+1)}g+=2;k++;if(q>=d.f&&(q=0,F++,F>d.g))break}d.A=!0;e<d.f&&(g=vb-e,h-=f,d.G?d.I.putImageData(d.C,0,0):d.I.putImageData(d.C,0,0,e,f,g,h),d.b.drawImage(d.c,0,0,d.c.width,d.c.height,0,
0,d.s,d.j))}}xa(function(){for(var a=y(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=x(c),c=y(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=x(f),h=new mc(h,d,!0);La(h,f);h.C&&rc(h,h.sa)}});ta.show.push(function(){for(var a=y(document,"pc8080","computer"),b=0;b<a.length;b++){var c=x(a[b]);(c=Ka("Computer",c.id))&&c.G&&!c.h.J&&c.sa(-1)}});
ta.exit.push(function(){for(var a=y(document,"pc8080","computer"),b=0;b<a.length;b++){var c=x(a[b]);(c=Ka("Computer",c.id))&&c.h.J&&vc(c,!(!c.b||c.m),!0)}});var yc=0;function zc(a,b,c,d,e,f){e("Loading "+a+"...");p(a,null,!0,function(h,g,l){l?(g||(g="unable to load "+a+" ("+l+")"),f(g,null)):Ac(g,a,b,c,d,e,f)})}
function Ac(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ja(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(q){g=null,a=q.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Bc(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Bc(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");p(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=g[0],k,A=/( [a-z]+=)(['"])(.*?)\2/g;k=A.exec(f);)l=0>l.indexOf(k[1])?l.replace(">",k[0]+">"):l.replace(new RegExp(k[1]+"(['\"])(.*?)\\1"),k[0]);g[0]!=l&&(h=h.replace(g[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],h);Bc(a,b,c)}})}else c(a,null)}
function Cc(a,b,c,d){function e(a){if(void 0===g){var b=h&&y(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ga(a))}function f(a){e("Error: "+a);l&&(--yc||za(!0));l=!1}var h,g,l=!0;yc++;Ia[a]={};try{if(h=document.getElementById(a)){var k;if("object"==typeof resources&&(k=resources.css)){var A=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=k:q.appendChild(document.createTextNode(k));A.appendChild(q)}c||
(c="/versions/pc8080/1.22.0/components.xsl");k=function(d,g){g?zc(c,null,null,!1,e,function(d,k){if(k)if(Ja(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--yc||za(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--yc||za(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?zc(b,a,d,!0,e,k):Ac(b,null,a,d,!1,e,k)}else f("missing machine element: "+a)}catch(F){f(F.message)}return l}window.embedPC8080=function(a,b,c,d){za(!1);return Cc(a,b,c,d)};window.enableEvents=za;window.sendEvent=Aa;
function Ec(a,b,c,d){if(!c&&b){d.push(b);a=Ia[d[0]];b=null;for(var e in a)if(ea(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?p(b,null,!0,function(a,b){Fc(b,d)}):Fc(null,d)}else r("Error ("+c+") requesting "+a)}
function Fc(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Ia[f],l={},k;for(k in g){var A=g[k],q=da(k);if("xml"==q){for(q=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=q.exec(g[k]);){var F=d[2];F&&(g[F]||(A=A.replace(d[0],"")))}d=k=ca(k)}else"xsl"==q&&(e=k=ca(k));l[k]=A}a&&(l[k="css"]=a);b[2]&&(l[k="parms"]=b[2]);b[3]&&(l[k="state"]=b[3]);d&&e?(k=JSON.stringify(l),h+=".js",c=c[1]+"var resources="+k+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
m.O=function(a,b,c){var d=this;switch(b){case "power":return this.B[b]=c,c.onclick=function(){d.f||(d.h.K?wc(d,!1,!0):sc(d,d.wa))},!0;case "reset":return this.B[b]=c,c.onclick=function(){if(d.h.K&&!d.f)if(d.b&&!d.m){var a=ka("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");wc(d,a,!0);!a&&d.D?window&&window.location.reload():d.wa(pc)}else d.reset(),d.a&&tb(d.a)},!0;case "save":if(ea(ja(),"pcjs.org")){c.parentNode.removeChild(c);break}this.B[b]=
c;c.onclick=function(){var a=qc(d,!0);if(a){var b=!!(d.b&&!d.m||d.D),c=wc(d,b);b?xc(d,a,c):d.L("Resume disabled, machine state not saved")}};return!0}return!1};
function qc(a,b){var c=a.c;c||(c=pa("user"),void 0!==c?!c&&b&&(c=null,window&&(c=window.prompt("Saving machine states on the pcjs.org server is currently unsupported.\n\nIf you're running your own server, enter your user ID below.","")),c&&((c=yc(a,c))||a.L("The user ID is invalid."))):b&&a.L("Browser local storage is not available"));return c}
function yc(a,b){a.c=null;var c=p(ja()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(qa("user",c.data),a.c=c.data)}catch(e){r(e.message+" ("+d+")")}return a.c}function rc(a){var b=null;a.c&&(b=ja()+"/api/v1/user?req=load&user="+a.c+"&state="+hc(a,Z));return b}
function xc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=hc(a,Z);d.data=c;b=p(ja()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.L("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.L(c),qa("user",""),a.c=null)}}
function Ra(a,b,c){a=w(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}m.fa=function(a){this.a&&this.a.fa(a);this.g&&this.g.fa(a)};
function Ab(a,b){for(var c=0;c<a.A.length;c++)a:{var d=a.A[c];if(0<=b){if(b&1){d=d.a;d.D=d.D&-8|10;break a}var e=d.a;e.D=e.D&-8|9;if(e=d.D){for(var e=d.o,f=d.A,h=!0,g=d.C>>>e.c;0<f&&g<e.b.length;)e.b[g].S&&(e.b[g].S=h=!1,e.b[g].Ta=!0),f-=e.f,g++;e=h}if(e)break a}var g=d.C,l=g+d.A,k=0,A=d.ga,q=0,F=0,e=d.i,vb=0,f=d.j,cc=h=0,Ia=d.I,Ec=(1<<Ia)-1;d.Ja&&(Ia=-Ia,cc=16+Ia);for(;g<l;){var z;z=d.o;var aa=g,ta=aa&z.g,L=(aa&z.i)>>>z.c;z=ta!=z.g?z.b[L].ab(ta,aa):z.b[L++].Oa(ta,aa)|z.b[L&z.u].Oa(0,aa+1)<<8;if(d.D&&
z===d.m[k])q+=d.$;else{d.m[k]=z;(aa=cc)&&(z=z>>8|(z&255)<<8);q<e&&(e=q);for(ta=0;ta<d.$;ta++){var ma=z>>aa&Ec,L=d.G,dc=q++,ma=A[ma],na=void 0,na=d.J?(L.height-dc-1)*L.width+F:dc+F*L.width,na=na*ma.length;L.data[na]=ma[0];L.data[na+1]=ma[1];L.data[na+2]=ma[2];L.data[na+3]=ma[3];aa+=Ia}q>vb&&(vb=q);F<f&&(f=F);F>=h&&(h=F+1)}g+=2;k++;if(q>=d.i&&(q=0,F++,F>d.j))break}d.D=!0;e<d.i&&(g=vb-e,h-=f,d.J?d.N.putImageData(d.G,0,0):d.N.putImageData(d.G,0,0,e,f,g,h),d.g.drawImage(d.c,0,0,d.c.width,d.c.height,0,
0,d.s,d.l))}}xa(function(){for(var a=y(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=x(c),c=y(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=x(f),h=new nc(h,d,!0);La(h,f);h.C&&sc(h,h.wa)}});sa.show.push(function(){for(var a=y(document,"pc8080","computer"),b=0;b<a.length;b++){var c=x(a[b]);(c=Ka("Computer",c.id))&&c.G&&!c.h.K&&c.wa(-1)}});
sa.exit.push(function(){for(var a=y(document,"pc8080","computer"),b=0;b<a.length;b++){var c=x(a[b]);(c=Ka("Computer",c.id))&&c.h.K&&wc(c,!(!c.b||c.m),!0)}});var zc=0;function Ac(a,b,c,d,e,f){e("Loading "+a+"...");p(a,null,!0,function(h,g,l){l?(g||(g="unable to load "+a+" ("+l+")"),f(g,null)):Bc(g,a,b,c,d,e,f)})}
function Bc(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ja(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(q){g=null,a=q.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Cc(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Cc(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");p(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=g[0],k,A=/( [a-z]+=)(['"])(.*?)\2/g;k=A.exec(f);)l=0>l.indexOf(k[1])?l.replace(">",k[0]+">"):l.replace(new RegExp(k[1]+"(['\"])(.*?)\\1"),k[0]);g[0]!=l&&(h=h.replace(g[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],h);Cc(a,b,c)}})}else c(a,null)}
function Dc(a,b,c,d){function e(a){if(void 0===g){var b=h&&y(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ga(a))}function f(a){e("Error: "+a);l&&(--zc||za(!0));l=!1}var h,g,l=!0;zc++;Ha[a]={};try{if(h=document.getElementById(a)){var k;if("object"==typeof resources&&(k=resources.css)){var A=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=k:q.appendChild(document.createTextNode(k));A.appendChild(q)}c||
(c="/versions/pc8080/1.22.0/components.xsl");k=function(d,g){g?Ac(c,null,null,!1,e,function(d,k){if(k)if(Ja(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--zc||za(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--zc||za(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?Ac(b,a,d,!0,e,k):Bc(b,null,a,d,!1,e,k)}else f("missing machine element: "+a)}catch(F){f(F.message)}return l}window.embedPC8080=function(a,b,c,d){za(!1);return Dc(a,b,c,d)};window.enableEvents=za;window.sendEvent=Aa;
function Fc(a,b,c,d){if(!c&&b){d.push(b);a=Ha[d[0]];b=null;for(var e in a)if(ea(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?p(b,null,!0,function(a,b){Gc(b,d)}):Gc(null,d)}else r("Error ("+c+") requesting "+a)}
function Gc(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Ha[f],l={},k;for(k in g){var A=g[k],q=da(k);if("xml"==q){for(q=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=q.exec(g[k]);){var F=d[2];F&&(g[F]||(A=A.replace(d[0],"")))}d=k=ca(k)}else"xsl"==q&&(e=k=ca(k));l[k]=A}a&&(l[k="css"]=a);b[2]&&(l[k="parms"]=b[2]);b[3]&&(l[k="state"]=b[3]);d&&e?(k=JSON.stringify(l),h+=".js",c=c[1]+"var resources="+k+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),k=h,g=null,l="data:application/javascript,",l=ra("Firefox")?l+encodeURIComponent(c):l+encodeURI(c),k&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=l,g.download=k,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+k+"."):(window.open(l),c="Check your browser for a new window/tab containing the requested data"+(k?" ("+k+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n',
c+='<div id="'+f+'"></div>\n',c+="...\n",c+='<script type="text/javascript" src="'+h+'">\x3c/script>\n',c+='<script type="text/javascript">embedPC("'+f+'","'+d+'","'+e+'");\x3c/script>\n\n',c+="The machine should appear where the <div> is located.",r(c)):r("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=Ka("Computer",a),e=Ka("Debugger",a);if(d){var f=vc(d,!0),h=d.l?JSON.stringify(d.l):null;b||(b="/versions/pcjs/1.22.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Ya:h}))return!0;p(b,null,!0,function(c,d,e){Ec(c,d,e,[a,ca(b,!0),h,f])});return!0}r("Unable to identify machine '"+a+"'");return!1};})();
window.savePC=function(a,b,c){var d=Ka("Computer",a),e=Ka("Debugger",a);if(d){var f=wc(d,!0),h=d.l?JSON.stringify(d.l):null;b||(b="/versions/pcjs/1.22.0/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,$a:h}))return!0;p(b,null,!0,function(c,d,e){Fc(c,d,e,[a,ca(b,!0),h,f])});return!0}r("Unable to identify machine '"+a+"'");return!1};})();