Fixed LOCAL/ONLINE LED

This commit is contained in:
Jeff Parsons 2016-08-14 22:05:59 -07:00
commit a6376d3e8b
7 changed files with 4951 additions and 4939 deletions

View file

@ -9,54 +9,54 @@ function qa(){return window?window.navigator.userAgent:""}function u(a){window&&
function ua(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function va(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function wa(a){if(window){var b=qa();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 xa(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function ya(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 Aa={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 Ia(a){Aa.init.push(a)}
function Ja(a){if(Ga)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Ka("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function La(a){!Ga&&a?(Ga=!0,Fa&&Ma("init")):Ga=a}function Ma(a){Aa[a]&&Ja(Aa[a])}Ha("onload",function(){Fa=!0;Ja(Aa.init)});Ha("onpageshow",function(){Ja(Aa.show)});Ha(wa("Opera")||wa("iOS")?"onunload":"onbeforeunload",function(){Ja(Aa.exit)});
function x(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.oc=b.comment;this.zc=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Tb=this.id.substr(0,b),this.ab=this.id.substr(b+1)):this.ab=this.id;this[a]=c;this.C={jb:!1,gb:!1,Ub:!1,sa:!1,ib:!1};this.Kb=null;this.C.ib=!1;this.L={};this.I=null;this.pa=d||0;Na.push(this)}var Qa=void 0,Ra={};
function x(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.pc=b.comment;this.Ac=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Tb=this.id.substr(0,b),this.ab=this.id.substr(b+1)):this.ab=this.id;this[a]=c;this.D={jb:!1,gb:!1,Ub:!1,sa:!1,ib:!1};this.Kb=null;this.D.ib=!1;this.L={};this.H=null;this.pa=d||0;Na.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 Ya(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 Za(a,b){b||(b=x);a.prototype=Ya(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var Na=[],$a={};function ab(a,b,c){$a[a]&&b&&($a[a][b]=c)}function Ka(a,b,c){b||u((c?c+": ":"")+a)}function bb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Na.length;b++){var d=Na[b];a&&d.id.indexOf(a)||c.push(d)}return c}
function cb(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<Na.length;d++)if(c)c==Na[d]&&(c=null);else if(!(a!=Na[d].type||b&&Na[d].id.indexOf(b)))return Na[d]}return null}function z(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){u(c.message+" ("+a+")")}return b}
function db(a,b){for(var c=B(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=z(h))&&g.binding&&a.ka(g.type,g.binding,h,g.value),l=k.length}}}}
function B(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}
x.prototype={constructor:x,parent:null,toString:function(){return this.name?this.name:this.id||this.type},ka:function(a,b,c){switch(b){case "clear":return this.L[b]||(this.L[b]=c,c.onclick=function(a){return function(){a.L.print&&(a.L.print.value="")}}(this)),!0;case "print":return this.L[b]||(this.Da=this.L[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.ga=function(a){this.g(a,this.ab)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.ab+": "+a)},ga:function(a,b,c){Ka(a,b,c||this.type)},Aa:function(){return this.C.sa=!0},Fa:function(a,b){b&&(this.C.sa=!1);return!0}};function C(a,b,c,d,e,f,h){a.I&&(!0===h?h=0:null==h&&(h=a.pa),eb(a.I,a,b,c,d,e,f,h))}function fb(a,b,c){a.I&&(!0===c||gb(a,c|0))&&a.I.message(b,void 0)}
function gb(a,b){if(a.I){a===a.I?b|=0:b=b||a.pa;var c=a.I.pa&b;return!!b&&c===b||!!(c&a.I.fd)}return!1}function hb(a,b){if(a.C.Ub)return a.C.gb&&(a.C.gb=!1),a.C.Ub=!1;if(a.C.ib)return a.g(a.toString()+" error"),!1;a.C.gb=b;return a.C.gb}function ib(a,b){a.C.gb&&(b?a.C.Ub=!0:void 0===b&&a.g(a.toString()+" busy"));return a.C.gb}function D(a){if(!a.C.ib&&(a.C.jb=!0,a.C.jb)){var b=a.Kb;a.Kb=null;b&&b()}}function jb(a,b){b&&(a.C.jb?b():a.Kb=b);return a.C.jb}function kb(a,b){a.C.ib=!0;a.ga(b)}
var lb="undefined"!==typeof ArrayBuffer,ob=[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 pb(a){x.call(this,"Panel",a,pb)}Za(pb);m=pb.prototype;m.ka=function(a,b,c,d){return this.u&&this.u.ka(a,b,c,d)||this.b&&this.b.ka(a,b,c,d)||this.M&&this.M.ka(a,b,c,d)||this.I&&this.I.ka(a,b,c,d)?!0:this.parent.ka.call(this,a,b,c,d)};m.Na=function(a,b,c,d){this.u=a;this.A=b;this.b=c;this.I=d;this.M=qb(a,"Keyboard")};m.Aa=function(a,b){b||rb();return!0};m.Fa=function(){return!0};m.Ga=function(){};
this.ga=function(a){this.g(a,this.ab)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.ab+": "+a)},ga:function(a,b,c){Ka(a,b,c||this.type)},Aa:function(){return this.D.sa=!0},Fa:function(a,b){b&&(this.D.sa=!1);return!0}};function C(a,b,c,d,e,f,h){a.H&&(!0===h?h=0:null==h&&(h=a.pa),eb(a.H,a,b,c,d,e,f,h))}function fb(a,b,c){a.H&&(!0===c||gb(a,c|0))&&a.H.message(b,void 0)}
function gb(a,b){if(a.H){a===a.H?b|=0:b=b||a.pa;var c=a.H.pa&b;return!!b&&c===b||!!(c&a.H.gd)}return!1}function hb(a,b){if(a.D.Ub)return a.D.gb&&(a.D.gb=!1),a.D.Ub=!1;if(a.D.ib)return a.g(a.toString()+" error"),!1;a.D.gb=b;return a.D.gb}function ib(a,b){a.D.gb&&(b?a.D.Ub=!0:void 0===b&&a.g(a.toString()+" busy"));return a.D.gb}function D(a){if(!a.D.ib&&(a.D.jb=!0,a.D.jb)){var b=a.Kb;a.Kb=null;b&&b()}}function jb(a,b){b&&(a.D.jb?b():a.Kb=b);return a.D.jb}function kb(a,b){a.D.ib=!0;a.ga(b)}
var nb="undefined"!==typeof ArrayBuffer,ob=[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 pb(a){x.call(this,"Panel",a,pb)}Za(pb);m=pb.prototype;m.ka=function(a,b,c,d){return this.u&&this.u.ka(a,b,c,d)||this.b&&this.b.ka(a,b,c,d)||this.M&&this.M.ka(a,b,c,d)||this.H&&this.H.ka(a,b,c,d)?!0:this.parent.ka.call(this,a,b,c,d)};m.Na=function(a,b,c,d){this.u=a;this.A=b;this.b=c;this.H=d;this.M=qb(a,"Keyboard")};m.Aa=function(a,b){b||rb();return!0};m.Fa=function(){return!0};m.Ga=function(){};
function rb(){for(var a=!1,b=B(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=z(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<Na.length;h++)if(Na[h].id===f){f=Na[h];break a}f=null}f||(a=!0,f=new pb(e));db(f,d);a&&D(f)}}Ia(rb);
function sb(a,b,c){x.call(this,"Bus",a,sb);this.b=b;this.I=c;this.J=a.busWidth||16;this.O=Math.pow(2,this.J);this.D=this.O-1|0;this.na=16>=this.J?10:20>=this.J?12:24>=this.J?14:15;this.Ea=1<<this.na;this.P=this.Ea>>2;this.A=this.Ea-1;this.M=this.O/this.Ea|0;this.K=this.M-1;this.u=[];this.w=[];this.F=this.H=!1;this.Z=[];this.ba=[];a=new E;tb(a,this.I);this.W=Array(this.M);for(b=0;b<this.M;b++)this.W[b]=a;D(this)}Za(sb);m=sb.prototype;m.reset=function(){};m.Aa=function(a,b){b||this.reset();return!0};
function ub(a,b,c,d){for(var e=b,f=c,h=e>>>a.na;0<f&&h<a.W.length;){var g=a.W[h],k=h*a.Ea,l=a.Ea-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==d){if(e+f<=g.G)return g.Fb+=g.G-e,g.G=e,!0;if(e>=g.G+g.Fb){l=g.size-(e-k);l>f&&(l=f);g.Fb=e-g.G+l;e=k+a.Ea;f-=l;h++;continue}}return vb(1,e,f)}e=new E(e,l,a.Ea,d);tb(e,a.I,g);a.W[h++]=e;e=k+a.Ea;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+wb[d]+" at "+t(b)),!0):vb(2,b,c)}m.Y=function(a){return this.W[(a&this.D)>>>this.na].qb(a&this.A,a)};
function xb(a,b){return a.W[(b&a.D)>>>a.na].Db(b&a.A,b)}m.Qa=function(a){var b=a&this.A,c=(a&this.D)>>>this.na;return b!=this.A?this.W[c].Ac(b,a):this.W[c++].qb(b,a)|this.W[c&this.K].qb(0,a+1)<<8};function yb(a,b){var c=b&a.A,d=(b&a.D)>>>a.na;return c!=a.A?a.W[d].ac(c,b):a.W[d++].Db(c,b)|a.W[d&a.K].Db(0,b+1)<<8}m.ra=function(a,b){this.W[(a&this.D)>>>this.na].sb(a&this.A,b&255,a)};function zb(a,b,c){a.W[(b&a.D)>>>a.na].Gb(b&a.A,c&255,b)}
m.Rb=function(a,b){var c=a&this.A,d=(a&this.D)>>>this.na;c!=this.A?this.W[d].Cc(c,b&65535,a):(this.W[d++].sb(c,b&255,a),this.W[d&this.K].sb(0,b>>8&255,a+1))};function Ab(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]}function Bb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.u[k]?u("Input port "+t(k)+" already registered"):f.u[k]=[g,!1]}}
function Cb(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.u[b],g=a.Z[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.I&&a.F!=h[1]&&Db(a.I,b,l)):a.I&&(eb(a.I,a,b,null,c),a.F&&Db(a.I,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Eb(a,b){if(void 0===b)return a.H=!a.H,a.H;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,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.w[k]?u("Output port "+t(k)+" already registered"):f.w[k]=[g,!1]}}function Gb(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.w[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.I&&a.H!=h[1]&&Hb(a.I,b,k)}else a.I&&(eb(a.I,a,b,k,d),a.H&&Hb(a.I,b,k));f+=g<<3;b+=g;e-=g}}
function vb(a,b,c){u("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Ib;if(lb){var Jb=new ArrayBuffer(2);(new DataView(Jb)).setUint16(0,256,!0);Ib=256===(new Uint16Array(Jb))[0]}else Ib=!1;var Kb=Ib;
function E(a,b,c,d){this.id=Tb+=2;this.b=null;this.G=a;this.Fb=b;this.size=c||0;this.type=d||Ub;this.L=d==Vb;tb(this);this.La=this.lc=!1;if(c)if(lb)this.F=new ArrayBuffer(c),this.H=new DataView(this.F,0,c),this.A=new Uint8Array(this.F,0,c),this.K=new Uint16Array(this.F,0,c>>1),this.b=new Int32Array(this.F,0,c>>2),Wb(this,Kb?Xb:Yb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Wb(this,Zb)}else Wb(this)}var Ub=0,Vb=2,wb=["NONE","RAM","ROM","VID","H/W"],Tb=0;
E.prototype={constructor:E,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.La=!0}return!1},Va:function(a,b){b?0===this.w++&&$b(this,ac,!1):0===this.u++&&bc(this,ac,!1)},M:function(){this.I&&gb(this.I,129)&&this.I.message("attempt to read invalid block %"+n(this.G),!0);
return 255},D:function(a,b){this.I&&gb(this.I,129)&&this.I.message("attempt to write "+t(b)+" to invalid block %"+n(this.G),!0)},O:function(a,b){return this.qb(a++,b++)|this.qb(a,b)<<8},J:function(a,b,c){this.sb(a++,b&255,c++);this.sb(a,b>>8,c)},da:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ma: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.La=!0},ab: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.La=!0},Z:function(a,b){if(this.I&&null!=this.G){var c=this.I;cc(c,this.G+a,1,c.Z)&&c.la(!0)}return this.Db(a,b)},fa:function(a,b){if(this.I&&null!=this.G){var c=this.I;cc(c,this.G+a,2,c.Z)&&c.la(!0)}return this.ac(a,b)},va:function(a,b,c){if(this.I&&null!=this.G){var d=this.I;cc(d,this.G+a,1,d.H)&&d.la(!0)}this.L?this.D(a,b,c):this.Gb(a,b,c)},Ja:function(a,
b,c){if(this.I&&null!=this.G){var d=this.I;cc(d,this.G+a,2,d.H)&&d.la(!0)}this.L?this.D(a,b,c):this.cc(a,b,c)},P:function(a){return this.A[a]},ba:function(a){return this.A[a]},ea:function(a){return this.H.getUint16(a,!0)},ha:function(a){return a&1?this.A[a]|this.A[a+1]<<8:this.K[a>>1]},oa:function(a,b){this.A[a]=b;this.La=!0},wa:function(a,b){this.A[a]=b;this.La=!0},Ca:function(a,b){this.H.setUint16(a,b,!0);this.La=!0},Ka:function(a,b){a&1?(this.A[a]=b,this.A[a+1]=b>>8):this.K[a>>1]=b;this.La=!0}};
function tb(a,b,c){a.I=b;a.u=a.w=0;c&&((a.u=c.u)&&bc(a,ac,!1),(a.w=c.w)&&$b(a,ac,!1))}function dc(a,b){b?0===--a.w&&(a.sb=a.L?a.D:a.Gb,a.Cc=a.L?a.J:a.cc):0===--a.u&&(a.qb=a.Db,a.Ac=a.ac)}function $b(a,b,c){c&&a.w||(a.sb=!a.L&&b[2]||a.D,a.Cc=!a.L&&b[3]||a.J);if(c||void 0===c)a.Gb=b[2]||a.D,a.cc=b[3]||a.J}function bc(a,b,c){c&&a.u||(a.qb=b[0]||a.M,a.Ac=b[1]||a.O);if(c||void 0===c)a.Db=b[0]||a.M,a.ac=b[1]||a.O}function Wb(a,b){b||(b=ec);bc(a,b,void 0);$b(a,b,void 0)}
var ec=[],Zb=[E.prototype.da,E.prototype.ma,E.prototype.Ba,E.prototype.ab],ac=[E.prototype.Z,E.prototype.fa,E.prototype.va,E.prototype.Ja];if(lb)var Yb=[E.prototype.P,E.prototype.ea,E.prototype.oa,E.prototype.Ca],Xb=[E.prototype.ba,E.prototype.ha,E.prototype.wa,E.prototype.Ka];
function fc(a,b){x.call(this,"CPU",a,fc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.pb=c;this.i.Ob=0;this.i.Za=d;this.i.Xb=Math.round(this.i.pb/1E4)/100;this.i.Xa=this.i.Xb*this.i.Za;this.C.xa=!1;this.C.Vb=!1;this.C.kc=a.autoStart;this.C.mc=!1;this.C.hb=!1;this.i.xb=this.i.mb=0;this.i.yb=a.csStart;this.i.lb=a.csInterval;this.i.nb=a.csStop;this.ba=this.$a.bind(this);D(this)}Za(fc);var gc=["power","reset"];m=fc.prototype;
m.Na=function(a,b,c,d){this.u=a;this.A=b;this.I=d;for(b=0;b<gc.length;b++)(c=this.L[gc[b]])&&this.u.ka(null,gc[b],c);this.M=(b=qb(a,"Video"))&&Math.max(b.Kd,b.Wb)||60;this.D=qb(a,"ChipSet");a=hc(a,"autoStart");null!=a&&(this.C.kc="true"==a?!0:"false"==a?!1:!!a);D(this)};m.reset=function(){this.i.Ob=0};m.save=function(){return null};m.restore=function(){return!1};
m.Aa=function(a,b){if(!b){if(a&&this.restore){ic(this);if(!this.restore(a))return!1;jc(this)}else this.reset();if(this.I){var c=this.I;c.g("Type ? for help with PC8080 Debugger commands");c.Ga();if(c.Ka){var d=c.Ka;c.Ka=null;kc(c,d)}}else this.g("No debugger detected")}lc(this);return!0};m.Fa=function(a){return a?this.save():!0};function mc(a){(a.C.kc||!a.I&&void 0===a.L.run)&&a.$a(!0)}m.nc=function(){return 0};
function jc(a){void 0===a.i.yb&&(a.i.yb=0);void 0===a.i.lb&&(a.i.lb=-1);void 0===a.i.nb&&(a.i.nb=-1);a.C.hb=0<=a.i.yb&&0<a.i.lb;a.C.hb&&(a.i.xb=0,a.i.mb=a.i.yb-a.J)}function nc(a,b){if(a.C.hb){var c=!1;a.i.xb=a.i.xb+a.nc()|0;a.i.mb-=b;0>=a.i.mb&&(a.i.mb+=a.i.lb,c=!0);0<=a.i.nb&&a.i.nb<=oc(a)&&(a.i.lb=a.i.nb=-1,jc(a),a.la(),c=!0);c&&a.g(oc(a)+" cycles: checksum="+n(a.i.xb))}}
m.ka=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.L[b]=c;a=!0;break;case "run":this.L[b]=c;c.onclick=function(){var a;if(a=d.u)if(a=d.u,a.C.sa)a=!0;else{var b=null,c,g=bb(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.C.jb);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.C.sa);c++);c==g.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.C.jb?"powered yet":"ready yet"+(b.Kb?" (waiting for notification)":""))+".");a=!1}a&&(d.C.xa?d.la(!0):d.$a(!0))};a=
!0;break;case "speed":this.L[b]=c;a=!0;break;case "setSpeed":this.L[b]=c,c.onclick=function(){Bc(d,d.i.Za<<1,!0)},c.textContent=this.i.Xa.toFixed(2)+"Mhz",a=!0}return a};function Cc(a,b,c){a.J+=b;c&&(a.F=a.b=0)}
function Dc(a,b){var c=30;c<a.M&&(c=a.M);2>c&&(c=2);var d=1;b&&1<a.i.Za&&a.i.Wa&&(d=a.i.Wa/a.i.Xb);a.i.tc=Math.round(1E3/30);a.i.rd=Math.floor(a.i.pb/c*d);a.i.Zb=Math.floor(a.i.pb/30*d);a.i.vc=Math.floor(a.i.pb/a.M*d);a.i.uc=Math.floor(a.i.pb/2*d);b||(a.i.ob=a.i.Zb,a.i.Ab=a.i.vc,a.i.zb=a.i.uc);a.i.$b=0}function oc(a){return a.J+a.H+a.F-a.b}function ic(a){a.i.Wa=0;a.J=a.H=a.F=a.b=0;jc(a);Bc(a,1)}
function Bc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.Wa/a.i.Xa?b=1:d=!0;a.i.Za=b;b=a.i.Xb*a.i.Za;if(a.i.Xa!=b){a.i.Xa=b;b=a.i.Xa.toFixed(2)+"Mhz";var e=a.L.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.u&&a.u.Eb()}Cc(a,a.H);a.H=0;a.i.kb=la();a.i.Ya=0;Dc(a);return d}
m.$a=function(a){if(hb(this,!0)){if(!this.C.xa){Bc(this);this.u&&this.u.start(this.i.kb,oc(this));this.C.xa=!0;this.C.Vb=!0;this.D&&this.D.start();var b=this.L.run;b&&(b.textContent="Halt");this.u&&(this.u.Ga(!0),a&&this.u.Eb(!0))}this.i.$b>=this.i.pb&&Dc(this,!0);this.i.Bb=0;this.i.Nb=la();this.i.Ya&&(a=this.i.Nb-this.i.Ya,a>this.i.tc&&(this.i.kb+=a,this.i.kb>this.i.Nb&&(this.i.kb=this.i.Nb)));try{do{this.rb(this.C.hb?1:this.i.rd);var c=this.F-this.b;this.H+=c;this.i.Bb+=c;Cc(this,0,!0);nc(this,
c);this.i.Ab-=c;0>=this.i.Ab&&(this.i.Ab+=this.i.vc,this.u&&Ec(this.u,this.i.Ob++),this.i.Ob>this.M&&(this.i.Ob=0));this.i.zb-=c;0>=this.i.zb&&(this.i.zb+=this.i.uc,this.u&&this.u.Ga());this.i.ob-=c;if(0>=this.i.ob){this.i.ob+=this.i.Zb;break}}while(this.C.xa)}catch(e){this.la();lc(this);this.u&&this.u.stop(la(),oc(this));hb(this,!1);kb(this,e.stack||e.message);return}c=setTimeout;a=this.ba;this.i.Ya=la();b=this.i.tc;this.i.Bb&&(b=Math.round(b*this.i.Bb/this.i.Zb));var b=b-(this.i.Ya-this.i.Nb),d=
this.i.Ya-this.i.kb;d&&(this.i.Wa=Math.round(this.H/(10*d))/100,864E5<=d&&(this.J=0,Bc(this)));if(0>b||this.i.Wa<this.i.Xa)b=0;this.i.$b+=this.i.Bb;this.i.Ya+=b;c(a,b)}else lc(this),this.u&&this.u.stop(la(),oc(this))};m.rb=function(){return 0};m.la=function(a){ib(this,!0);this.F-=this.b;this.b=0;Cc(this,this.H);this.H=0;if(this.C.xa){this.C.xa=!1;this.D&&this.D.stop();var b=this.L.run;b&&(b.textContent="Run")}this.C.Jb=a};function lc(a,b){a.u&&(Ec(a.u,-1),a.u.Ga(b))}
function Fc(a){this.sc=+a.model||8080;fc.call(this,a,1E6);this.O=Gc;ic(this);this.C.Jb=this.C.gd=!1;this.Z=0;this.K=[];this.P=0;Hc(this)}Za(Fc,fc);function Ic(a,b){a.K.push(b)}m=Fc.prototype;m.reset=function(){this.C.xa&&this.la();Hc(this);ic(this);this.C.ib=!1;this.parent.reset.call(this)};function Hc(a){a.j=0;a.R=0;a.S=0;a.T=0;a.U=0;a.V=0;a.X=0;a.ja=0;F(a,a.P);Jc(a,0);a.w=0}function Kc(a,b){a.P=b;F(a,b)}
m.nc=function(){var a=this.j+this.R+this.S+this.T+this.U+this.V+this.X|0;return a=a+this.ja+this.N+Lc(this)|0};
m.save=function(){var a=new G(this);H(a,0,[this.j,this.R,this.S,this.T,this.U,this.V,this.X,this.ja,this.N,Lc(this)]);H(a,1,[this.w,this.J,this.i.Za]);for(var b=this.A,c=0,d=[],e=0;e<b.M;e++){var f=b.W[e];if(f.La||f.lc){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],q=g+1;q<f.length&&f[q]===p;)q++;l[k++]=q-g;l[k++]=p;g=q}if(l.length<f.length){f=l;break a}}d[h]=f}}H(a,2,d);return a.data()};
function sb(a,b,c){x.call(this,"Bus",a,sb);this.b=b;this.H=c;this.J=a.busWidth||16;this.O=Math.pow(2,this.J);this.C=this.O-1|0;this.na=16>=this.J?10:20>=this.J?12:24>=this.J?14:15;this.Ea=1<<this.na;this.P=this.Ea>>2;this.A=this.Ea-1;this.M=this.O/this.Ea|0;this.K=this.M-1;this.u=[];this.w=[];this.I=this.G=!1;this.Z=[];this.ba=[];a=new E;tb(a,this.H);this.W=Array(this.M);for(b=0;b<this.M;b++)this.W[b]=a;D(this)}Za(sb);m=sb.prototype;m.reset=function(){};m.Aa=function(a,b){b||this.reset();return!0};
function ub(a,b,c,d){for(var e=b,f=c,h=e>>>a.na;0<f&&h<a.W.length;){var g=a.W[h],k=h*a.Ea,l=a.Ea-(e-k);l>f&&(l=f);if(g&&g.size){if(g.type==d){if(e+f<=g.F)return g.Fb+=g.F-e,g.F=e,!0;if(e>=g.F+g.Fb){l=g.size-(e-k);l>f&&(l=f);g.Fb=e-g.F+l;e=k+a.Ea;f-=l;h++;continue}}return vb(1,e,f)}e=new E(e,l,a.Ea,d);tb(e,a.H,g);a.W[h++]=e;e=k+a.Ea;f-=l}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+wb[d]+" at "+t(b)),!0):vb(2,b,c)}m.Y=function(a){return this.W[(a&this.C)>>>this.na].qb(a&this.A,a)};
function xb(a,b){return a.W[(b&a.C)>>>a.na].Db(b&a.A,b)}m.Qa=function(a){var b=a&this.A,c=(a&this.C)>>>this.na;return b!=this.A?this.W[c].Bc(b,a):this.W[c++].qb(b,a)|this.W[c&this.K].qb(0,a+1)<<8};function yb(a,b){var c=b&a.A,d=(b&a.C)>>>a.na;return c!=a.A?a.W[d].ac(c,b):a.W[d++].Db(c,b)|a.W[d&a.K].Db(0,b+1)<<8}m.ra=function(a,b){this.W[(a&this.C)>>>this.na].sb(a&this.A,b&255,a)};function zb(a,b,c){a.W[(b&a.C)>>>a.na].Gb(b&a.A,c&255,b)}
m.Rb=function(a,b){var c=a&this.A,d=(a&this.C)>>>this.na;c!=this.A?this.W[d].Dc(c,b&65535,a):(this.W[d++].sb(c,b&255,a),this.W[d&this.K].sb(0,b>>8&255,a+1))};function Ab(a,b){if(void 0===b)return a.I=!a.I,a.I;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]}function Bb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.u[k]?u("Input port "+t(k)+" already registered"):f.u[k]=[g,!1]}}
function Cb(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.u[b],g=a.Z[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.H&&a.I!=h[1]&&Db(a.H,b,l)):a.H&&(eb(a.H,a,b,null,c),a.I&&Db(a.H,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Eb(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,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,h=+e+d,g=c[e].bind(b);if(void 0!==g)for(var k=+e+d;k<=h;k++)void 0!==f.w[k]?u("Output port "+t(k)+" already registered"):f.w[k]=[g,!1]}}function Gb(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.w[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.H&&a.G!=h[1]&&Hb(a.H,b,k)}else a.H&&(eb(a.H,a,b,k,d),a.G&&Hb(a.H,b,k));f+=g<<3;b+=g;e-=g}}
function vb(a,b,c){u("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Ib;if(nb){var Jb=new ArrayBuffer(2);(new DataView(Jb)).setUint16(0,256,!0);Ib=256===(new Uint16Array(Jb))[0]}else Ib=!1;var Sb=Ib;
function E(a,b,c,d){this.id=Tb+=2;this.b=null;this.F=a;this.Fb=b;this.size=c||0;this.type=d||Ub;this.L=d==Vb;tb(this);this.La=this.mc=!1;if(c)if(nb)this.I=new ArrayBuffer(c),this.G=new DataView(this.I,0,c),this.A=new Uint8Array(this.I,0,c),this.K=new Uint16Array(this.I,0,c>>1),this.b=new Int32Array(this.I,0,c>>2),Wb(this,Sb?Xb:Yb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Wb(this,Zb)}else Wb(this)}var Ub=0,Vb=2,wb=["NONE","RAM","ROM","VID","H/W"],Tb=0;
E.prototype={constructor:E,parent:null,save:function(){var a,b;if(nb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.G.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(nb)for(b=0;b<a.length;b++)this.G.setInt32(b<<2,a[b],!0);else this.b=a;return this.La=!0}return!1},Va:function(a,b){b?0===this.w++&&$b(this,ac,!1):0===this.u++&&bc(this,ac,!1)},M:function(){this.H&&gb(this.H,129)&&this.H.message("attempt to read invalid block %"+n(this.F),!0);
return 255},C:function(a,b){this.H&&gb(this.H,129)&&this.H.message("attempt to write "+t(b)+" to invalid block %"+n(this.F),!0)},O:function(a,b){return this.qb(a++,b++)|this.qb(a,b)<<8},J:function(a,b,c){this.sb(a++,b&255,c++);this.sb(a,b>>8,c)},da:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ma: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.La=!0},ab: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.La=!0},Z:function(a,b){if(this.H&&null!=this.F){var c=this.H;cc(c,this.F+a,1,c.Z)&&c.la(!0)}return this.Db(a,b)},fa:function(a,b){if(this.H&&null!=this.F){var c=this.H;cc(c,this.F+a,2,c.Z)&&c.la(!0)}return this.ac(a,b)},va:function(a,b,c){if(this.H&&null!=this.F){var d=this.H;cc(d,this.F+a,1,d.G)&&d.la(!0)}this.L?this.C(a,b,c):this.Gb(a,b,c)},Ja:function(a,
b,c){if(this.H&&null!=this.F){var d=this.H;cc(d,this.F+a,2,d.G)&&d.la(!0)}this.L?this.C(a,b,c):this.cc(a,b,c)},P:function(a){return this.A[a]},ba:function(a){return this.A[a]},ea:function(a){return this.G.getUint16(a,!0)},ha:function(a){return a&1?this.A[a]|this.A[a+1]<<8:this.K[a>>1]},oa:function(a,b){this.A[a]=b;this.La=!0},wa:function(a,b){this.A[a]=b;this.La=!0},Ca:function(a,b){this.G.setUint16(a,b,!0);this.La=!0},Ka:function(a,b){a&1?(this.A[a]=b,this.A[a+1]=b>>8):this.K[a>>1]=b;this.La=!0}};
function tb(a,b,c){a.H=b;a.u=a.w=0;c&&((a.u=c.u)&&bc(a,ac,!1),(a.w=c.w)&&$b(a,ac,!1))}function dc(a,b){b?0===--a.w&&(a.sb=a.L?a.C:a.Gb,a.Dc=a.L?a.J:a.cc):0===--a.u&&(a.qb=a.Db,a.Bc=a.ac)}function $b(a,b,c){c&&a.w||(a.sb=!a.L&&b[2]||a.C,a.Dc=!a.L&&b[3]||a.J);if(c||void 0===c)a.Gb=b[2]||a.C,a.cc=b[3]||a.J}function bc(a,b,c){c&&a.u||(a.qb=b[0]||a.M,a.Bc=b[1]||a.O);if(c||void 0===c)a.Db=b[0]||a.M,a.ac=b[1]||a.O}function Wb(a,b){b||(b=ec);bc(a,b,void 0);$b(a,b,void 0)}
var ec=[],Zb=[E.prototype.da,E.prototype.ma,E.prototype.Ba,E.prototype.ab],ac=[E.prototype.Z,E.prototype.fa,E.prototype.va,E.prototype.Ja];if(nb)var Yb=[E.prototype.P,E.prototype.ea,E.prototype.oa,E.prototype.Ca],Xb=[E.prototype.ba,E.prototype.ha,E.prototype.wa,E.prototype.Ka];
function fc(a,b){x.call(this,"CPU",a,fc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.pb=c;this.i.Ob=0;this.i.Za=d;this.i.Xb=Math.round(this.i.pb/1E4)/100;this.i.Xa=this.i.Xb*this.i.Za;this.D.xa=!1;this.D.Vb=!1;this.D.lc=a.autoStart;this.D.nc=!1;this.D.hb=!1;this.i.xb=this.i.mb=0;this.i.yb=a.csStart;this.i.lb=a.csInterval;this.i.nb=a.csStop;this.ba=this.$a.bind(this);D(this)}Za(fc);var gc=["power","reset"];m=fc.prototype;
m.Na=function(a,b,c,d){this.u=a;this.A=b;this.H=d;for(b=0;b<gc.length;b++)(c=this.L[gc[b]])&&this.u.ka(null,gc[b],c);this.M=(b=qb(a,"Video"))&&Math.max(b.Ld,b.Wb)||60;this.I=qb(a,"ChipSet");a=hc(a,"autoStart");null!=a&&(this.D.lc="true"==a?!0:"false"==a?!1:!!a);D(this)};m.reset=function(){this.i.Ob=0};m.save=function(){return null};m.restore=function(){return!1};
m.Aa=function(a,b){if(!b){if(a&&this.restore){ic(this);if(!this.restore(a))return!1;jc(this)}else this.reset();if(this.H){var c=this.H;c.g("Type ? for help with PC8080 Debugger commands");c.Ga();if(c.Ka){var d=c.Ka;c.Ka=null;kc(c,d)}}else this.g("No debugger detected")}lc(this);return!0};m.Fa=function(a){return a?this.save():!0};function mc(a){(a.D.lc||!a.H&&void 0===a.L.run)&&a.$a(!0)}m.oc=function(){return 0};
function jc(a){void 0===a.i.yb&&(a.i.yb=0);void 0===a.i.lb&&(a.i.lb=-1);void 0===a.i.nb&&(a.i.nb=-1);a.D.hb=0<=a.i.yb&&0<a.i.lb;a.D.hb&&(a.i.xb=0,a.i.mb=a.i.yb-a.J)}function nc(a,b){if(a.D.hb){var c=!1;a.i.xb=a.i.xb+a.oc()|0;a.i.mb-=b;0>=a.i.mb&&(a.i.mb+=a.i.lb,c=!0);0<=a.i.nb&&a.i.nb<=Ac(a)&&(a.i.lb=a.i.nb=-1,jc(a),a.la(),c=!0);c&&a.g(Ac(a)+" cycles: checksum="+n(a.i.xb))}}
m.ka=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.L[b]=c;a=!0;break;case "run":this.L[b]=c;c.onclick=function(){var a;if(a=d.u)if(a=d.u,a.D.sa)a=!0;else{var b=null,c,g=bb(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.D.jb);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.D.sa);c++);c==g.length&&(b=a);u("The "+b.type+" component ("+b.id+") is not "+(b.D.jb?"powered yet":"ready yet"+(b.Kb?" (waiting for notification)":""))+".");a=!1}a&&(d.D.xa?d.la(!0):d.$a(!0))};a=
!0;break;case "speed":this.L[b]=c;a=!0;break;case "setSpeed":this.L[b]=c,c.onclick=function(){Bc(d,d.i.Za<<1,!0)},c.textContent=this.i.Xa.toFixed(2)+"Mhz",a=!0}return a};function Cc(a,b,c){a.J+=b;c&&(a.C=a.b=0)}
function Dc(a,b){var c=30;c<a.M&&(c=a.M);2>c&&(c=2);var d=1;b&&1<a.i.Za&&a.i.Wa&&(d=a.i.Wa/a.i.Xb);a.i.uc=Math.round(1E3/30);a.i.sd=Math.floor(a.i.pb/c*d);a.i.Zb=Math.floor(a.i.pb/30*d);a.i.wc=Math.floor(a.i.pb/a.M*d);a.i.vc=Math.floor(a.i.pb/2*d);b||(a.i.ob=a.i.Zb,a.i.Ab=a.i.wc,a.i.zb=a.i.vc);a.i.$b=0}function Ac(a){return a.J+a.G+a.C-a.b}function ic(a){a.i.Wa=0;a.J=a.G=a.C=a.b=0;jc(a);Bc(a,1)}
function Bc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.Wa/a.i.Xa?b=1:d=!0;a.i.Za=b;b=a.i.Xb*a.i.Za;if(a.i.Xa!=b){a.i.Xa=b;b=a.i.Xa.toFixed(2)+"Mhz";var e=a.L.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.u&&a.u.Eb()}Cc(a,a.G);a.G=0;a.i.kb=la();a.i.Ya=0;Dc(a);return d}
m.$a=function(a){if(hb(this,!0)){if(!this.D.xa){Bc(this);this.u&&this.u.start(this.i.kb,Ac(this));this.D.xa=!0;this.D.Vb=!0;this.I&&this.I.start();var b=this.L.run;b&&(b.textContent="Halt");this.u&&(this.u.Ga(!0),a&&this.u.Eb(!0))}this.i.$b>=this.i.pb&&Dc(this,!0);this.i.Bb=0;this.i.Nb=la();this.i.Ya&&(a=this.i.Nb-this.i.Ya,a>this.i.uc&&(this.i.kb+=a,this.i.kb>this.i.Nb&&(this.i.kb=this.i.Nb)));try{do{this.rb(this.D.hb?1:this.i.sd);var c=this.C-this.b;this.G+=c;this.i.Bb+=c;Cc(this,0,!0);nc(this,
c);this.i.Ab-=c;0>=this.i.Ab&&(this.i.Ab+=this.i.wc,this.u&&Ec(this.u,this.i.Ob++),this.i.Ob>this.M&&(this.i.Ob=0));this.i.zb-=c;0>=this.i.zb&&(this.i.zb+=this.i.vc,this.u&&this.u.Ga());this.i.ob-=c;if(0>=this.i.ob){this.i.ob+=this.i.Zb;break}}while(this.D.xa)}catch(e){this.la();lc(this);this.u&&this.u.stop(la(),Ac(this));hb(this,!1);kb(this,e.stack||e.message);return}c=setTimeout;a=this.ba;this.i.Ya=la();b=this.i.uc;this.i.Bb&&(b=Math.round(b*this.i.Bb/this.i.Zb));var b=b-(this.i.Ya-this.i.Nb),d=
this.i.Ya-this.i.kb;d&&(this.i.Wa=Math.round(this.G/(10*d))/100,864E5<=d&&(this.J=0,Bc(this)));if(0>b||this.i.Wa<this.i.Xa)b=0;this.i.$b+=this.i.Bb;this.i.Ya+=b;c(a,b)}else lc(this),this.u&&this.u.stop(la(),Ac(this))};m.rb=function(){return 0};m.la=function(a){ib(this,!0);this.C-=this.b;this.b=0;Cc(this,this.G);this.G=0;if(this.D.xa){this.D.xa=!1;this.I&&this.I.stop();var b=this.L.run;b&&(b.textContent="Run")}this.D.Jb=a};function lc(a,b){a.u&&(Ec(a.u,-1),a.u.Ga(b))}
function Fc(a){this.tc=+a.model||8080;fc.call(this,a,1E6);this.O=Gc;ic(this);this.D.Jb=this.D.hd=!1;this.Z=0;this.K=[];this.P=0;Hc(this)}Za(Fc,fc);function Ic(a,b){a.K.push(b)}m=Fc.prototype;m.reset=function(){this.D.xa&&this.la();Hc(this);ic(this);this.D.ib=!1;this.parent.reset.call(this)};function Hc(a){a.j=0;a.R=0;a.S=0;a.T=0;a.U=0;a.V=0;a.X=0;a.ja=0;F(a,a.P);Jc(a,0);a.w=0}function Kc(a,b){a.P=b;F(a,b)}
m.oc=function(){var a=this.j+this.R+this.S+this.T+this.U+this.V+this.X|0;return a=a+this.ja+this.N+Lc(this)|0};
m.save=function(){var a=new G(this);H(a,0,[this.j,this.R,this.S,this.T,this.U,this.V,this.X,this.ja,this.N,Lc(this)]);H(a,1,[this.w,this.J,this.i.Za]);for(var b=this.A,c=0,d=[],e=0;e<b.M;e++){var f=b.W[e];if(f.La||f.mc){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],q=g+1;q<f.length&&f[q]===p;)q++;l[k++]=q-g;l[k++]=p;g=q}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.R=b[1];this.S=b[2];this.T=b[3];this.U=b[4];this.V=b[5];this.X=b[6];this.ja=b[7]&65535;F(this,b[8]);Jc(this,b[9]);b=a[1];this.w=b[0];this.J=b[1];Bc(this,b[3]);a:{b=this.A;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.P){for(var f=0,h=Array(b.P),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.W[d];if(!f||!f.restore(e)){u("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.ka=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.L[b]=c;this.Z++;d=!0;break;default:d=this.parent.ka.call(this,a,b,c)}return d};function Mc(a){return a.R<<8|a.S}function Nc(a,b){a.R=b>>8&255;a.S=b&255}function Oc(a){return a.T<<8|a.U}function Pc(a,b){a.T=b>>8&255;a.U=b&255}function K(a){return a.V<<8|a.X}
function Qc(a,b){a.V=b>>8&255;a.X=b&255}function F(a,b){a.N=b&65535}function Rc(a){return a.aa&256?1:0}function Sc(a,b){a.aa=a.aa&255|b}function Tc(a){return ob[a.ca&255]?4:0}function Uc(a){return(a.ca^a.ua)&16?16:0}function Vc(a){return a.aa&255?0:64}function Wc(a){return a.ca&128?128:0}function Lc(a){return a.ta&-214|Wc(a)|Vc(a)|Uc(a)|Tc(a)|Rc(a)}function Jc(a,b){a.aa=a.ca=a.ua=0;b&1&&(a.aa|=256);b&4||(a.ca|=1);b&16&&(a.ua|=16);b&64||(a.aa|=255);b&128&&(a.ca^=192);a.ta=a.ta&-726|b&512|2}
function Xc(a,b){a.ua=a.j^b;return a.ca=(a.aa=a.j+b)&255}function Yc(a,b){a.ua=a.j^b;return a.ca=(a.aa=a.j+b+(a.aa&256?1:0))&255}function Zc(a,b){a.aa=a.ca=a.ua=a.j&b;(a.j|b)&8&&(a.ua^=16);return a.aa}function $c(a,b){a.ua=b^255;b=a.ca=b+255&255;a.aa=a.aa&-256|b;return b}function ad(a,b){a.ua=b;b=a.ca=b+1&255;a.aa=a.aa&-256|b;return b}function bd(a,b){return a.ca=a.aa=a.ua=a.j|b}function L(a,b){b^=255;a.ua=a.j^b;return a.ca=(a.aa=a.j+b+1^256)&255}
function cd(a,b){b^=255;a.ua=a.j^b;return a.ca=(a.aa=a.j+b+(a.aa&256?0:1)^256)&255}function dd(a,b){return a.ca=a.aa=a.ua=a.j^b}m.Y=function(a){return this.A.Y(a)};m.ra=function(a,b){this.A.ra(a,b)};function M(a){var b=a.Y(a.N);F(a,a.N+1);return b}function N(a){var b=a.A.Qa(a.N);F(a,a.N+2);return b}function P(a){var b=a.A.Qa(a.ja);a.ja=a.ja+2&65535;return b}function Q(a,b){a.ja=a.ja-2&65535;a.A.Rb(a.ja,b)}function ed(a,b){a.w=a.w&-8|b|8}
function S(a,b,c,d){d=d||2;a.L[b]&&(void 0===c&&(kb(a,"Value for "+b+" is invalid"),a.la()),c=!a.C.xa||a.C.mc?n(c,d):"--------".substr(0,d),a.L[b].textContent!=c&&(a.L[b].textContent=c))}
m.Ga=function(a){this.Z&&(a||!this.C.xa||this.C.mc)&&(S(this,"A",this.j),S(this,"B",this.R),S(this,"C",this.S),S(this,"BC",Mc(this),4),S(this,"D",this.T),S(this,"E",this.U),S(this,"DE",Oc(this),4),S(this,"H",this.V),S(this,"L",this.X),S(this,"HL",K(this),4),S(this,"SP",this.ja,4),S(this,"PC",this.N,4),a=Lc(this),S(this,"PS",a,4),S(this,"IF",a&512?1:0,1),S(this,"SF",a&128?1:0,1),S(this,"ZF",a&64?1:0,1),S(this,"AF",a&16?1:0,1),S(this,"PF",a&4?1:0,1),S(this,"CF",a&1?1:0,1));if(a=this.L.speed)a.textContent=
this.C.xa&&this.i.Wa?this.i.Wa.toFixed(2)+"Mhz":"Stopped"};m.rb=function(a){this.C.Jb=!0;var b=this.C.gd=this.I&&fd(this.I),c=a?this.C.Vb?0:1:-1;this.C.Vb=!1;this.F=this.b=a;do{if(this.w){if(a&&this.w&8&&this.ta&512){var d=199|(this.w&7)<<3;this.w&=-17;this.w&=-16;this.ta&=-513;this.O[d].call(this)}if(this.w&16){this.b=0;break}}if(b){if(zd(this.I,this.N,c)){this.la();break}c=1}this.O[M(this)].call(this)}while(0<this.b);return this.C.Jb?this.F-this.b:void 0===this.C.Jb?0:-1};
function S(a,b,c,d){d=d||2;a.L[b]&&(void 0===c&&(kb(a,"Value for "+b+" is invalid"),a.la()),c=!a.D.xa||a.D.nc?n(c,d):"--------".substr(0,d),a.L[b].textContent!=c&&(a.L[b].textContent=c))}
m.Ga=function(a){this.Z&&(a||!this.D.xa||this.D.nc)&&(S(this,"A",this.j),S(this,"B",this.R),S(this,"C",this.S),S(this,"BC",Mc(this),4),S(this,"D",this.T),S(this,"E",this.U),S(this,"DE",Oc(this),4),S(this,"H",this.V),S(this,"L",this.X),S(this,"HL",K(this),4),S(this,"SP",this.ja,4),S(this,"PC",this.N,4),a=Lc(this),S(this,"PS",a,4),S(this,"IF",a&512?1:0,1),S(this,"SF",a&128?1:0,1),S(this,"ZF",a&64?1:0,1),S(this,"AF",a&16?1:0,1),S(this,"PF",a&4?1:0,1),S(this,"CF",a&1?1:0,1));if(a=this.L.speed)a.textContent=
this.D.xa&&this.i.Wa?this.i.Wa.toFixed(2)+"Mhz":"Stopped"};m.rb=function(a){this.D.Jb=!0;var b=this.D.hd=this.H&&yd(this.H),c=a?this.D.Vb?0:1:-1;this.D.Vb=!1;this.C=this.b=a;do{if(this.w){if(a&&this.w&8&&this.ta&512){var d=199|(this.w&7)<<3;this.w&=-17;this.w&=-16;this.ta&=-513;this.O[d].call(this)}if(this.w&16){this.b=0;break}}if(b){if(zd(this.H,this.N,c)){this.la();break}c=1}this.O[M(this)].call(this)}while(0<this.b);return this.D.Jb?this.C-this.b:void 0===this.D.Jb?0:-1};
Ia(function(){for(var a=B(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Fc(d);db(d,c)}});function Ad(){this.b-=4}function Bd(){F(this,N(this));this.b-=10}function Cd(){F(this,P(this));this.b-=10}function Dd(){var a=N(this);Q(this,this.N);F(this,a);this.b-=17}
var Gc=[Ad,function(){Nc(this,N(this));this.b-=10},function(){this.ra(Mc(this),this.j);this.b-=7},function(){Nc(this,Mc(this)+1);this.b-=5},function(){this.R=ad(this,this.R);this.b-=5},function(){this.R=$c(this,this.R);this.b-=5},function(){this.R=M(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>8;Sc(this,a&256);this.b-=4},Ad,function(){var a;Qc(this,a=K(this)+Mc(this));Sc(this,a>>8&256);this.b-=10},function(){this.j=this.Y(Mc(this));this.b-=7},function(){Nc(this,Mc(this)-1);this.b-=
5},function(){this.S=ad(this,this.S);this.b-=5},function(){this.S=$c(this,this.S);this.b-=5},function(){this.S=M(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;Sc(this,a);this.b-=4},Ad,function(){Pc(this,N(this));this.b-=10},function(){this.ra(Oc(this),this.j);this.b-=7},function(){Pc(this,Oc(this)+1);this.b-=5},function(){this.T=ad(this,this.T);this.b-=5},function(){this.T=$c(this,this.T);this.b-=5},function(){this.T=M(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|
@ -67,7 +67,7 @@ ad(this,this.X);this.b-=5},function(){this.X=$c(this,this.X);this.b-=5},function
5},function(){this.R=this.X;this.b-=5},function(){this.R=this.Y(K(this));this.b-=7},function(){this.R=this.j;this.b-=5},function(){this.S=this.R;this.b-=5},function(){this.b-=5},function(){this.S=this.T;this.b-=5},function(){this.S=this.U;this.b-=5},function(){this.S=this.V;this.b-=5},function(){this.S=this.X;this.b-=5},function(){this.S=this.Y(K(this));this.b-=7},function(){this.S=this.j;this.b-=5},function(){this.T=this.R;this.b-=5},function(){this.T=this.S;this.b-=5},function(){this.b-=5},function(){this.T=
this.U;this.b-=5},function(){this.T=this.V;this.b-=5},function(){this.T=this.X;this.b-=5},function(){this.T=this.Y(K(this));this.b-=7},function(){this.T=this.j;this.b-=5},function(){this.U=this.R;this.b-=5},function(){this.U=this.S;this.b-=5},function(){this.U=this.T;this.b-=5},function(){this.b-=5},function(){this.U=this.V;this.b-=5},function(){this.U=this.X;this.b-=5},function(){this.U=this.Y(K(this));this.b-=7},function(){this.U=this.j;this.b-=5},function(){this.V=this.R;this.b-=5},function(){this.V=
this.S;this.b-=5},function(){this.V=this.T;this.b-=5},function(){this.V=this.U;this.b-=5},function(){this.b-=5},function(){this.V=this.X;this.b-=5},function(){this.V=this.Y(K(this));this.b-=7},function(){this.V=this.j;this.b-=5},function(){this.X=this.R;this.b-=5},function(){this.X=this.S;this.b-=5},function(){this.X=this.T;this.b-=5},function(){this.X=this.U;this.b-=5},function(){this.X=this.V;this.b-=5},function(){this.b-=5},function(){this.X=this.Y(K(this));this.b-=7},function(){this.X=this.j;
this.b-=5},function(){this.ra(K(this),this.R);this.b-=7},function(){this.ra(K(this),this.S);this.b-=7},function(){this.ra(K(this),this.T);this.b-=7},function(){this.ra(K(this),this.U);this.b-=7},function(){this.ra(K(this),this.V);this.b-=7},function(){this.ra(K(this),this.X);this.b-=7},function(){var a=this.N-1;if(this.K.length)for(var b=0;b<this.K.length;b++)if(this.K[b](a))return;this.w|=16;this.b-=7;this.I&&gb(this,-2147483648)?(F(this,a),this.I.la()):this.ta&512||(this.I&&F(this,a),this.la())},
this.b-=5},function(){this.ra(K(this),this.R);this.b-=7},function(){this.ra(K(this),this.S);this.b-=7},function(){this.ra(K(this),this.T);this.b-=7},function(){this.ra(K(this),this.U);this.b-=7},function(){this.ra(K(this),this.V);this.b-=7},function(){this.ra(K(this),this.X);this.b-=7},function(){var a=this.N-1;if(this.K.length)for(var b=0;b<this.K.length;b++)if(this.K[b](a))return;this.w|=16;this.b-=7;this.H&&gb(this,-2147483648)?(F(this,a),this.H.la()):this.ta&512||(this.H&&F(this,a),this.la())},
function(){this.ra(K(this),this.j);this.b-=7},function(){this.j=this.R;this.b-=5},function(){this.j=this.S;this.b-=5},function(){this.j=this.T;this.b-=5},function(){this.j=this.U;this.b-=5},function(){this.j=this.V;this.b-=5},function(){this.j=this.X;this.b-=5},function(){this.j=this.Y(K(this));this.b-=7},function(){this.b-=5},function(){this.j=Xc(this,this.R);this.b-=4},function(){this.j=Xc(this,this.S);this.b-=4},function(){this.j=Xc(this,this.T);this.b-=4},function(){this.j=Xc(this,this.U);this.b-=
4},function(){this.j=Xc(this,this.V);this.b-=4},function(){this.j=Xc(this,this.X);this.b-=4},function(){this.j=Xc(this,this.Y(K(this)));this.b-=7},function(){this.j=Xc(this,this.j);this.b-=4},function(){this.j=Yc(this,this.R);this.b-=4},function(){this.j=Yc(this,this.S);this.b-=4},function(){this.j=Yc(this,this.T);this.b-=4},function(){this.j=Yc(this,this.U);this.b-=4},function(){this.j=Yc(this,this.V);this.b-=4},function(){this.j=Yc(this,this.X);this.b-=4},function(){this.j=Yc(this,this.Y(K(this)));
this.b-=7},function(){this.j=Yc(this,this.j);this.b-=4},function(){this.j=L(this,this.R);this.b-=4},function(){this.j=L(this,this.S);this.b-=4},function(){this.j=L(this,this.T);this.b-=4},function(){this.j=L(this,this.U);this.b-=4},function(){this.j=L(this,this.V);this.b-=4},function(){this.j=L(this,this.X);this.b-=4},function(){this.j=L(this,this.Y(K(this)));this.b-=7},function(){this.j=L(this,this.j);this.b-=4},function(){this.j=cd(this,this.R);this.b-=4},function(){this.j=cd(this,this.S);this.b-=
@ -81,161 +81,161 @@ N(this);Rc(this)&&(Q(this,this.N),F(this,a),this.b-=6);this.b-=11},Dd,function()
11},function(){this.j=Zc(this,M(this));this.b-=7},function(){Q(this,this.N);F(this,32);this.b-=11},function(){Tc(this)&&(F(this,P(this)),this.b-=6);this.b-=5},function(){F(this,K(this));this.b-=5},function(){var a=N(this);Tc(this)&&F(this,a);this.b-=10},function(){var a=K(this);Qc(this,Oc(this));Pc(this,a);this.b-=5},function(){var a=N(this);Tc(this)&&(Q(this,this.N),F(this,a),this.b-=6);this.b-=11},Dd,function(){this.j=dd(this,M(this));this.b-=7},function(){Q(this,this.N);F(this,40);this.b-=11},
function(){Wc(this)||(F(this,P(this)),this.b-=6);this.b-=5},function(){var a=P(this);Jc(this,a&255|this.ta&-256);this.j=a>>8;this.b-=10},function(){var a=N(this);Wc(this)||F(this,a);this.b-=10},function(){this.ta&=-513;this.b-=4},function(){var a=N(this);Wc(this)||(Q(this,this.N),F(this,a),this.b-=6);this.b-=11},function(){Q(this,Lc(this)&255|this.j<<8);this.b-=11},function(){this.j=bd(this,M(this));this.b-=7},function(){Q(this,this.N);F(this,48);this.b-=11},function(){Wc(this)&&(F(this,P(this)),
this.b-=6);this.b-=5},function(){this.ja=K(this)&65535;this.b-=5},function(){var a=N(this);Wc(this)&&F(this,a);this.b-=10},function(){this.ta|=512;this.b-=4},function(){var a=N(this);Wc(this)&&(Q(this,this.N),F(this,a),this.b-=6);this.b-=11},Dd,function(){L(this,M(this));this.b-=7},function(){Q(this,this.N);F(this,56);this.b-=11}];
function T(a){x.call(this,"ChipSet",a,T,32768);var b=a.model;b&&!Ed[b]&&Ka("Unrecognized ChipSet model: "+b);this.D=Ed[b]||{};a.sound&&(this.da=null,window&&(this.da=window.AudioContext||window.webkitAudioContext),this.da&&new this.da);D(this)}Za(T);
var U={ya:1978.1,bd:{za:0,Pd:1,Td:16,$d:32,ie:64,he:128,tb:14},Sa:{za:1,Hc:1,Xc:2,Tc:4,Uc:16,Vc:32,Wc:64,tb:8},cd:{za:2,Od:3,pe:4,Qd:8,de:16,ee:32,fe:64,Rd:128,tb:0},le:{za:3},je:{za:2,ae:7},ne:{za:3,qe:1,me:2,ge:4,Yd:8,Sd:16,Md:32},ke:{za:4},oe:{za:5,Ud:1,Vd:2,Wd:4,Xd:8,re:16}},V={ya:100,Pa:{za:66,se:1,Rc:2,Sc:4,ce:8,be:16,gc:32,fc:64,dc:128},Gc:{za:66,INIT:0},Ha:{Zd:{za:98},Ra:{Ec:0,Dc:1,Zc:2,dd:4,Kc:5,Yc:6,$c:7},Hb:16383},Jc:{za:162,INIT:0},Ic:{za:194,INIT:0}},Ed={SI1978:U,VT100:V};
T.prototype.ka=function(){return!1};T.prototype.Na=function(a,b,c,d){this.A=b;this.b=c;this.I=d;this.u=a;this.M=qb(a,"Keyboard");Bb(b,this,this.D.Pb);Fb(b,this,this.D.Qb)};T.prototype.Aa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};T.prototype.Fa=function(a){return a?this.save():!0};U.INIT=[[U.bd.tb,U.Sa.tb,U.cd.tb,0,0,0,0]];
V.INIT=[[V.Gc.INIT,V.Pa.Rc|V.Pa.Sc,V.Jc.INIT,V.Ic.INIT],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11856,11824,11840,11808,11776,12E3,12E3,11857,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];m=T.prototype;
m.reset=function(){this.D.INIT&&!this.restore(this.D.INIT)&&this.ga("reset error")};m.save=function(){var a=new G(this);switch(this.D.ya){case U.ya:H(a,0,[this.va,this.F,this.wa,this.P,this.ba,this.ma,this.oa]);break;case V.ya:H(a,0,[this.ea,this.J,this.ha,this.fa]),H(a,1,[this.O,this.w,this.K,this.Z,this.H])}return a.data()};
m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.D.ya){case U.ya:return this.va=b[0],this.F=b[1],this.wa=b[2],this.P=b[3],this.ba=b[4],this.ma=b[5],this.oa=b[6],!0;case V.ya:return this.ea=b[0],this.J=b[1],this.ha=b[2],this.fa=b[3],b=a[1],this.O=b[0],this.w=b[1],this.K=b[2],this.Z=b[3],this.H=b[4],!0}return!1};m.start=function(){};m.stop=function(){};function Fd(a,b,c){a.F&=~b;c&&(a.F|=b)}m.ld=function(a,b){var c=this.va;C(this,a,null,b,"STATUS0",c,!0);return c};
m.md=function(a,b){var c=this.F;C(this,a,null,b,"STATUS1",c,!0);return c};m.nd=function(a,b){var c=this.wa;C(this,a,null,b,"STATUS2",c,!0);return c};m.kd=function(a,b){var c=this.P>>8-this.ba&255;C(this,a,null,b,"SHIFT.RESULT",c,!0);return c};m.vd=function(a,b,c){C(this,a,b,c,"SHIFT.COUNT",null,!0);this.ba=b};m.xd=function(a,b,c){C(this,a,b,c,"SOUND1",null,!0);this.ma=b};m.wd=function(a,b,c){C(this,a,b,c,"SHIFT.DATA",null,!0);this.P=b<<8|this.P>>8};
m.yd=function(a,b,c){C(this,a,b,c,"SOUND2",null,!0);this.oa=b};m.zd=function(a,b,c){C(this,a,b,c,"WATCHDOG",null,!0)};function Gd(a){var b=0,c=0,d=~a.O;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
m.od=function(a,b){var c=this.J,c=c&~V.Pa.fc;if((oc(this.b)&64)<<1&&(c|=V.Pa.fc,c!=this.J)){var d,e;d=this.K&1;e=this.K>>1&7;switch(e){case V.Ha.Ra.$c:break;case V.Ha.Ra.Dc:this.O=this.O<<1|d;break;case V.Ha.Ra.Kc:d=Gd(this);this.H[d]=V.Ha.Hb;fb(this,"doNVRCommand(): erase data at addr "+t(d));break;case V.Ha.Ra.Ec:this.w=this.w<<1|d;break;case V.Ha.Ra.dd:d=Gd(this);e=this.w&V.Ha.Hb;this.H[d]=e;fb(this,"doNVRCommand(): write data "+t(e)+" to addr "+t(d));break;case V.Ha.Ra.Yc:d=Gd(this);e=this.H[d];
null==e&&(e=V.Ha.Hb);this.w=e;fb(this,"doNVRCommand(): read data "+t(e)+" from addr "+t(d));break;case V.Ha.Ra.Zc:this.w<<=1;this.Z=this.w&V.Ha.Hb+1;break;default:fb(this,"doNVRCommand(): unrecognized command 0x"+n(e,2))}}c&=~V.Pa.gc;this.Z&&(c|=V.Pa.gc);c&=~V.Pa.dc;this.M&&(c|=V.Pa.dc);this.J=c;C(this,a,null,b,"FLAGS.BUFFER",c);return c};m.Ad=function(a,b,c){C(this,a,b,c,"BRIGHTNESS");this.ea=b};m.Dd=function(a,b,c){C(this,a,b,c,"NVR.LATCH");this.K=b};
m.Cd=function(a,b,c){C(this,a,b,c,"DC012");this.ha=b};m.Bd=function(a,b,c){C(this,a,b,c,"DC011");this.fa=b};U.Pb={0:T.prototype.ld,1:T.prototype.md,2:T.prototype.nd,3:T.prototype.kd};U.Qb={2:T.prototype.vd,3:T.prototype.xd,4:T.prototype.wd,5:T.prototype.yd,6:T.prototype.zd};V.Pb={66:T.prototype.od};V.Qb={66:T.prototype.Ad,98:T.prototype.Dd,162:T.prototype.Cd,194:T.prototype.Bd};Ia(function(){for(var a=B(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new T(d);db(d,c)}});
function Hd(a){x.call(this,"ROM",a,Hd);this.u=null;this.H=a.addr;this.w=a.size;this.J=a.writable;this.D=a.alias;this.F=a.file;this.K=ca(this.F);if(this.F){a=this.F;var b=da(this.K);"json"!=b&&"hex"!=b&&(a=pa()+"/api/v1/dump?file="+this.F+"&format=bytes&decimal=true");var c=this;oa(a,null,!0,function(a,b,f){Id(c,a,b,f)})}}Za(Hd);var Jd=[0,5];Hd.prototype.Na=function(a,b,c,d){this.A=b;this.b=c;this.I=d;Kd(this)};
Hd.prototype.Aa=function(){if(this.Oa){if(this.I){var a=this.I,b=this.id,c=this.H,d=this.w,e=this.Oa,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],q=ka(p,k,a.Ua);0>q&&p.splice(-(q+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.J.push({te:b,G:c,qd:d,Oa:e,ic:f})}delete this.Oa}return!0};Hd.prototype.Fa=function(){return!0};
function Id(a,b,c,d){if(d)a.ga("Unable to load system ROM (error "+d+": "+b+")");else{ab(a.Tb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.u=f;else if(h)for(a.u=Array(4*h.length),d=c=0;c<h.length;c++)a.u[d++]=h[c]&255,a.u[d++]=h[c]>>8&255,a.u[d++]=h[c]>>16&255,a.u[d++]=h[c]>>24&255;else a.u=e;a.Oa=e.symbols;if(!a.u.length){u("Empty ROM: "+b);return}if(1==a.u.length){u(a.u[0]);return}}catch(g){a.ga("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.u=Array(b.length),e=0;e<b.length;e++)a.u[e]=ba(b[e],16);Kd(a)}}
function Kd(a){if(!jb(a))if(!a.F)D(a);else if(a.u&&a.A){a.w||(a.w=a.u.length);if(a.u.length!=a.w)kb(a,"ROM size (0x"+n(a.u.length)+") does not match specified size ("+("0x"+n(a.w))+")");else if(Ld(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.A,h=d.w,g=[],k=d.H>>>f.na;0<h&&k<f.W.length;)g.push(f.W[k++]),h-=f.Ea;f=d.A;d=d.w;h=0;for(e>>>=f.na;0<d&&e<f.W.length;){k=g[h++];if(!k)break;f.W[e++]=k;d-=f.Ea}}delete a.u}D(a)}}
function Ld(a,b){if(ub(a.A,b,a.w,a.J?1:Vb)){var c;for(c=0;c<a.u.length;c++)zb(a.A,b+c,a.u[c]);if(a.J&&256==b){for(c=0;c<Jd.length;c++)zb(a.A,Jd[c],118);Ic(a.b,function(a){return function(b){if(0<=Jd.indexOf(b)){var c=!1,h=a.b,g=a.I;if(5==b)switch(c=!0,h.S){case 2:Md(a,String.fromCharCode(h.U));break;case 9:for(var k=Oc(h),l="",p=255;p--;){var q=a.b.Y(k++);if(36==q)break;l+=String.fromCharCode(q)}Md(a,l);break;default:c=!1}c?Cd.call(h):g&&(a.g("\nCP/M vector "+t(b)),F(h,b),g.la());b=!0}else b=!1;return b}}(a));
Kc(a.b,b)}return!0}return!1}function Md(a,b){b=b.replace(/\r/g,"");a.Da&&(a.Da.value+=b,a.Da.scrollTop=a.Da.scrollHeight)}Ia(function(){for(var a=B(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Hd(d);db(d,c)}});function Nd(a){x.call(this,"RAM",a,Nd);this.D=a.addr;this.w=a.size;this.u=!1}Za(Nd);m=Nd.prototype;m.Na=function(a,b,c,d){this.A=b;this.b=c;this.I=d;D(this)};m.Aa=function(a,b){b||this.reset();return!0};m.Fa=function(a){return a?this.save():!0};
m.reset=function(){!this.u&&this.w&&ub(this.A,this.D,this.w,1)&&(this.u=!0);this.u||u("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ia(function(){for(var a=B(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Nd(d);db(d,c)}});function Od(a){x.call(this,"Keyboard",a,Od,65536);(a=a.model)&&!Pd[a]&&Ka("Unrecognized Keyboard model: "+a);this.u=Pd[a]||{};this.reset();D(this)}Za(Od);
var Qd={65:37,68:39,76:32},Rd={ya:1978.1,B:{},ub:{},vb:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},W={ya:100,B:{},ub:{},vb:{},Fc:{za:130,INIT:127},Ia:{za:130,Pc:1,Oc:2,Nc:4,Mc:8,Qc:16,hc:32,ec:63,ad:64,Nd:128,INIT:0},Lc:127};W.B[46]=3;W.B[80]=5;W.B[79]=6;W.B[89]=7;W.B[84]=8;W.B[87]=9;W.B[81]=10;W.B[39]=16;W.B[221]=20;W.B[219]=21;W.B[73]=22;W.B[85]=23;W.B[82]=24;W.B[69]=25;W.B[49]=26;W.B[37]=32;W.B[40]=34;W.B[117]=35;W.B[19]=35;W.B[192]=36;W.B[189]=37;W.B[57]=38;W.B[55]=39;W.B[52]=40;
function T(a){x.call(this,"ChipSet",a,T,32768);var b=a.model;b&&!Ed[b]&&Ka("Unrecognized ChipSet model: "+b);this.C=Ed[b]||{};a.sound&&(this.da=null,window&&(this.da=window.AudioContext||window.webkitAudioContext),this.da&&new this.da);D(this)}Za(T);
var U={ya:1978.1,cd:{za:0,Qd:1,Ud:16,ae:32,je:64,ie:128,tb:14},Sa:{za:1,Ic:1,Yc:2,Uc:4,Vc:16,Wc:32,Xc:64,tb:8},dd:{za:2,Pd:3,qe:4,Rd:8,ee:16,fe:32,ge:64,Sd:128,tb:0},me:{za:3},ke:{za:2,be:7},oe:{za:3,re:1,ne:2,he:4,Zd:8,Td:16,Nd:32},le:{za:4},pe:{za:5,Vd:1,Wd:2,Xd:4,Yd:8,se:16}},V={ya:100,Pa:{za:66,te:1,Sc:2,Tc:4,de:8,ce:16,ic:32,hc:64,ec:128},Hc:{za:66,INIT:0},Ha:{$d:{za:98},Ra:{Fc:0,Ec:1,$c:2,ed:4,Lc:5,Zc:6,ad:7},Hb:16383},Kc:{za:162,INIT:0},Jc:{za:194,INIT:0}},Ed={SI1978:U,VT100:V};
T.prototype.ka=function(){return!1};T.prototype.Na=function(a,b,c,d){this.A=b;this.b=c;this.H=d;this.u=a;this.M=qb(a,"Keyboard");Bb(b,this,this.C.Pb);Fb(b,this,this.C.Qb)};T.prototype.Aa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};T.prototype.Fa=function(a){return a?this.save():!0};U.INIT=[[U.cd.tb,U.Sa.tb,U.dd.tb,0,0,0,0]];
V.INIT=[[V.Hc.INIT,V.Pa.Sc|V.Pa.Tc,V.Kc.INIT,V.Jc.INIT],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11856,11824,11840,11808,11776,12E3,12E3,11857,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];m=T.prototype;
m.reset=function(){this.C.INIT&&!this.restore(this.C.INIT)&&this.ga("reset error")};m.save=function(){var a=new G(this);switch(this.C.ya){case U.ya:H(a,0,[this.va,this.I,this.wa,this.P,this.ba,this.ma,this.oa]);break;case V.ya:H(a,0,[this.ea,this.J,this.ha,this.fa]),H(a,1,[this.O,this.w,this.K,this.Z,this.G])}return a.data()};
m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.C.ya){case U.ya:return this.va=b[0],this.I=b[1],this.wa=b[2],this.P=b[3],this.ba=b[4],this.ma=b[5],this.oa=b[6],!0;case V.ya:return this.ea=b[0],this.J=b[1],this.ha=b[2],this.fa=b[3],b=a[1],this.O=b[0],this.w=b[1],this.K=b[2],this.Z=b[3],this.G=b[4],!0}return!1};m.start=function(){};m.stop=function(){};m.md=function(a,b){var c=this.va;C(this,a,null,b,"STATUS0",c,!0);return c};
m.nd=function(a,b){var c=this.I;C(this,a,null,b,"STATUS1",c,!0);return c};m.od=function(a,b){var c=this.wa;C(this,a,null,b,"STATUS2",c,!0);return c};m.ld=function(a,b){var c=this.P>>8-this.ba&255;C(this,a,null,b,"SHIFT.RESULT",c,!0);return c};m.wd=function(a,b,c){C(this,a,b,c,"SHIFT.COUNT",null,!0);this.ba=b};m.yd=function(a,b,c){C(this,a,b,c,"SOUND1",null,!0);this.ma=b};m.xd=function(a,b,c){C(this,a,b,c,"SHIFT.DATA",null,!0);this.P=b<<8|this.P>>8};
m.zd=function(a,b,c){C(this,a,b,c,"SOUND2",null,!0);this.oa=b};m.Ad=function(a,b,c){C(this,a,b,c,"WATCHDOG",null,!0)};function Fd(a){var b=0,c=0,d=~a.O;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
m.pd=function(a,b){var c=this.J,c=c&~V.Pa.hc;if((Ac(this.b)&64)<<1&&(c|=V.Pa.hc,c!=this.J)){var d,e;d=this.K&1;e=this.K>>1&7;switch(e){case V.Ha.Ra.ad:break;case V.Ha.Ra.Ec:this.O=this.O<<1|d;break;case V.Ha.Ra.Lc:d=Fd(this);this.G[d]=V.Ha.Hb;fb(this,"doNVRCommand(): erase data at addr "+t(d));break;case V.Ha.Ra.Fc:this.w=this.w<<1|d;break;case V.Ha.Ra.ed:d=Fd(this);e=this.w&V.Ha.Hb;this.G[d]=e;fb(this,"doNVRCommand(): write data "+t(e)+" to addr "+t(d));break;case V.Ha.Ra.Zc:d=Fd(this);e=this.G[d];
null==e&&(e=V.Ha.Hb);this.w=e;fb(this,"doNVRCommand(): read data "+t(e)+" from addr "+t(d));break;case V.Ha.Ra.$c:this.w<<=1;this.Z=this.w&V.Ha.Hb+1;break;default:fb(this,"doNVRCommand(): unrecognized command 0x"+n(e,2))}}c&=~V.Pa.ic;this.Z&&(c|=V.Pa.ic);c&=~V.Pa.ec;this.M&&(c|=V.Pa.ec);this.J=c;C(this,a,null,b,"FLAGS.BUFFER",c);return c};m.Bd=function(a,b,c){C(this,a,b,c,"BRIGHTNESS");this.ea=b};m.Ed=function(a,b,c){C(this,a,b,c,"NVR.LATCH");this.K=b};
m.Dd=function(a,b,c){C(this,a,b,c,"DC012");this.ha=b};m.Cd=function(a,b,c){C(this,a,b,c,"DC011");this.fa=b};U.Pb={0:T.prototype.md,1:T.prototype.nd,2:T.prototype.od,3:T.prototype.ld};U.Qb={2:T.prototype.wd,3:T.prototype.yd,4:T.prototype.xd,5:T.prototype.zd,6:T.prototype.Ad};V.Pb={66:T.prototype.pd};V.Qb={66:T.prototype.Bd,98:T.prototype.Ed,162:T.prototype.Dd,194:T.prototype.Cd};Ia(function(){for(var a=B(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new T(d);db(d,c)}});
function Gd(a){x.call(this,"ROM",a,Gd);this.u=null;this.G=a.addr;this.w=a.size;this.J=a.writable;this.C=a.alias;this.I=a.file;this.K=ca(this.I);if(this.I){a=this.I;var b=da(this.K);"json"!=b&&"hex"!=b&&(a=pa()+"/api/v1/dump?file="+this.I+"&format=bytes&decimal=true");var c=this;oa(a,null,!0,function(a,b,f){Hd(c,a,b,f)})}}Za(Gd);var Id=[0,5];Gd.prototype.Na=function(a,b,c,d){this.A=b;this.b=c;this.H=d;Jd(this)};
Gd.prototype.Aa=function(){if(this.Oa){if(this.H){var a=this.H,b=this.id,c=this.G,d=this.w,e=this.Oa,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],q=ka(p,k,a.Ua);0>q&&p.splice(-(q+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.J.push({ue:b,F:c,rd:d,Oa:e,jc:f})}delete this.Oa}return!0};Gd.prototype.Fa=function(){return!0};
function Hd(a,b,c,d){if(d)a.ga("Unable to load system ROM (error "+d+": "+b+")");else{ab(a.Tb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.u=f;else if(h)for(a.u=Array(4*h.length),d=c=0;c<h.length;c++)a.u[d++]=h[c]&255,a.u[d++]=h[c]>>8&255,a.u[d++]=h[c]>>16&255,a.u[d++]=h[c]>>24&255;else a.u=e;a.Oa=e.symbols;if(!a.u.length){u("Empty ROM: "+b);return}if(1==a.u.length){u(a.u[0]);return}}catch(g){a.ga("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.u=Array(b.length),e=0;e<b.length;e++)a.u[e]=ba(b[e],16);Jd(a)}}
function Jd(a){if(!jb(a))if(!a.I)D(a);else if(a.u&&a.A){a.w||(a.w=a.u.length);if(a.u.length!=a.w)kb(a,"ROM size (0x"+n(a.u.length)+") does not match specified size ("+("0x"+n(a.w))+")");else if(Kd(a,a.G)){var b=[];"number"==typeof a.C?b.push(a.C):null!=a.C&&a.C.length&&(b=a.C);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.A,h=d.w,g=[],k=d.G>>>f.na;0<h&&k<f.W.length;)g.push(f.W[k++]),h-=f.Ea;f=d.A;d=d.w;h=0;for(e>>>=f.na;0<d&&e<f.W.length;){k=g[h++];if(!k)break;f.W[e++]=k;d-=f.Ea}}delete a.u}D(a)}}
function Kd(a,b){if(ub(a.A,b,a.w,a.J?1:Vb)){var c;for(c=0;c<a.u.length;c++)zb(a.A,b+c,a.u[c]);if(a.J&&256==b){for(c=0;c<Id.length;c++)zb(a.A,Id[c],118);Ic(a.b,function(a){return function(b){if(0<=Id.indexOf(b)){var c=!1,h=a.b,g=a.H;if(5==b)switch(c=!0,h.S){case 2:Ld(a,String.fromCharCode(h.U));break;case 9:for(var k=Oc(h),l="",p=255;p--;){var q=a.b.Y(k++);if(36==q)break;l+=String.fromCharCode(q)}Ld(a,l);break;default:c=!1}c?Cd.call(h):g&&(a.g("\nCP/M vector "+t(b)),F(h,b),g.la());b=!0}else b=!1;return b}}(a));
Kc(a.b,b)}return!0}return!1}function Ld(a,b){b=b.replace(/\r/g,"");a.Da&&(a.Da.value+=b,a.Da.scrollTop=a.Da.scrollHeight)}Ia(function(){for(var a=B(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Gd(d);db(d,c)}});function Md(a){x.call(this,"RAM",a,Md);this.C=a.addr;this.w=a.size;this.u=!1}Za(Md);m=Md.prototype;m.Na=function(a,b,c,d){this.A=b;this.b=c;this.H=d;D(this)};m.Aa=function(a,b){b||this.reset();return!0};m.Fa=function(a){return a?this.save():!0};
m.reset=function(){!this.u&&this.w&&ub(this.A,this.C,this.w,1)&&(this.u=!0);this.u||u("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ia(function(){for(var a=B(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Md(d);db(d,c)}});function Nd(a){x.call(this,"Keyboard",a,Nd,65536);(a=a.model)&&!Od[a]&&Ka("Unrecognized Keyboard model: "+a);this.A=Od[a]||{};this.reset();D(this)}Za(Nd);
var Pd={ya:1978.1,B:{},dc:{65:37,68:39,76:32},ub:{},vb:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},W={ya:100,B:{},dc:{},ub:{},vb:{},Gc:{za:130,INIT:127},Ia:{za:130,Qc:1,Pc:2,Oc:4,Nc:8,Rc:16,gc:32,fc:63,bd:64,Od:128,INIT:0},Mc:127};W.B[46]=3;W.B[80]=5;W.B[79]=6;W.B[89]=7;W.B[84]=8;W.B[87]=9;W.B[81]=10;W.B[39]=16;W.B[221]=20;W.B[219]=21;W.B[73]=22;W.B[85]=23;W.B[82]=24;W.B[69]=25;W.B[49]=26;W.B[37]=32;W.B[40]=34;W.B[117]=35;W.B[19]=35;W.B[192]=36;W.B[189]=37;W.B[57]=38;W.B[55]=39;W.B[52]=40;
W.B[51]=41;W.B[27]=42;W.B[38]=48;W.B[114]=49;W.B[112]=50;W.B[8]=51;W.B[187]=52;W.B[48]=53;W.B[56]=54;W.B[54]=55;W.B[53]=56;W.B[50]=57;W.B[9]=58;W.B[103]=64;W.B[115]=65;W.B[113]=66;W.B[96]=67;W.B[118]=68;W.B[220]=69;W.B[76]=70;W.B[75]=71;W.B[71]=72;W.B[70]=73;W.B[65]=74;W.B[104]=80;W.B[2013]=81;W.B[98]=82;W.B[97]=83;W.B[222]=85;W.B[186]=86;W.B[74]=87;W.B[72]=88;W.B[68]=89;W.B[83]=90;W.B[110]=96;W.B[116]=97;W.B[101]=98;W.B[100]=99;W.B[13]=100;W.B[190]=101;W.B[188]=102;W.B[78]=103;W.B[66]=104;
W.B[88]=105;W.B[119]=106;W.B[105]=112;W.B[99]=113;W.B[102]=114;W.B[109]=115;W.B[191]=117;W.B[77]=118;W.B[32]=119;W.B[86]=120;W.B[67]=121;W.B[90]=122;W.B[120]=123;W.B[17]=124;W.B[16]=125;W.B[20]=126;W.ub={l4:W.Ia.Pc,l3:W.Ia.Oc,l2:W.Ia.Nc,l1:W.Ia.Mc,locked:W.Ia.Qc,online:W.Ia.hc,local:~W.Ia.hc};var Pd={SI1978:Rd,VT100:W};
Od.prototype.ka=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.L[e]){if("led"==a&&this.u.ub[b])return this.L[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return Sd(d,a,!0)},c.onkeyup=function(a){return Sd(d,a,!1)},!0;default:if(this.u.vb&&void 0!==this.u.vb[b])return this.L[e]=c,a=function(a,b){return function(){Td(a,b,!0)}}(this,b),b=function(a,b){return function(){Td(a,b,!1)}}(this,b),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=b):(c.onmousedown=a,c.onmouseup=c.onmouseout=
b),!0}}return!1};Od.prototype.Na=function(a,b,c,d){this.b=c;this.I=d;this.D=qb(a,"ChipSet");Bb(b,this,this.u.Pb);Fb(b,this,this.u.Qb)};Od.prototype.Aa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};Od.prototype.Fa=function(a){return a?this.save():!0};W.INIT=[[W.Ia.INIT,W.Fc.INIT,-1]];m=Od.prototype;m.reset=function(){this.A=[];this.u.INIT&&!this.restore(this.u.INIT)&&this.ga("reset error")};
m.save=function(){var a=new G(this);switch(this.u.ya){case W.ya:H(a,0,[this.H,this.F,-1])}return a.data()};m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.u.ya){case Rd.ya:return!0;case W.ya:return this.H=b[0],Ud(this,this.H&W.Ia.ec),this.F=b[1],this.w=b[2],!0}return!1};function Ud(a,b){for(var c in a.u.ub){var d=a.L["led-"+c];if(d){var e=a.u.ub[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
function Sd(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=Qd[e]||e,!a.u.B[e]){for(var f in a.u.vb)if(a.u.vb[f]===e){e=f;break a}e=null}e&&(d=Td(a,e,c),b.preventDefault());return d}
function Td(a,b,c){var d;a:{for(d=0;d<a.A.length;d++)if(a.A[d].bc==b)break a;d=-1}if(c)0>d?a.A.push({bc:b,Yb:Date.now(),Ib:!1}):(a.A[d].Yb=Date.now(),a.A[d].Ib=!1);else if(0<=d){if(!a.A[d].Ib){var e=a.A[d].Yb;if(e&&100>Date.now()-e)return a.A[d].Ib=!0,Vd(a),!0}a.A.splice(d,1)}if(a.D)switch(b){case "1p":Fd(a.D,U.Sa.Tc,c);break;case "2p":Fd(a.D,U.Sa.Xc,c);break;case "coin":Fd(a.D,U.Sa.Hc,c);break;case "left":Fd(a.D,U.Sa.Vc,c);break;case "right":Fd(a.D,U.Sa.Wc,c);break;case "fire":Fd(a.D,U.Sa.Uc,c)}return!0}
function Vd(a){for(var b=0,c=-1;b<a.A.length;){if(a.A[b].Ib){var d=a.A[b].bc,e=100-(Date.now()-a.A[b].Yb);if(0<e){if(0>c||c>e)c=e}else{Td(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){Vd(a)},c)}m.pd=function(a,b){var c=this.F;0<=this.w&&(this.w<this.A.length?(c=this.A[this.w++],c=W.B[c.bc],c&128&&(c&=127)):(this.w=-1,c=W.Lc),this.F=c,ed(this.b,1));C(this,a,null,b,"KBDUART.ADDRESS",c);return c};
m.Ed=function(a,b,c){C(this,a,b,c,"KBDUART.STATUS");this.H=b;Ud(this,b&W.Ia.ec);b&W.Ia.ad&&(this.w=0,ed(this.b,1))};W.Pb={130:Od.prototype.pd};W.Qb={130:Od.prototype.Ed};Ia(function(){for(var a=B(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Od(d);db(d,c)}});
function Wd(a,b,c,d,e){var f=this;this.qc=wa("Gecko/");var h=["","moz","ms","webkit"];x.call(this,"Video",a,Wd,262144);this.ba=a.screenWidth;this.Z=a.screenHeight;this.va=a.bufferAddr;this.Id=a.bufferRAM;var g=a.bufferFormat;this.ea=g&&Xd[g.toUpperCase()]||Yd;this.Ja=a.bufferCols;this.fa=a.bufferRows;this.Fd=this.qa=a.cellWidth||1;this.ia=a.cellHeight||1;this.bb=null;this.pc=!1;this.Ta=a.bufferBits||1;this.Jd=a.bufferLeft||0;if(this.D=a.bufferRotate)this.D=this.D%360,0<this.D&&(this.D-=360),-90!=
this.D&&(this.ga("unsupported buffer rotation: "+this.D),this.D=0);this.Wb=a.interruptRate;this.Kd=a.refreshRate||60;this.P=b;this.F=c;this.Ba=(this.Ld=d)||b||null;this.Gd=this.ba;this.Hd=this.Z;this.Lb=this.ba/this.Ja|0;this.Mb=this.Z/this.fa|0;1<this.ia&&this.fa++;b=a.smoothing;(c=Ra.smoothing)&&(b="true"==c);if(null!=b)for(c=0;c<h.length;c++)if(d=(d=h[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.F[d]){this.F[d]=b;break}if(this.H=a.screenRotate)this.H=this.H%360,0<this.H&&
(this.H-=360),-90!=this.H?(this.ga("unsupported screen rotation: "+this.H),this.H=0):(this.F.translate(0,this.Z),this.F.rotate(this.H*Math.PI/180),this.F.scale(this.Z/this.ba,this.ba/this.Z));if(this.w=e)if(this.w.fb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.w.fb){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){Zd(f,document.fullscreenElement||document.msFullscreenElement||document.mozFullScreenElement||
document.webkitFullscreenElement?!0:!1)},!1);break}for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){Zd(f,null)},!1);break}}if(this.ha=a.fontROM)"json"!=da(this.ha)&&(this.ha=pa()+"/api/v1/dump?file="+this.ha+"&format=bytes"),oa(this.ha,null,!0,function(a,b,c){$d(f,a,b,c)});this.wb={}}Za(Wd);var Yd=0,Xd={SI1978:1,VT100:2};
Wd.prototype.Na=function(a,b,c,d){this.u=a;this.A=b;this.b=c;this.I=d;this.K=this.Ja*this.qa;this.da=this.fa*this.ia;b=this.K;c=this.da;this.D&&(b=this.da,c=this.K);this.Ua=(this.K*this.Ta>>3)*this.da;if(this.Id||ub(this.A,this.va,this.Ua,3))1<this.qa?ae(this,(this.Ja+1)*this.fa):(this.rc=this.F.createImageData(b,c),this.xc=16/this.Ta|0,ae(this,this.Ua>>1)),this.O=document.createElement("canvas"),this.O.width=b,this.O.height=c,this.cb=this.O.getContext("2d"),this.ma={},this.Ca=1<<this.Ta,this.oa=
Array(this.Ca+2),this.oa[0]=[0,0,0,255],this.oa[1]=[255,255,255,255],1==this.ea&&(this.oa[this.Ca+0]=[255,255,0,255],this.oa[this.Ca+1]=[0,255,0,255]),2==this.ea&&(this.yc=60,this.eb=!1,this.Ka=Array(this.Ja));if(this.M=qb(a,"Keyboard")){for(var e in this.wb)this.M.ka("led",e,this.wb[e]);this.P&&this.M.ka(this.Ld?"textarea":"canvas","kbd",this.Ba)}this.ha||D(this)};
function $d(a,b,c,d){if(d)a.ga("Unable to load font ROM (error "+d+": "+b+")");else{ab(a.Tb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){u("Empty font ROM: "+b);return}if(1==f.length){u(f[0]);return}if(2048==f.length)be(a,f);else{a.ga("Unrecognized font data length ("+f.length+")");return}}catch(h){a.ga("Font ROM data error: "+h.message);return}(a.F||a.I)&&D(a)}}
function be(a,b){a.bb=b;a.pc=2==a.ea;a.ma[96]=[ce(a,a.qa,a.ia),ce(a,a.qa,a.ia,a.eb)];a.ma[64]=[ce(a,2*a.qa,a.ia),ce(a,2*a.qa,a.ia,a.eb)];a.ma[32]=a.ma[0]=[ce(a,2*a.qa,2*a.ia),ce(a,2*a.qa,2*a.ia,a.eb)]}
function ce(a,b,c,d){var e=8>=a.Fd?8:16,f=8<e?15:0,h=a.bb.length/e,g=!1===d,k={qa:b,ia:c};k.canvas=document.createElement("canvas");k.canvas.width=16*b;k.canvas.height=h/16*c;k.context=k.canvas.getContext("2d");for(var l=k.context.createImageData(b,c),p=0;p<h;p++){for(var q=0,r=q;q<a.ia;q++)for(var y=p*e+(f+q&e-1),y=d&&8==q?255:a.bb[y],v=0;v<c/a.ia;v++){for(var I=0,w=0,J=w;w<a.qa;w++){for(var A=y&128>>(7<w?7:w),I=a.pc&&!A&&I?I:A,R=0;R<b/a.qa;R++)g&&(I=!I),de(a,l,J,r,I?1:0),J++;I=A}r++}k.context.putImageData(l,
W.B[88]=105;W.B[119]=106;W.B[105]=112;W.B[99]=113;W.B[102]=114;W.B[109]=115;W.B[191]=117;W.B[77]=118;W.B[32]=119;W.B[86]=120;W.B[67]=121;W.B[90]=122;W.B[120]=123;W.B[17]=124;W.B[16]=125;W.B[20]=126;W.ub={l4:W.Ia.Qc,l3:W.Ia.Pc,l2:W.Ia.Oc,l1:W.Ia.Nc,locked:W.Ia.Rc,local:W.Ia.gc,online:~W.Ia.gc};var Od={SI1978:Pd,VT100:W};
Nd.prototype.ka=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.L[e]){if("led"==a&&this.A.ub[b])return this.L[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return Qd(d,a,!0)},c.onkeyup=function(a){return Qd(d,a,!1)},!0;default:if(this.A.vb&&void 0!==this.A.vb[b])return this.L[e]=c,a=function(a,b){return function(){Rd(a,b,!0)}}(this,b),b=function(a,b){return function(){Rd(a,b,!1)}}(this,b),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=b):(c.onmousedown=a,c.onmouseup=c.onmouseout=
b),!0}}return!1};Nd.prototype.Na=function(a,b,c,d){this.b=c;this.H=d;this.I=qb(a,"ChipSet");Bb(b,this,this.A.Pb);Fb(b,this,this.A.Qb)};Nd.prototype.Aa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};Nd.prototype.Fa=function(a){return a?this.save():!0};W.INIT=[[W.Ia.INIT,W.Gc.INIT,-1]];m=Nd.prototype;m.reset=function(){this.u=[];this.A.INIT&&!this.restore(this.A.INIT)&&this.ga("reset error")};
m.save=function(){var a=new G(this);switch(this.A.ya){case W.ya:H(a,0,[this.G,this.C,-1])}return a.data()};m.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.A.ya){case Pd.ya:return!0;case W.ya:return this.G=b[0],Sd(this,this.G&W.Ia.fc),this.C=b[1],this.w=b[2],!0}return!1};function Sd(a,b){for(var c in a.A.ub){var d=a.L["led-"+c];if(d){var e=a.A.ub[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}
function Qd(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.A.dc[e]||e,!a.A.B[e]){for(var f in a.A.vb)if(a.A.vb[f]===e){e=f;break a}e=null}e&&(d=Rd(a,e,c),b.preventDefault());return d}
function Rd(a,b,c){var d;a:{for(d=0;d<a.u.length;d++)if(a.u[d].bc==b)break a;d=-1}if(c)0>d?a.u.push({bc:b,Yb:Date.now(),Ib:!1}):(a.u[d].Yb=Date.now(),a.u[d].Ib=!1);else if(0<=d){if(!a.u[d].Ib){var e=a.u[d].Yb;if(e&&100>Date.now()-e)return a.u[d].Ib=!0,Td(a),!0}a.u.splice(d,1)}if(a.I){d=0;switch(b){case "1p":d=U.Sa.Uc;break;case "2p":d=U.Sa.Yc;break;case "coin":d=U.Sa.Ic;break;case "left":d=U.Sa.Wc;break;case "right":d=U.Sa.Xc;break;case "fire":d=U.Sa.Vc}d&&(a=a.I,b=d,a.I&=~b,c&&(a.I|=b))}return!0}
function Td(a){for(var b=0,c=-1;b<a.u.length;){if(a.u[b].Ib){var d=a.u[b].bc,e=100-(Date.now()-a.u[b].Yb);if(0<e){if(0>c||c>e)c=e}else{Rd(a,d,!1);b=0;continue}}b++}0<=c&&setTimeout(function(){Td(a)},c)}m.qd=function(a,b){var c=this.C;0<=this.w&&(this.w<this.u.length?(c=this.u[this.w],this.w++,c=W.B[c.bc],c&128&&(c&=127)):(this.w=-1,c=W.Mc),this.C=c,ed(this.b,1));C(this,a,null,b,"KBDUART.ADDRESS",c);return c};
m.Fd=function(a,b,c){C(this,a,b,c,"KBDUART.STATUS");this.G=b;Sd(this,b&W.Ia.fc);b&W.Ia.bd&&(this.w=0,ed(this.b,1))};W.Pb={130:Nd.prototype.qd};W.Qb={130:Nd.prototype.Fd};Ia(function(){for(var a=B(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new Nd(d);db(d,c)}});
function Ud(a,b,c,d,e){var f=this;this.rc=wa("Gecko/");var h=["","moz","ms","webkit"];x.call(this,"Video",a,Ud,262144);this.ba=a.screenWidth;this.Z=a.screenHeight;this.va=a.bufferAddr;this.Jd=a.bufferRAM;var g=a.bufferFormat;this.ea=g&&Vd[g.toUpperCase()]||Wd;this.Ja=a.bufferCols;this.fa=a.bufferRows;this.Gd=this.qa=a.cellWidth||1;this.ia=a.cellHeight||1;this.bb=null;this.qc=!1;this.Ta=a.bufferBits||1;this.Kd=a.bufferLeft||0;if(this.C=a.bufferRotate)this.C=this.C%360,0<this.C&&(this.C-=360),-90!=
this.C&&(this.ga("unsupported buffer rotation: "+this.C),this.C=0);this.Wb=a.interruptRate;this.Ld=a.refreshRate||60;this.P=b;this.I=c;this.Ba=(this.Md=d)||b||null;this.Hd=this.ba;this.Id=this.Z;this.Lb=this.ba/this.Ja|0;this.Mb=this.Z/this.fa|0;1<this.ia&&this.fa++;b=a.smoothing;(c=Ra.smoothing)&&(b="true"==c);if(null!=b)for(c=0;c<h.length;c++)if(d=(d=h[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.I[d]){this.I[d]=b;break}if(this.G=a.screenRotate)this.G=this.G%360,0<this.G&&
(this.G-=360),-90!=this.G?(this.ga("unsupported screen rotation: "+this.G),this.G=0):(this.I.translate(0,this.Z),this.I.rotate(this.G*Math.PI/180),this.I.scale(this.Z/this.ba,this.ba/this.Z));if(this.w=e)if(this.w.fb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.w.fb){for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){Xd(f,document.fullscreenElement||document.msFullscreenElement||document.mozFullScreenElement||
document.webkitFullscreenElement?!0:!1)},!1);break}for(c=0;c<h.length;c++)if(d=h[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){Xd(f,null)},!1);break}}if(this.ha=a.fontROM)"json"!=da(this.ha)&&(this.ha=pa()+"/api/v1/dump?file="+this.ha+"&format=bytes"),oa(this.ha,null,!0,function(a,b,c){Yd(f,a,b,c)});this.wb={}}Za(Ud);var Wd=0,Vd={SI1978:1,VT100:2};
Ud.prototype.Na=function(a,b,c,d){this.u=a;this.A=b;this.b=c;this.H=d;this.K=this.Ja*this.qa;this.da=this.fa*this.ia;b=this.K;c=this.da;this.C&&(b=this.da,c=this.K);this.Ua=(this.K*this.Ta>>3)*this.da;if(this.Jd||ub(this.A,this.va,this.Ua,3))1<this.qa?Zd(this,(this.Ja+1)*this.fa):(this.sc=this.I.createImageData(b,c),this.yc=16/this.Ta|0,Zd(this,this.Ua>>1)),this.O=document.createElement("canvas"),this.O.width=b,this.O.height=c,this.cb=this.O.getContext("2d"),this.ma={},this.Ca=1<<this.Ta,this.oa=
Array(this.Ca+2),this.oa[0]=[0,0,0,255],this.oa[1]=[255,255,255,255],1==this.ea&&(this.oa[this.Ca+0]=[255,255,0,255],this.oa[this.Ca+1]=[0,255,0,255]),2==this.ea&&(this.zc=60,this.eb=!1,this.Ka=Array(this.Ja));if(this.M=qb(a,"Keyboard")){for(var e in this.wb)this.M.ka("led",e,this.wb[e]);this.P&&this.M.ka(this.Md?"textarea":"canvas","kbd",this.Ba)}this.ha||D(this)};
function Yd(a,b,c,d){if(d)a.ga("Unable to load font ROM (error "+d+": "+b+")");else{ab(a.Tb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){u("Empty font ROM: "+b);return}if(1==f.length){u(f[0]);return}if(2048==f.length)$d(a,f);else{a.ga("Unrecognized font data length ("+f.length+")");return}}catch(h){a.ga("Font ROM data error: "+h.message);return}(a.I||a.H)&&D(a)}}
function $d(a,b){a.bb=b;a.qc=2==a.ea;a.ma[96]=[ae(a,a.qa,a.ia),ae(a,a.qa,a.ia,a.eb)];a.ma[64]=[ae(a,2*a.qa,a.ia),ae(a,2*a.qa,a.ia,a.eb)];a.ma[32]=a.ma[0]=[ae(a,2*a.qa,2*a.ia),ae(a,2*a.qa,2*a.ia,a.eb)]}
function ae(a,b,c,d){var e=8>=a.Gd?8:16,f=8<e?15:0,h=a.bb.length/e,g=!1===d,k={qa:b,ia:c};k.canvas=document.createElement("canvas");k.canvas.width=16*b;k.canvas.height=h/16*c;k.context=k.canvas.getContext("2d");for(var l=k.context.createImageData(b,c),p=0;p<h;p++){for(var q=0,r=q;q<a.ia;q++)for(var y=p*e+(f+q&e-1),y=d&&8==q?255:a.bb[y],v=0;v<c/a.ia;v++){for(var I=0,w=0,J=w;w<a.qa;w++){for(var A=y&128>>(7<w?7:w),I=a.qc&&!A&&I?I:A,R=0;R<b/a.qa;R++)g&&(I=!I),be(a,l,J,r,I?1:0),J++;I=A}r++}k.context.putImageData(l,
(p&15)*b,(p>>4)*c)}return k}
Wd.prototype.Aa=function(){if(2==this.ea){for(var a={0:[32,"SET-UP A"],2:[64,'TO EXIT PRESS "SET-UP"'],22:[96," T T T T T T T T T"],23:[96,"1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890"],24:[]},b=this.va,c=-1,d=-1,e,f=-(60==this.yc?2:5);f<this.fa;f++){var h=a[f];if(0<=c){var g=!1,c=b+2;h?h.length?d=h[0]:(c=b-1,g=!0):32==d&&(h=a[f-1],d=0);e=d&96|c>>8&15|16;zb(this.A,b++,e);zb(this.A,b++,
c&255);if(g)break}if(h)for(c=0,e=1;e<h.length;e++){for(var g=h[e],k=0;k<g.length;k++)zb(this.A,b++,g.charCodeAt(k)|c);c^=128}zb(this.A,b++,127);c=b}ee(this)}return!0};Wd.prototype.ka=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.wb[b]=c,!0;switch(b){case "fullScreen":return this.L[b]=c,this.w&&this.w.fb?c.onclick=function(){d.fb()}:c.parentNode.removeChild(c),!0}return!1};
Wd.prototype.fb=function(){var a=!1;if(this.w){if(this.w.fb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.ba/this.Z;b>c&&(a=Math.round(c/b*100)+"%")}this.qc?(this.P.style.width=a,this.P.style.width=a,this.P.style.display="block",this.P.style.margin="auto"):(this.w.style.width=a,this.w.style.height="auto");this.w.style.backgroundColor="black";this.w.fb();a=!0}this.Ba&&this.Ba.focus()}return a};
function Zd(a,b){!b&&a.w&&(a.qc?a.P.style.width=a.P.style.height="":a.w.style.width=a.w.style.height="");fb(a,"notifyFullScreen("+b+")",!0)}function ae(a,b){a.wc=b;a.wa=!1;if(void 0===a.J||a.J.length!=a.wc)a.J=Array(a.wc)}function de(a,b,c,d,e){d=a.D?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.ea&&(208<=c&&236>c?e=a.Ca+0:28<=c&&72>c&&(e=a.Ca+1));a=a.oa[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function ee(a){for(var b=a.va,c=-1,d=0,e=60==a.yc?2:5,f=0,h=0;d<a.fa;){var g=0,k=b,l=c,p=a.Ja;for(96!=l&&(p>>=1);;){var q=xb(a.A,k++);if(127==(q&127)){var r=xb(a.A,k++),c=r&96,b=(r&15)<<8|xb(a.A,k),b=b+(r&16?8192:16384);break}if(g<p)a.Ka[g++]=q;else break}if(e)e--;else{for(;g<a.Ka.length;)a.Ka[g++]=0;if(0<=l)for(k=a.wa&&a.J[f]==p,a.J[f++]=p,p=0;p<g;p++){q=a.Ka[p];if(!k||q!==a.J[f]){a.J[f]=q;var r=a,y=a.cb,v=q&127;if(q=r.ma[l][q&128?1:0]){var I=(v&15)*q.qa,v=(v>>4)*q.ia,w=void 0,J=void 0,A=void 0,
R=void 0,za=q.qa,Z=q.ia;y?(w=p*r.qa,J=d*r.ia,A=r.qa,R=r.ia):(w=p*r.Lb,J=d*r.Mb,A=r.Lb,R=r.Mb);q.qa>r.qa&&(w*=2,A*=2);q.ia>r.ia&&(0==l&&(v+=r.ia),Z=r.ia);y?y.drawImage(q.canvas,I,v,za,Z,w,J,A,R):(w+=0,J+=0,r.F.drawImage(q.canvas,I,v,za,Z,w,J,A,R))}h++}f++}d++}}a.wa=!0;h&&a.cb&&a.F.drawImage(a.O,0,0,a.K,a.da-a.ia,0,0,a.Gd,a.Hd)}
Ud.prototype.Aa=function(){if(2==this.ea){for(var a={0:[32,"SET-UP A"],2:[64,'TO EXIT PRESS "SET-UP"'],22:[96," T T T T T T T T T"],23:[96,"1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890","1234567890"],24:[]},b=this.va,c=-1,d=-1,e,f=-(60==this.zc?2:5);f<this.fa;f++){var h=a[f];if(0<=c){var g=!1,c=b+2;h?h.length?d=h[0]:(c=b-1,g=!0):32==d&&(h=a[f-1],d=0);e=d&96|c>>8&15|16;zb(this.A,b++,e);zb(this.A,b++,
c&255);if(g)break}if(h)for(c=0,e=1;e<h.length;e++){for(var g=h[e],k=0;k<g.length;k++)zb(this.A,b++,g.charCodeAt(k)|c);c^=128}zb(this.A,b++,127);c=b}ce(this)}return!0};Ud.prototype.ka=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.wb[b]=c,!0;switch(b){case "fullScreen":return this.L[b]=c,this.w&&this.w.fb?c.onclick=function(){d.fb()}:c.parentNode.removeChild(c),!0}return!1};
Ud.prototype.fb=function(){var a=!1;if(this.w){if(this.w.fb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.ba/this.Z;b>c&&(a=Math.round(c/b*100)+"%")}this.rc?(this.P.style.width=a,this.P.style.width=a,this.P.style.display="block",this.P.style.margin="auto"):(this.w.style.width=a,this.w.style.height="auto");this.w.style.backgroundColor="black";this.w.fb();a=!0}this.Ba&&this.Ba.focus()}return a};
function Xd(a,b){!b&&a.w&&(a.rc?a.P.style.width=a.P.style.height="":a.w.style.width=a.w.style.height="");fb(a,"notifyFullScreen("+b+")",!0)}function Zd(a,b){a.xc=b;a.wa=!1;if(void 0===a.J||a.J.length!=a.xc)a.J=Array(a.xc)}function be(a,b,c,d,e){d=a.C?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.ea&&(208<=c&&236>c?e=a.Ca+0:28<=c&&72>c&&(e=a.Ca+1));a=a.oa[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function ce(a){for(var b=a.va,c=-1,d=0,e=60==a.zc?2:5,f=0,h=0;d<a.fa;){var g=0,k=b,l=c,p=a.Ja;for(96!=l&&(p>>=1);;){var q=xb(a.A,k++);if(127==(q&127)){var r=xb(a.A,k++),c=r&96,b=(r&15)<<8|xb(a.A,k),b=b+(r&16?8192:16384);break}if(g<p)a.Ka[g++]=q;else break}if(e)e--;else{for(;g<a.Ka.length;)a.Ka[g++]=0;if(0<=l)for(k=a.wa&&a.J[f]==p,a.J[f++]=p,p=0;p<g;p++){q=a.Ka[p];if(!k||q!==a.J[f]){a.J[f]=q;var r=a,y=a.cb,v=q&127;if(q=r.ma[l][q&128?1:0]){var I=(v&15)*q.qa,v=(v>>4)*q.ia,w=void 0,J=void 0,A=void 0,
R=void 0,za=q.qa,Z=q.ia;y?(w=p*r.qa,J=d*r.ia,A=r.qa,R=r.ia):(w=p*r.Lb,J=d*r.Mb,A=r.Lb,R=r.Mb);q.qa>r.qa&&(w*=2,A*=2);q.ia>r.ia&&(0==l&&(v+=r.ia),Z=r.ia);y?y.drawImage(q.canvas,I,v,za,Z,w,J,A,R):(w+=0,J+=0,r.I.drawImage(q.canvas,I,v,za,Z,w,J,A,R))}h++}f++}d++}}a.wa=!0;h&&a.cb&&a.I.drawImage(a.O,0,0,a.K,a.da-a.ia,0,0,a.Hd,a.Id)}
Ia(function(){for(var a=B(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=z(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<=qa().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");wa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new Wd(d,e,h,f,c);db(d,c)}});
function fe(a){this.H=+a.adapter;switch(this.H){case 0:this.J=0;break;default:u("Unrecognized serial adapter #"+this.H);return}x.call(this,"SerialPort",a,fe,8388608);var b=a.binding;if("console"!=b){var c;a=ge;b&&(void 0===c&&(c="Panel"),(c=cb(c,this.id))&&(b=c.L[b])&&this.ka(null,a,b))}}Za(fe);var ge="buffer";m=fe.prototype;
m.ka=function(a,b,c){switch(b){case ge:return this.L[b]=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;(8===b||a.ctrlKey&&65<=b&&90>=b)&&a.preventDefault&&a.preventDefault();return!0},c.onkeypress=function(a){a=a||window.event;a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0}return!1};m.Na=function(a,b,c,d){this.A=b;this.b=c;this.I=d;this.D=qb(a,"ChipSet");Bb(b,this,he,this.J);Fb(b,this,ie,this.J);D(this)};
m.Aa=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};m.Fa=function(a){return a?this.save():!0};m.reset=function(){je(this)};m.save=function(){var a=new G(this),b=0,c=[];c[b++]=this.w;c[b++]=this.u;c[b++]=this.F;H(a,0,c);return a.data()};m.restore=function(a){return je(this,a[0])};function je(a,b){var c=0;void 0===b&&(b=[0,0,0]);a.w=b[c++];a.u=b[c++];a.F=b[c++];return!0}m.jd=function(a,b){var c=this.w;C(this,a,null,b,"DATA",c);return c};
m.hd=function(a,b){var c=this.u;C(this,a,null,b,"COMMAND",c);return c};m.ud=function(a,b,c){C(this,a,b,c,"DATA");this.w=b};m.td=function(a,b,c){C(this,a,b,c,"COMMAND");this.u=b};m.sd=function(a,b,c){C(this,a,b,c,"BAUDRATE");this.F=b};var he={0:fe.prototype.jd,1:fe.prototype.hd},ie={0:fe.prototype.ud,1:fe.prototype.td,2:fe.prototype.sd};Ia(function(){for(var a=B(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new fe(d);db(d,c)}});
function ke(a){x.call(this,"Debugger",a,ke);this.style=le;this.da=this.Ca=this.M=0;this.P=X();this.bb=X();this.F=-1;this.D=[];this.fa=!1;this.ea=X();this.J=[];this.ha={};this.w=this.Z=this.H=[];me(this);this.va=0;ne(this);this.Ja=[];oe(this,a.messages);this.Ka=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return kc(b,a)}):void 0===global.$&&(global.$=function(a){return kc(b,a)})}Za(ke);
var pe={"?":"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","int [#]":"request interrupt",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"},
le=8080,qe="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(" "),re="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(" "),
se="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),te=[[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,
(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");wa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new Ud(d,e,h,f,c);db(d,c)}});
function de(a){this.G=+a.adapter;switch(this.G){case 0:this.J=0;break;default:u("Unrecognized serial adapter #"+this.G);return}x.call(this,"SerialPort",a,de,8388608);var b=a.binding;if("console"!=b){var c;a=ee;b&&(void 0===c&&(c="Panel"),(c=cb(c,this.id))&&(b=c.L[b])&&this.ka(null,a,b))}}Za(de);var ee="buffer";m=de.prototype;
m.ka=function(a,b,c){switch(b){case ee:return this.L[b]=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;(8===b||a.ctrlKey&&65<=b&&90>=b)&&a.preventDefault&&a.preventDefault();return!0},c.onkeypress=function(a){a=a||window.event;a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0}return!1};m.Na=function(a,b,c,d){this.A=b;this.b=c;this.H=d;this.I=qb(a,"ChipSet");Bb(b,this,fe,this.J);Fb(b,this,ge,this.J);D(this)};
m.Aa=function(a,b){if(!b)if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};m.Fa=function(a){return a?this.save():!0};m.reset=function(){he(this)};m.save=function(){var a=new G(this),b=0,c=[];c[b++]=this.w;c[b++]=this.u;c[b++]=this.C;H(a,0,c);return a.data()};m.restore=function(a){return he(this,a[0])};function he(a,b){var c=0;void 0===b&&(b=[0,0,0]);a.w=b[c++];a.u=b[c++];a.C=b[c++];return!0}m.kd=function(a,b){var c=this.w;C(this,a,null,b,"DATA",c);return c};
m.jd=function(a,b){var c=this.u;C(this,a,null,b,"COMMAND",c);return c};m.vd=function(a,b,c){C(this,a,b,c,"DATA");this.w=b};m.ud=function(a,b,c){C(this,a,b,c,"COMMAND");this.u=b};m.td=function(a,b,c){C(this,a,b,c,"BAUDRATE");this.C=b};var fe={0:de.prototype.kd,1:de.prototype.jd},ge={0:de.prototype.vd,1:de.prototype.ud,2:de.prototype.td};Ia(function(){for(var a=B(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new de(d);db(d,c)}});
function ie(a){x.call(this,"Debugger",a,ie);this.style=je;this.da=this.Ca=this.M=0;this.P=X();this.bb=X();this.I=-1;this.C=[];this.fa=!1;this.ea=X();this.J=[];this.ha={};this.w=this.Z=this.G=[];ke(this);this.va=0;le(this);this.Ja=[];me(this,a.messages);this.Ka=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return kc(b,a)}):void 0===global.$&&(global.$=function(a){return kc(b,a)})}Za(ie);
var ne={"?":"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","int [#]":"request interrupt",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"},
je=8080,oe="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(" "),pe="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(" "),
qe="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),re=[[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,3603],[35,51],[24],[12,51],[51,3603],[47,18193,33],[65,128],[56],[69,19219,18963],[32,51],[25],[9,51],[7,32819],[19,18193,33],[65,128]],ue={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:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};m=ke.prototype;
m.Na=function(a,b,c,d){this.A=b;this.b=c;this.u=a;(a=hc(a,"messages"))&&oe(this,a);this.Ta=te;ve(this,function(a){a:{var b=d.A.W,c=a[0],g=a=0,k=b.length;if(c){a=we(xe(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.A.na;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=wb[c],p&&d.g(n(p.id)+" %"+n(g<<d.A.na)+" %%"+n(p.G)+" "+t(p.Fb)+" "+
18193,33],[65,128],[59],[50,3603],[35,51],[24],[12,51],[51,3603],[47,18193,33],[65,128],[56],[69,19219,18963],[32,51],[25],[9,51],[7,32819],[19,18193,33],[65,128]],se={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:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};m=ie.prototype;
m.Na=function(a,b,c,d){this.A=b;this.b=c;this.u=a;(a=hc(a,"messages"))&&me(this,a);this.Ta=re;te(this,function(a){a:{var b=d.A.W,c=a[0],g=a=0,k=b.length;if(c){a=ue(ve(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.A.na;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=wb[c],p&&d.g(n(p.id)+" %"+n(g<<d.A.na)+" %%"+n(p.F)+" "+t(p.Fb)+" "+
t(p.size)+" "+l),c!=Ub&&(c=-1),l=0);a+=d.A.Ea;g++}}});D(this)};
m.ka=function(a,b,c){var d=this;switch(b){case "debugInput":return this.oa=this.L[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",kc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.F<d.D.length-1&&(b=d.D[++d.F]):40==a.keyCode&&(0<d.F?b=d.D[--d.F]:(b="",d.F=-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.L[b]=c,ya(c,function(){if(d.oa){var a=d.oa.value;d.oa.value=
"";kc(d,a,!0);return!0}return!1}),!0;case "step":return this.L[b]=c,ya(c,function(a){var b=!1;ib(d,!0)||(hb(d,!0),b=d.rb(a?1:0),hb(d,!1));return b}),!0}return!1};m.Eb=function(){this.oa&&this.oa.focus()};function we(a){a=a&&a.G;null==a&&(a=-1);return a}m.Y=function(a,b){var c=255,d=we(a);-1!==d&&(c=xb(this.A,d),b&&ye(a,b));return c};m.Qa=function(a,b){var c=65535,d=we(a);-1!==d&&(c=yb(this.A,d),b&&ye(a,b));return c};m.ra=function(a,b,c){var d=we(a);-1!==d&&(zb(this.A,d,b),c&&ye(a,c),lc(this.b,!0))};
m.Rb=function(a,b,c){var d=we(a);if(-1!==d){var e=this.A,f=d&e.A,h=(d&e.D)>>>e.na;f!=e.A?e.W[h].cc(f,b&65535,d):(e.W[h++].Gb(f,b&255,d),e.W[h&e.K].Gb(0,b>>8&255,d+1));c&&ye(a,c);lc(this.b,!0)}};function X(a){return{G:a,Ma:!1}}function ze(a){return[a.G,a.Ma]}function Ae(a){return{G:a[0],Ma:a[1]}}
function xe(a,b,c){var d;c=(c?a.P:a.bb).G;if(void 0!==b){d=b=Be(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].Oa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=X(d));break}}if(d=e)return d;c=Ce(a,b,void 0)}null!=c&&(d=X(c));return d}function De(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.ed=Ee(a,b.Bc=c[2]))}function ye(a,b){null!=a.G&&(a.G+=b||1)}function Y(a){return n(a,4)}
function Fe(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.Y(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function oe(a,b){a.I=a;a.pa=a.fd=536870912;a.wa=null;a.Ba=[];var c=Ee(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in ue)0<=na(c,d)&&(a.pa|=ue[d],a.g(d+" messages enabled"))}function ve(a,b){for(var c in ue)if(64==ue[c]){a.Ja[c]=b;break}}
function Ge(a,b){var c;a=a.toUpperCase();null==b?c=na(se,a):(c=na(se,a.substr(b,2)),0>c&&(c=na(se,a.substr(b,1))));return c}function He(a,b){var c=0,d=Ie(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:case 14:c=4}return c?n(d,c):"??"}
function Ie(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.R;break;case 1:c=d.S;break;case 8:c=Mc(d);break;case 2:c=d.T;break;case 3:c=d.U;break;case 9:c=Oc(d);break;case 4:c=d.V;break;case 5:c=d.X;break;case 10:c=K(d);break;case 6:c=d.Y(K(d));break;case 11:c=d.ja;break;case 12:c=d.N;break;case 13:c=Lc(d);break;case 14:c=Lc(d)&255|d.j<<8}}return c}
function Je(a,b){b=Be(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Ge(b,c+1),0<=e&&(b=b.substr(0,c)+He(a,e)+b.substr(c+1+se[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=ba(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=xe(a,e))?(d=e+' "'+Fe(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=xe(a,e))?(ye(d),d=e+' "'+
Fe(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+Y(X(this.b.N).G));if(this.pa&1073741824)this.Ba.push(a);else if(!this.wa||a!=this.wa)if(this.wa=a,this.pa&-2147483648&&(this.la(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.ob=0;c.F-=c.b;c.b=0;lc(c)}};
m.ka=function(a,b,c){var d=this;switch(b){case "debugInput":return this.oa=this.L[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",kc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.I<d.C.length-1&&(b=d.C[++d.I]):40==a.keyCode&&(0<d.I?b=d.C[--d.I]:(b="",d.I=-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.L[b]=c,ya(c,function(){if(d.oa){var a=d.oa.value;d.oa.value=
"";kc(d,a,!0);return!0}return!1}),!0;case "step":return this.L[b]=c,ya(c,function(a){var b=!1;ib(d,!0)||(hb(d,!0),b=d.rb(a?1:0),hb(d,!1));return b}),!0}return!1};m.Eb=function(){this.oa&&this.oa.focus()};function ue(a){a=a&&a.F;null==a&&(a=-1);return a}m.Y=function(a,b){var c=255,d=ue(a);-1!==d&&(c=xb(this.A,d),b&&we(a,b));return c};m.Qa=function(a,b){var c=65535,d=ue(a);-1!==d&&(c=yb(this.A,d),b&&we(a,b));return c};m.ra=function(a,b,c){var d=ue(a);-1!==d&&(zb(this.A,d,b),c&&we(a,c),lc(this.b,!0))};
m.Rb=function(a,b,c){var d=ue(a);if(-1!==d){var e=this.A,f=d&e.A,h=(d&e.C)>>>e.na;f!=e.A?e.W[h].cc(f,b&65535,d):(e.W[h++].Gb(f,b&255,d),e.W[h&e.K].Gb(0,b>>8&255,d+1));c&&we(a,c);lc(this.b,!0)}};function X(a){return{F:a,Ma:!1}}function xe(a){return[a.F,a.Ma]}function ye(a){return{F:a[0],Ma:a[1]}}
function ve(a,b,c){var d;c=(c?a.P:a.bb).F;if(void 0!==b){d=b=ze(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].Oa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=X(d));break}}if(d=e)return d;c=Ae(a,b,void 0)}null!=c&&(d=X(c));return d}function Be(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.fd=Ce(a,b.Cc=c[2]))}function we(a,b){null!=a.F&&(a.F+=b||1)}function Y(a){return n(a,4)}
function De(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.Y(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function me(a,b){a.H=a;a.pa=a.gd=536870912;a.wa=null;a.Ba=[];var c=Ce(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in se)0<=na(c,d)&&(a.pa|=se[d],a.g(d+" messages enabled"))}function te(a,b){for(var c in se)if(64==se[c]){a.Ja[c]=b;break}}
function Ee(a,b){var c;a=a.toUpperCase();null==b?c=na(qe,a):(c=na(qe,a.substr(b,2)),0>c&&(c=na(qe,a.substr(b,1))));return c}function Fe(a,b){var c=0,d=Ge(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:case 14:c=4}return c?n(d,c):"??"}
function Ge(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.R;break;case 1:c=d.S;break;case 8:c=Mc(d);break;case 2:c=d.T;break;case 3:c=d.U;break;case 9:c=Oc(d);break;case 4:c=d.V;break;case 5:c=d.X;break;case 10:c=K(d);break;case 6:c=d.Y(K(d));break;case 11:c=d.ja;break;case 12:c=d.N;break;case 13:c=Lc(d);break;case 14:c=Lc(d)&255|d.j<<8}}return c}
function He(a,b){b=ze(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Ee(b,c+1),0<=e&&(b=b.substr(0,c)+Fe(a,e)+b.substr(c+1+qe[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=ba(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=ve(a,e))?(d=e+' "'+De(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=ve(a,e))?(we(d),d=e+' "'+
De(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+Y(X(this.b.N).F));if(this.pa&1073741824)this.Ba.push(a);else if(!this.wa||a!=this.wa)if(this.wa=a,this.pa&-2147483648&&(this.la(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.ob=0;c.C-=c.b;c.b=0;lc(c)}};
function eb(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.pa&g)!=g||a.message(b.ab+"."+(null!=d?"outPort":"inPort")+"("+t(c)+","+(f?f:"unknown")+(null!=d?",0x"+n(d,2):"")+")"+(null!=h?": 0x"+n(h,2):"")+(null!=e?" at "+Y(e):""))}
function ne(a){var b;if(fd(a)){if(!a.O||!a.O.length){a.O=Array(1E3);for(b=0;b<a.O.length;b++)a.O[b]=X();a.ma=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.O&&a.O.length&&a.g("instruction history buffer freed"),a.ma=0,a.O=[],a.K=[]}m.$a=function(a){if(!Ke(this))return!1;this.b.$a(a);return!0};
m.rb=function(a,b,c){if(!Ke(this))return!1;this.M=0;a||fd(this)&&zd(this,this.b.N,0);try{var d=this.b.rb(a);0<d&&(this.M+=d,Cc(this.b,d,!0),nc(this.b,d),this.da++)}catch(e){"number"!=typeof e&&(this.M=0,kb(this.b,e.stack||e.message))}!1!==c&&lc(this.b);this.Ga(b||!1);return 0<this.M};m.la=function(a){this.b&&this.b.la(a)};m.Ga=function(a){void 0===a&&(a=!0);this.P=X(this.b.N);a&&1!=this.ba?Le(this):Me(this)};
function Ke(a){var b;if(b=a.b&&jb(a.b))b=a.b,b.C.sa?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!ib(a.b)?(a=a.b,a.C.ib?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.Aa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.Fa=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){ne(this);this.da=this.Ca=0;this.wa=null;this.M=0;this.P=X(this.b.N);this.C.xa=!1;Ne(this);a||this.Ga()};
m.save=function(){var a=new G(this);H(a,0,ze(this.P));H(a,1,ze(this.ea));H(a,2,[this.D,this.fa,this.pa]);H(a,3,this.J);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.P=Ae(a[b++]),this.ea=Ae(a[b++]),this.D=a[b][0],"string"==typeof this.D&&(this.D=[this.D]),this.fa=a[b][1],this.pa|=a[b][2]);a[3]&&(this.J=a[3]);return!0};m.start=function(a,b){this.ba||this.g("running");this.C.xa=!0;this.wb=a;this.Lb=b};
m.stop=function(a,b){if(this.C.xa){this.C.xa=!1;this.M=b-this.Lb;if(!this.ba){var c="stopped";if(this.M){var d=a-this.wb,e=0<d?Math.round(1E3*this.M/d):0,c=c+" (";fd(this)&&(c+=this.da+" opcodes, ",this.Ca-=this.da,this.da=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.Ga(!0);this.Eb();Ne(this,this.b.N)}};function fd(a){return 1<a.w.length||!!a.va}
function zd(a,b,c){var d=a.b;if(0<c&&(a.va&&!--a.va||cc(a,b,1,a.w)))return!0;0<=c&&a.K.length&&(a.da++,b=xb(a.A,b),null!=b&&(a.K[b][1]++,b=a.O[a.ma],b.G=d.N,b.Ma=!1,++a.ma==a.O.length&&(a.ma=0)));return!1}function Db(a,b,c){a.g("break on input from port "+t(b)+": "+n(c));a.la(!0)}function Hb(a,b,c){a.g("break on output to port "+t(b)+": "+n(c));a.la(!0)}
function me(a){var b,c;a.w=["bp"];if(void 0!==a.Z)for(b=1;b<a.Z.length;b++){c=a.Z[b];var d=a.A;dc(d.W[we(c)>>>d.na],!1)}a.Z=["br"];if(void 0!==a.H)for(b=1;b<a.H.length;b++)c=a.H[b],d=a.A,dc(d.W[we(c)>>>d.na],!0);a.H=["bw"];a.cb=0}m.Va=function(a,b,c){var d=!0;c||mf(this,a,b,!1,!0);if(a!=this.w){var e=we(b);if(-1===e)this.g("invalid address: "+Y(b.G)),d=!1;else{var f=this.A;f.W[e>>>f.na].Va(e&f.A,a==this.H)}}d&&(a.push(b),c?b.Ma=!0:(nf(this,a,a.length-1,"set"),ne(this)));return d};
function mf(a,b,c,d,e){var f=!1;c=we(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==we(g)&&(!d||g.Ma)){f=!0;g.Ma||e||nf(a,b,h,"cleared");b.splice(h,1);b!=a.w&&(d=a.A,dc(d.W[c>>>d.na],b==a.H));g.Ma||ne(a);break}}return f}function of(a,b){for(var c=1;c<b.length;c++)nf(a,b,c);return b.length-1}function nf(a,b,c,d){c=b[c];a.g(b[0]+" "+Y(c.G)+(d?" "+d:c.Bc?' "'+c.Bc+'"':""))}
function Ne(a,b){if(void 0!==b)cc(a,b,1,a.w,!0),a.ba=0;else for(var c=1;c<a.w.length;c++){var d=a.w[c];if(d.Ma){if(!mf(a,a.w,d,!0))break;c=0}}}
function cc(a,b,c,d,e){var f=!1;if(!a.cb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.Ma)for(var k=we(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.Ma&&(mf(a,d,g,!0),e=!0);if(p=g.ed){for(var f=!1,q=0;q<p.length;q++)if(!pf(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var r=q+1;r<p.length&&p[r].indexOf("else");r++)q++;if(r==p.length){f=!0;break}}a.b.C.xa||(f=!0)}if(f){e||nf(a,d,h,"hit");break}}}a.cb--;return f}
function qf(a,b,c,d){for(var e=X(b.G),f=a.Y(b,1),h=a.Ta[f],g="",k=(8086!=a.style?qe:re)[h[0]],l=h.length-1,p=0,q,r=1;r<=l;r++){var y="";q=h[r];if(void 0!==q&&!(q&16384&&a.style==le)){var v=q&240;if(v){var I=q&15;I?p=I:q|=p;q&61440||(q|=1==r?8192:4096);if(v&32)a:{var y=a,v=q,I=b,w=" ";switch(v&15){case 1:w=n(y.Y(I,1),2);break;case 2:w=n(y.Y(I,1)<<24>>24,4);break;case 3:w=n(y.Qa(I,2),4);break;default:y="imm("+t(v)+")";break a}8086==y.style&&v&64?w="["+w+"]":v&16||(w=(y.style==le?"$":"0x")+w);y=w}else v&
16?(y=(q&3840)>>8,v=se[y],8086==a.style&&q&64&&(6==y&&(v="HL"),v="["+v+"]"),y=v):v&128&&(y=(f>>3&7).toString());if(!y||!y.length){g="INVALID";break}0<g.length&&(g+=",");g+=y||"???"}}}f="";h=Y(e.G)+" ";if(-1!==e.G&&-1!==b.G){do if(f+=n(a.Y(e,1),2),null==e.G)break;while(e.G!=b.G)}h+=ia(f,10);h=h+(q&32768?"*":" ")+ia(k,7);g&&(h+=" "+g);c&&(h=ia(h,40)+";"+c,h=a.b.C.hb?h+("cycles="+oc(a.b).toString()+" cs="+n(a.b.i.xb)):h+(null!=d?"="+d.toString():""));return h}
function rf(a,b){var c;switch(b){case "IF":c=a.b.ta&512;break;case "SF":c=Wc(a.b);break;case "ZF":c=Vc(a.b);break;case "AF":c=Uc(a.b);break;case "PF":c=Tc(a.b);break;case "CF":c=Rc(a.b);break;default:c=0}return b.charAt(0)+(c?"1":"0")+" "}function sf(a,b){return se[b]+"="+He(a,b)+" "}function tf(a){return sf(a,7)+sf(a,8)+sf(a,9)+sf(a,10)+sf(a,11)+rf(a,"IF")+rf(a,"SF")+rf(a,"ZF")+rf(a,"AF")+rf(a,"PF")+rf(a,"CF")}
var uf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function vf(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;
function le(a){var b;if(yd(a)){if(!a.O||!a.O.length){a.O=Array(1E3);for(b=0;b<a.O.length;b++)a.O[b]=X();a.ma=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.O&&a.O.length&&a.g("instruction history buffer freed"),a.ma=0,a.O=[],a.K=[]}m.$a=function(a){if(!Ie(this))return!1;this.b.$a(a);return!0};
m.rb=function(a,b,c){if(!Ie(this))return!1;this.M=0;a||yd(this)&&zd(this,this.b.N,0);try{var d=this.b.rb(a);0<d&&(this.M+=d,Cc(this.b,d,!0),nc(this.b,d),this.da++)}catch(e){"number"!=typeof e&&(this.M=0,kb(this.b,e.stack||e.message))}!1!==c&&lc(this.b);this.Ga(b||!1);return 0<this.M};m.la=function(a){this.b&&this.b.la(a)};m.Ga=function(a){void 0===a&&(a=!0);this.P=X(this.b.N);a&&1!=this.ba?Je(this):Ke(this)};
function Ie(a){var b;if(b=a.b&&jb(a.b))b=a.b,b.D.sa?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!ib(a.b)?(a=a.b,a.D.ib?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.Aa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.Fa=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){le(this);this.da=this.Ca=0;this.wa=null;this.M=0;this.P=X(this.b.N);this.D.xa=!1;Le(this);a||this.Ga()};
m.save=function(){var a=new G(this);H(a,0,xe(this.P));H(a,1,xe(this.ea));H(a,2,[this.C,this.fa,this.pa]);H(a,3,this.J);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.P=ye(a[b++]),this.ea=ye(a[b++]),this.C=a[b][0],"string"==typeof this.C&&(this.C=[this.C]),this.fa=a[b][1],this.pa|=a[b][2]);a[3]&&(this.J=a[3]);return!0};m.start=function(a,b){this.ba||this.g("running");this.D.xa=!0;this.wb=a;this.Lb=b};
m.stop=function(a,b){if(this.D.xa){this.D.xa=!1;this.M=b-this.Lb;if(!this.ba){var c="stopped";if(this.M){var d=a-this.wb,e=0<d?Math.round(1E3*this.M/d):0,c=c+" (";yd(this)&&(c+=this.da+" opcodes, ",this.Ca-=this.da,this.da=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.Ga(!0);this.Eb();Le(this,this.b.N)}};function yd(a){return 1<a.w.length||!!a.va}
function zd(a,b,c){var d=a.b;if(0<c&&(a.va&&!--a.va||cc(a,b,1,a.w)))return!0;0<=c&&a.K.length&&(a.da++,b=xb(a.A,b),null!=b&&(a.K[b][1]++,b=a.O[a.ma],b.F=d.N,b.Ma=!1,++a.ma==a.O.length&&(a.ma=0)));return!1}function Db(a,b,c){a.g("break on input from port "+t(b)+": "+n(c));a.la(!0)}function Hb(a,b,c){a.g("break on output to port "+t(b)+": "+n(c));a.la(!0)}
function ke(a){var b,c;a.w=["bp"];if(void 0!==a.Z)for(b=1;b<a.Z.length;b++){c=a.Z[b];var d=a.A;dc(d.W[ue(c)>>>d.na],!1)}a.Z=["br"];if(void 0!==a.G)for(b=1;b<a.G.length;b++)c=a.G[b],d=a.A,dc(d.W[ue(c)>>>d.na],!0);a.G=["bw"];a.cb=0}m.Va=function(a,b,c){var d=!0;c||Me(this,a,b,!1,!0);if(a!=this.w){var e=ue(b);if(-1===e)this.g("invalid address: "+Y(b.F)),d=!1;else{var f=this.A;f.W[e>>>f.na].Va(e&f.A,a==this.G)}}d&&(a.push(b),c?b.Ma=!0:(lf(this,a,a.length-1,"set"),le(this)));return d};
function Me(a,b,c,d,e){var f=!1;c=ue(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==ue(g)&&(!d||g.Ma)){f=!0;g.Ma||e||lf(a,b,h,"cleared");b.splice(h,1);b!=a.w&&(d=a.A,dc(d.W[c>>>d.na],b==a.G));g.Ma||le(a);break}}return f}function mf(a,b){for(var c=1;c<b.length;c++)lf(a,b,c);return b.length-1}function lf(a,b,c,d){c=b[c];a.g(b[0]+" "+Y(c.F)+(d?" "+d:c.Cc?' "'+c.Cc+'"':""))}
function Le(a,b){if(void 0!==b)cc(a,b,1,a.w,!0),a.ba=0;else for(var c=1;c<a.w.length;c++){var d=a.w[c];if(d.Ma){if(!Me(a,a.w,d,!0))break;c=0}}}
function cc(a,b,c,d,e){var f=!1;if(!a.cb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.Ma)for(var k=ue(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.Ma&&(Me(a,d,g,!0),e=!0);if(p=g.fd){for(var f=!1,q=0;q<p.length;q++)if(!nf(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var r=q+1;r<p.length&&p[r].indexOf("else");r++)q++;if(r==p.length){f=!0;break}}a.b.D.xa||(f=!0)}if(f){e||lf(a,d,h,"hit");break}}}a.cb--;return f}
function of(a,b,c,d){for(var e=X(b.F),f=a.Y(b,1),h=a.Ta[f],g="",k=(8086!=a.style?oe:pe)[h[0]],l=h.length-1,p=0,q,r=1;r<=l;r++){var y="";q=h[r];if(void 0!==q&&!(q&16384&&a.style==je)){var v=q&240;if(v){var I=q&15;I?p=I:q|=p;q&61440||(q|=1==r?8192:4096);if(v&32)a:{var y=a,v=q,I=b,w=" ";switch(v&15){case 1:w=n(y.Y(I,1),2);break;case 2:w=n(y.Y(I,1)<<24>>24,4);break;case 3:w=n(y.Qa(I,2),4);break;default:y="imm("+t(v)+")";break a}8086==y.style&&v&64?w="["+w+"]":v&16||(w=(y.style==je?"$":"0x")+w);y=w}else v&
16?(y=(q&3840)>>8,v=qe[y],8086==a.style&&q&64&&(6==y&&(v="HL"),v="["+v+"]"),y=v):v&128&&(y=(f>>3&7).toString());if(!y||!y.length){g="INVALID";break}0<g.length&&(g+=",");g+=y||"???"}}}f="";h=Y(e.F)+" ";if(-1!==e.F&&-1!==b.F){do if(f+=n(a.Y(e,1),2),null==e.F)break;while(e.F!=b.F)}h+=ia(f,10);h=h+(q&32768?"*":" ")+ia(k,7);g&&(h+=" "+g);c&&(h=ia(h,40)+";"+c,h=a.b.D.hb?h+("cycles="+Ac(a.b).toString()+" cs="+n(a.b.i.xb)):h+(null!=d?"="+d.toString():""));return h}
function pf(a,b){var c;switch(b){case "IF":c=a.b.ta&512;break;case "SF":c=Wc(a.b);break;case "ZF":c=Vc(a.b);break;case "AF":c=Uc(a.b);break;case "PF":c=Tc(a.b);break;case "CF":c=Rc(a.b);break;default:c=0}return b.charAt(0)+(c?"1":"0")+" "}function qf(a,b){return qe[b]+"="+Fe(a,b)+" "}function rf(a){return qf(a,7)+qf(a,8)+qf(a,9)+qf(a,10)+qf(a,11)+pf(a,"IF")+pf(a,"SF")+pf(a,"ZF")+pf(a,"AF")+pf(a,"PF")+pf(a,"CF")}
var sf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function tf(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 Ce(a,b,c){var d;if(b){b=Be(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var p=l[e++],q=p.length,p=ja(p);if(!p){f=!0;break}p=wf(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++],r=p.length;k.length&&uf[p]<uf[k[k.length-1]]&&vf(g,k,1);k.push(p);b=b.substr(q+r)}vf(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&xf(a,null,
d))}return d}function Be(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Ce(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=xe(a,c[1]),b=b.replace("["+c[1]+"]",d?n(a.Qa(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.da-a.Ca}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
function wf(a,b,c,d){var e;void 0!==b?(e=Ge(b),0<=e?e=Ie(a,e):(e=a.ha[b],void 0===e&&(e=ba(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
function xf(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"+n(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function yf(a,b){if(b)return xf(a,b,a.ha[b]);var c=0;for(b in a.ha)xf(a,b,a.ha[b]),c++;return 0<c}ke.prototype.Ua=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function zf(a,b,c){var d=[],e=we(b)>>>0;for(b=0;b<a.J.length;b++){var f=a.J[b],h=f.G>>>0,g=f.qd;if(e>=h&&e<h+g){e=ka(f.ic,[e-h],a.Ua);0<=e?Af(a,b,e,d):c&&(e=~e,Af(a,b,e-1,d),Af(a,b,e,d));break}}return d}function Af(a,b,c,d){var e={},f=a.J[b].ic,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.J[b].Oa[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
function Bf(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?qe:re;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.Ta[h][0]]+" ").substr(0,5)+" ("+("0x"+n(h,2))+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
function Cf(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return yf(a)||a.g("no variables"),!0;if(!c[2])return yf(a,c[1]);if(!c[3])return delete a.ha[c[1]],!0;var d=Ce(a,c[3]);return void 0!==d?(a.ha[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
function Df(a,b,c){var d=null;if(b=xe(a,b,!0)){var e=zf(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.G-e[1])&&(h=" + "+t(f)),f=e[0]+" ("+Y(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.G)&&(h=" - "+t(f)),f=e[4]+" ("+Y(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
function Ef(a,b){switch(b[1]){case "8080":a.style=le;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.lb=c;break;case "start":a.b.i.yb=c;break;case "stop":a.b.i.nb=c;break;default:a.g("unknown cs option");return}void 0!==c&&jc(a.b);a.g("checksums "+(a.b.C.hb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Bc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.Xa.toFixed(2)+"Mhz")+
function Ae(a,b,c){var d;if(b){b=ze(a,b);for(var e=0,f=!1,h=b,g=[],k=[],l=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<l.length;){var p=l[e++],q=p.length,p=ja(p);if(!p){f=!0;break}p=uf(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++],r=p.length;k.length&&sf[p]<sf[k[k.length-1]]&&tf(g,k,1);k.push(p);b=b.substr(q+r)}tf(g,k)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&vf(a,null,
d))}return d}function ze(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Ae(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=ve(a,c[1]),b=b.replace("["+c[1]+"]",d?n(a.Qa(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.da-a.Ca}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
function uf(a,b,c,d){var e;void 0!==b?(e=Ee(b),0<=e?e=Ge(a,e):(e=a.ha[b],void 0===e&&(e=ba(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
function vf(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"+n(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function wf(a,b){if(b)return vf(a,b,a.ha[b]);var c=0;for(b in a.ha)vf(a,b,a.ha[b]),c++;return 0<c}ie.prototype.Ua=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function xf(a,b,c){var d=[],e=ue(b)>>>0;for(b=0;b<a.J.length;b++){var f=a.J[b],h=f.F>>>0,g=f.rd;if(e>=h&&e<h+g){e=ka(f.jc,[e-h],a.Ua);0<=e?yf(a,b,e,d):c&&(e=~e,yf(a,b,e-1,d),yf(a,b,e,d));break}}return d}function yf(a,b,c,d){var e={},f=a.J[b].jc,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.J[b].Oa[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
function zf(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?oe:pe;for(c=0;c<e.length;c++){var h=e[c][0],g=e[c][1];g&&(a.g((f[a.Ta[h][0]]+" ").substr(0,5)+" ("+("0x"+n(h,2))+"): "+g+" times"),d++)}}d||a.g("no frequency data available")}}
function Af(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return wf(a)||a.g("no variables"),!0;if(!c[2])return wf(a,c[1]);if(!c[3])return delete a.ha[c[1]],!0;var d=Ae(a,c[3]);return void 0!==d?(a.ha[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
function Bf(a,b,c){var d=null;if(b=ve(a,b,!0)){var e=xf(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.F-e[1])&&(h=" + "+t(f)),f=e[0]+" ("+Y(e[1])+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.F)&&(h=" - "+t(f)),f=e[4]+" ("+Y(e[5])+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
function Cf(a,b){switch(b[1]){case "8080":a.style=je;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.lb=c;break;case "start":a.b.i.yb=c;break;case "stop":a.b.i.nb=c;break;default:a.g("unknown cs option");return}void 0!==c&&jc(a.b);a.g("checksums "+(a.b.D.hb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Bc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.Xa.toFixed(2)+"Mhz")+
" ("+a.b.i.Za+"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 Le(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=Ce(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.j=g&255;break;case "B":d.R=g&255;break;case "BC":d.R=g>>8&255;case "C":d.S=g&255;break;case "D":d.T=
function Je(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=Ae(a,f);if(void 0!==g)switch(h=!0,e.toUpperCase()){case "A":d.j=g&255;break;case "B":d.R=g&255;break;case "BC":d.R=g>>8&255;case "C":d.S=g&255;break;case "D":d.T=
g&255;break;case "DE":d.T=g>>8&255;case "E":d.U=g&255;break;case "H":d.V=g&255;break;case "HL":d.V=g>>8&255;case "L":d.X=g&255;break;case "SP":d.ja=g&65535;break;case "PC":F(d,g);a.P=X(d.N);break;case "PS":Jc(d,g);break;case "PSW":Jc(d,g&255|d.ta&-256);d.j=g>>8;break;case "CF":d.aa=g?d.aa|256:d.aa&255;break;case "PF":g?Tc(d)||(d.ca^=1):Tc(d)&&(d.ca^=1);break;case "AF":d.ua=g?~d.ca&16|d.ua&-17:d.ca&16|d.ua&-17;break;case "ZF":d.aa=g?d.aa&-256:d.aa|255;break;case "SF":g?Wc(d)||(d.ca^=192):Wc(d)&&(d.ca^=
192);break;case "IF":d.ta=g?d.ta|512:d.ta&-513;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}lc(d);a.g("updated registers:")}a.g(tf(a));c&&(a.P=X(d.N),Me(a,Y(a.P.G)))}}function Ff(a,b){b=ja(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Je(a,c[2])):Ce(a,b,!0)}function Gf(a,b,c){var d="t"!=b;c=wf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);xa(c,function(){return hb(a,!0)&&a.rb(e,d,!1)},function(){lc(a.b);hb(a,!1)})}
function Me(a,b,c,d){if(b=xe(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=xe(a,c,!0);if(!d||d.G<b.G)return;e=d.G-b.G;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=zf(a,b),k=b.G;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=qf(a,b,h,f);a.g(f);a.P=b;e-=b.G-k;c++}}}
function Ee(a,b,c,d){if(c)if(b){0>a.F&&a.D.length&&(a.F=0);if(0>a.F||b!=a.D[a.F])a.D.splice(0,0,b),a.F=0;a.F--}else a.fa?b="end":b=a.D[a.F+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(ja(b.substring(c,f))),c=f+1}}return a}
function pf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.fa&&(a.g("ended assemble at "+Y(a.ea.G)),a.P=a.ea,a.fa=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.wa=null;if(jb(a)&&0<b.length){a.fa&&(b="a "+Y(a.ea.G)+" "+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=xe(a,f[1],!0);if(p)if(a.ea=
p,void 0===f[2])a.g("begin assemble at "+Y(p.G)),a.fa=!0,lc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var r=0;r<q.length;r++)a.ra(p,q[r],1);a.g(qf(a,a.ea))}}break;case "b":a:{var y=f[0],v=f[1],I=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 w=y.charAt(1);if("l"==w){var J=0,J=J+of(a,a.w),J=J+of(a,a.Z);(J+=of(a,a.H))||a.g("no breakpoints")}else if("n"==w)a.va=wf(a,v),a.g("break after "+a.va+" instruction(s)");else if(void 0===v)a.g("missing breakpoint address");else{var A=X();if("*"!=v&&(A=xe(a,v,!0),!A))break a;v=t(A.G);"c"==w?null==A.G?(me(a),a.g("all breakpoints cleared")):mf(a,a.w,A)||mf(a,a.Z,A)||
mf(a,a.H,A)||a.g("breakpoint missing: "+Y(A.G)):"i"==w?a.g("breakpoint "+(Ab(a.A,A.G)?"enabled":"cleared")+": port "+v+" (input)"):"o"==w?a.g("breakpoint "+(Eb(a.A,A.G)?"enabled":"cleared")+": port "+v+" (output)"):null!=A.G&&(De(a,A,I),"p"==w?a.Va(a.w,A):"r"==w?a.Va(a.Z,A):"w"==w?a.Va(a.H,A):a.g("unknown breakpoint command: "+w))}}}break;case "c":a.Da&&(a.Da.value="");break;case "d":a:{var R,za=f[0],Z=f[1],Va=f[2],ag=f[3];if("?"==Z){var Ba="";for(R in ue)a.Ja[R]&&(Ba&&(Ba+=","),Ba+=R);Ba+=",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");Ba.length&&a.g("dump extension commands:\n\t"+Ba)}else if("state"==Z){var Oe=Hf(a.u,!0);"console"==Va?console.log(Oe):(a.Da&&(a.Da.value=""),a.g(Oe))}else if("symbols"==Z)for(var gd=0;gd<a.J.length;gd++){var hd=a.J[gd],mb;for(mb in hd.Oa)if("."!=mb.charAt(0)){var Pe=hd.Oa[mb].o;
if(void 0!==Pe){var Qe=hd.Oa[mb].l;Qe&&(mb=Qe);a.g(Y(Pe)+" "+mb)}}}else{if("d"==za){for(R in ue)if(f[1]==R){var Re=a.Ja[R];Re?(f.shift(),f.shift(),Re(f)):a.g("no dump registered for "+Z);break a}Z||(za=a.Mb||"db")}else a.Mb=za;if("dh"==za){var Se=Z,Te=Va,Ue="",Ve=0,aa=a.ma,Ca=a.O;if(Ca.length){var fa=+Se||a.eb,nb=+Te||10;isNaN(fa)?fa=nb:Ue="more ";fa>Ca.length&&(a.g("note: only "+Ca.length+" available"),fa=Ca.length);aa-=fa;0>aa&&(null==Ca[Ca.length-1].G?(fa=aa+fa,aa=0):aa+=Ca.length);var id=[];"call"==
Te&&(nb=1E5,id=["CALL"]);for(void 0!==Se&&a.g(fa+" instructions earlier:");0<nb&&aa!=a.ma;){var We=Ca[aa++];if(null==We.G)break;var Lb=X(We.G),bg=fa--,Xe=qf(a,Lb,"history",bg);(!id.length||0<=Xe.indexOf(id[0]))&&a.g(Xe);Lb.Sb&&(aa+=Lb.Sb,nb-=Lb.Sb,fa-=Lb.Sb);aa>=Ca.length&&(aa=0);a.eb=fa;Ve++;nb--}}Ve||(a.g("no "+Ue+"history available"),a.eb=void 0)}else{var pc=xe(a,Z);if(pc){var qc=0;Va&&("l"==Va.charAt(0)&&(Va=Va.substr(1)||ag),qc=wf(a,Va)>>>0,65536<qc&&(qc=65536));for(var Wa="",rc="dd"==za?4:"dw"==
za?2:1,sc=rc*qc||128,cg=sc+15>>4||1;cg--&&0<sc;){var tc=0,jd=0,Mb,Nb="",kd="",Z=Y(pc.G);for(Mb=16;0<Mb&&0<sc;Mb--){var uc=a.Y(pc,1),tc=tc|uc<<(jd++<<3);jd==rc&&(Nb+=n(tc,2*rc),Nb+=1==rc?9==Mb?"-":" ":" ",tc=jd=0);kd+=32<=uc&&128>uc?String.fromCharCode(uc):".";sc--}Wa&&(Wa+="\n");Wa+=Z+" "+Nb+(0==Mb?" "+kd:"")}Wa&&a.g(Wa);a.bb=pc}}}}break;case "e":if("else"==f[0])break;var vc=1,Ye=255,Ze=a.Y,$e=a.ra;"ew"==f[0]&&(vc=2,Ye=65535,Ze=a.Qa,$e=a.Rb);var af=vc<<1,bf=f[1];if(null==bf)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 wc=xe(a,bf);if(wc)for(var xc=2;xc<f.length;xc++){var Ob=Ce(a,f[xc]);if(void 0===Ob){a.g("unrecognized value: "+f[xc]);break}Ob&~Ye&&a.g("warning: "+n(Ob)+" exceeds "+vc+"-byte value");var dg=Ze.call(a,wc);a.g("changing "+Y(wc.G)+" from 0x"+n(dg,af)+" to 0x"+n(Ob,af));$e.call(a,wc,Ob,vc)}}break;case "f":Bf(a,f[1]);break;case "g":a:{var cf=f[1],eg=b;if(void 0!==cf){var ld=xe(a,cf,!0);if(!ld)break a;
De(a,ld,eg);a.Va(a.w,ld,!0)}a.$a(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var md;if(a.C.xa)md="halting",a.la();else{if(ib(a,!0))break a;md="already halted"}c||a.g(md)}break;case "i":if("if"==f[0]){var nd;var Pb=b.substr(2),Pb=ja(Pb);Ce(a,Pb)?(c||a.g("true: "+Pb),nd=!0):(c||a.g("false: "+Pb),nd=!1);nd||(d=!1);break}if("int"==f[0]){var yc;var fg=f[1];if(a.b.ta&512){var od=Ce(a,fg);null==od?yc=!1:(a.g("requesting interrupt level "+od),ed(a.b,od),yc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),
yc=!1;yc||(d=!1);break}var pd=f[1];if(pd&&"?"!=pd){var qd=wf(a,pd);if(void 0!==qd){var gg=Cb(a.A,qd);a.g(t(qd)+": "+("0x"+n(gg,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 hg=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var rd=0,df=X(),Qb=X(a.b.ja);for(a.g("stack trace for "+Y(Qb.G));10>rd;){for(var Xa=null,ig=256;65536>Qb.G>>>0;){df.G=
a.Qa(Qb,2);if(null==Qb.G||!ig--)break;for(var jg=a,zc=df,ef=null,Rb=zc.G,ff=Rb,sd=1;6>=sd&&Rb;sd++){if(2<sd){zc.G=Rb;var Ac=qf(jg,zc);if(0<=Ac.indexOf("CALL")){var gf=Ac.indexOf(" ");if(Rb+(Ac.indexOf(" ",gf+1)-gf-1)/2==ff){ef=Ac;break}}}Rb--}zc.G=ff;if(Xa=ef)break}if(!Xa||null==Xa)break;var hf=null;if("ks"==hg){var jf=Xa.match(/[0-9A-F]+$/);jf&&(hf=Df(a,jf[0]))}Xa=ia(Xa,50)+" ;"+(hf||"stack="+Y(Qb.G));a.g(Xa);rd++}rd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Df(a,f[1],!0);
break}break;case "m":a:{var Da,Ea=null,O=f[1];"?"==O&&(O=void 0);if(void 0!==O){var Oa=0;if("all"==O)Oa=1878917119,O=null;else if("on"==O)Ea=!0,O=null;else if("off"==O)Ea=!1,O=null;else{"keys"==O&&(O="key");"kbd"==O&&(O="keyboard");for(Da in ue)if(O==Da){Oa=ue[Da];Ea=!!(a.pa&Oa);break}if(!Oa){a.g("unknown message category: "+O);break a}}if(Oa)if("on"==f[2])a.pa|=Oa,Ea=!0;else if("off"==f[2]&&(a.pa&=~Oa,Ea=!1,1073741824==Oa)){for(var td=0;td<a.Ba.length;td++)a.g(a.Ba[td]);a.Ba=[]}}var kg=0,Pa="";for(Da in ue)if(!O||
O==Da){var lg=!!(a.pa&ue[Da]);if(null===Ea||Ea==lg)Pa&&(Pa+=","),++kg%10||(Pa+="\n\t"),"key"==Da&&(Da="keys"),Pa+=Da}void 0===O&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ea?Ea?"messages on: ":"messages off: ":"message categories:\n\t")+(Pa||"none"));ne(a)}break;case "o":var ud=f[1],mg=f[2];if(ud&&"?"!=ud){var vd=wf(a,ud,"port #"),wd=wf(a,mg);void 0!==vd&&void 0!==wd&&(Gb(a.A,vd,wd),a.g(t(vd)+": "+("0x"+n(wd,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]){Ff(a,b.substr(5));break}var kf="pr"==f[0]?1:0,ng=1+kf;if(a.ba)a.g("step in progress");else{var xd=X(a.b.N);switch(a.Y(xd)){case 205:a.ba=ng,ye(xd,3)}a.ba?(a.Va(a.w,xd,!0),a.$a()||(a.u&&a.u.Eb(),a.ba=0)):Gf(a,kf?"tr":"t")}break;case "r":if("reset"==b){a.u&&a.u.reset();break}Le(a,f);break;case "s":Ef(a,f);break;case "t":Gf(a,f[0],f[1]);break;case "u":Me(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Cf(a,b.substr(3))||
(d=!1);break}a.g("PC8080 version 1.23.3 ("+a.b.sc+",RELEASE"+(lb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(qa());break;case "?":if(f[1]){Ff(a,b.substr(1));break}var Sb="commands:",yd;for(yd in pe)Sb+="\n"+ia(yd,9)+pe[yd];fd(a)||(Sb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Sb);break;default:a.g("unknown command: "+b),d=!1}}}catch(lf){a.g("debugger error: "+(lf.stack||lf.message)),d=!1}return d}function kc(a,b,c){b=Ee(a,b,c);for(var d in b)if(!pf(a,b[d]))return!1;return!0}
Ia(function(){for(var a=B(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new ke(d);db(d,c)}});function G(a,b,c){this.id=a.id;this.key=If(a,b,c);this.I=a.I;Jf(this,a.zc)}function If(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}
G.prototype={constructor:G,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){Jf(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 Jf(a,b){a[a.id]={};b&&H(a,"parms",b);a.b=!1}function Kf(a){var b=!0;if(ta()){var c=JSON.stringify(a[a.id]);va(a.key,c)||(u("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Lf(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){u(c.message||c),b=!1}return b}function Mf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:ta()&&(b=ua(a.key))?(a[a.id]=b,a.b=!0):!1}function Nf(a,b){return a[a.id][b]||null}function H(a,b,c){try{a[a.id][b]=c}catch(d){}}
function Of(a,b,c){x.call(this,"Computer",a,Of,67108864);this.C.sa=!1;Pf(this,b);this.ba=hc(this,"autoPower",a);this.D=0;this.ha=a.busWidth||a.buswidth;this.u=Qf;this.P=null;this.K=this.fa=!1;this.ma=hc(this,"url")||"";(Math.random()+.1).toString(36);this.w=Rf(this);if(this.b=cb("CPU",this.id)){this.I=cb("Debugger",this.id);this.J=[];for(b=null;b=qb(this,"Video",b);)this.J.push(b);this.A=new sb({id:this.Tb+".bus",busWidth:this.ha},this.b,this.I);var d,e=bb(this.id);if((this.F=cb("Panel",this.id))&&
this.F.Da)for(b=0;b<e.length;b++)d=e[b],d.ga=this.F.ga,d.g=this.F.g,d.Da=this.F.Da;this.g("PC8080 v1.23.3\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Na&&d.Na(this,this.A,this.b,this.I);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.O=d:this.u=parseInt(d,10));var f;if(a=hc(this,"state")||(f=!0,a.state))b=this.da=a,f||(this.K=!0,this.u=Qf),this.u&&(this.Z=new G(this,"1.23.3"),Mf(this.Z)?
b=null:delete this.Z);!b&&this.u&&(b=Sf(this))&&(this.K=!0);if(b){var h=this;oa(b,null,!0,function(a,b,c){c?(h.O=null,h.K=!1,h.ga("Unable to load machine state from server (error "+c+(b?": "+ja(b):"")+")")):(h.P=b,h.fa=!0);D(h)})}else D(this);this.L.power||(this.ba=!0);!c&&this.ba&&Tf(this,this.Cb)}else u("Unable to find CPU component")}Za(Of);var Qf=0;function Pf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){u(d.message+" ("+c+")")}}a.M=b}
function hc(a,b,c){var d=b.toLowerCase(),d=Ra[b]||Ra[d];void 0===d&&a.M&&(d=a.M[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Tf(a,b,c){for(var d=bb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!jb(f)){jb(f,function(){Tf(a,b,c)});return}}b.call(a,c)}
function Uf(a,b){var c=new G(a,"1.23.3","validate");if(Mf(c)&&Lf(c)){var d=Nf(c,"timestamp"),e=b?Nf(b,"timestamp"):"unknown";d!=e&&(a.ga("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=Of.prototype;
m.Cb=function(a){void 0===a&&(a=this.u||(this.P?1:Qf));if(!this.D){this.D++;var b=!1,c=!1;this.ea=!1;var d=this.Z||new G(this,"1.23.3");if(-1==a)b=!0;else if(a>Qf){if(Mf(d,this.P)){this.H=new G(this,"1.23.3","failsafe");Mf(this.H)&&(Vf(this,d),a=2,Jf(this.H));H(this.H,"timestamp",ma());Kf(this.H);var e=this.u&&!this.K;if(1==a||ra("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Lf(d)){var f=Nf(d,"code"),h=Nf(d,"data");f&&("ok"==f?Mf(d,h):("error"==f&&
"no machine state"!=h?(this.ga("Error: "+h),"unable to verify user"==h&&(va("user",""),this.w=null)):this.g(f+": "+h),Jf(d),Mf(d)?(c=Lf(d),e=!0):c=!1))}e&&Uf(this,c?d:null)}else 2==a&&d.clear()}else Uf(this);delete this.P;delete this.Z}e=bb(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=Wf(this,h,d,b,c));b=[d,a,c];-1!=a?Tf(this,this.jc,b):this.jc(b)}};
function Wf(a,b,c,d,e){if(!b.C.sa){b.C.sa=!0;if(b.Aa){var f=null;e&&((f=Nf(c,b.id))||(f=Nf(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Aa(f,d)&&f&&(u("Unable to restore state for "+b.type),a.da&&!a.fa?(c.clear(),a.u=Qf,window&&window.location.reload()):a.ea=!0,b.Aa(null),e=!1)}if(!d&&b.oc)for(a=b.oc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
m.jc=function(a){var b=a[0],c=0>a[1];a=a[2];this.oa=!0;this.C.sa=!0;var d=this.L.power;d&&(d.textContent="Shutdown");this.b&&(Wf(this,this.b,b,c,a),mc(this.b));this.ea&&(Vf(this,b),b.clear());!c&&this.H&&(this.H.clear(),delete this.H);this.D=0};
function Vf(a,b){if(ra("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.w||"",d=b.toString(),e={app:"PC8080",ver:"1.23.3"};e.url=a.ma;e.user=c;e.type="bug";e.data=d;oa("http://www.pcjs.org/api/v1/report",e,!0)}}
function Hf(a,b,c){var d,e="none";if(a.D)return null;a.D--;var f=new G(a,"1.23.3"),h=new G(a,"1.23.3","validate"),g=ma();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.23.3");H(f,"url",window?window.location.href:null);H(f,"browser",qa());a.b&&a.b.Fa&&(c&&a.b.la(),d=a.b.Fa(b,c),"object"===typeof d&&H(f,a.b.id,d),c&&(a.b.C.sa=!1,!1===d&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.C.sa&&(l.Fa&&(d=l.Fa(b,c),"object"===typeof d&&H(f,l.id,d)),c&&(l.C.sa=!1,!1===d&&(e=null)))}e&&
(c?(g=d=!1,b?(a.w&&Xf(a,a.w,f.toString()),Kf(h)&&Kf(f)||(e=null,d=g=!0)):a.u&&(d=!0,g=3==a.u),d&&f.clear(g)):e=f.toString());c&&(a.C.sa=!1,b=a.L.power)&&(b.textContent="Power");a.D=0;return e}m.reset=function(){this.A&&this.A.reset&&(fb(this,"Resetting "+this.A.type),this.A.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.A&&c.reset&&(fb(this,"Resetting "+c.type),c.reset())}};
192);break;case "IF":d.ta=g?d.ta|512:d.ta&-513;break;default:a.g("unknown register: "+e);return}if(!h){a.g("invalid value: "+f);return}lc(d);a.g("updated registers:")}a.g(rf(a));c&&(a.P=X(d.N),Ke(a,Y(a.P.F)))}}function Df(a,b){b=ja(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(He(a,c[2])):Ae(a,b,!0)}function Ef(a,b,c){var d="t"!=b;c=uf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);xa(c,function(){return hb(a,!0)&&a.rb(e,d,!1)},function(){lc(a.b);hb(a,!1)})}
function Ke(a,b,c,d){if(b=ve(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=ve(a,c,!0);if(!d||d.F<b.F)return;e=d.F-b.F;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=xf(a,b),k=b.F;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=of(a,b,h,f);a.g(f);a.P=b;e-=b.F-k;c++}}}
function Ce(a,b,c,d){if(c)if(b){0>a.I&&a.C.length&&(a.I=0);if(0>a.I||b!=a.C[a.I])a.C.splice(0,0,b),a.I=0;a.I--}else a.fa?b="end":b=a.C[a.I+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(ja(b.substring(c,f))),c=f+1}}return a}
function nf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.fa&&(a.g("ended assemble at "+Y(a.ea.F)),a.P=a.ea,a.fa=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.wa=null;if(jb(a)&&0<b.length){a.fa&&(b="a "+Y(a.ea.F)+" "+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=ve(a,f[1],!0);if(p)if(a.ea=
p,void 0===f[2])a.g("begin assemble at "+Y(p.F)),a.fa=!0,lc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var r=0;r<q.length;r++)a.ra(p,q[r],1);a.g(of(a,a.ea))}}break;case "b":a:{var y=f[0],v=f[1],I=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 w=y.charAt(1);if("l"==w){var J=0,J=J+mf(a,a.w),J=J+mf(a,a.Z);(J+=mf(a,a.G))||a.g("no breakpoints")}else if("n"==w)a.va=uf(a,v),a.g("break after "+a.va+" instruction(s)");else if(void 0===v)a.g("missing breakpoint address");else{var A=X();if("*"!=v&&(A=ve(a,v,!0),!A))break a;v=t(A.F);"c"==w?null==A.F?(ke(a),a.g("all breakpoints cleared")):Me(a,a.w,A)||Me(a,a.Z,A)||
Me(a,a.G,A)||a.g("breakpoint missing: "+Y(A.F)):"i"==w?a.g("breakpoint "+(Ab(a.A,A.F)?"enabled":"cleared")+": port "+v+" (input)"):"o"==w?a.g("breakpoint "+(Eb(a.A,A.F)?"enabled":"cleared")+": port "+v+" (output)"):null!=A.F&&(Be(a,A,I),"p"==w?a.Va(a.w,A):"r"==w?a.Va(a.Z,A):"w"==w?a.Va(a.G,A):a.g("unknown breakpoint command: "+w))}}}break;case "c":a.Da&&(a.Da.value="");break;case "d":a:{var R,za=f[0],Z=f[1],Va=f[2],Zf=f[3];if("?"==Z){var Ba="";for(R in se)a.Ja[R]&&(Ba&&(Ba+=","),Ba+=R);Ba+=",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");Ba.length&&a.g("dump extension commands:\n\t"+Ba)}else if("state"==Z){var Ne=Ff(a.u,!0);"console"==Va?console.log(Ne):(a.Da&&(a.Da.value=""),a.g(Ne))}else if("symbols"==Z)for(var fd=0;fd<a.J.length;fd++){var gd=a.J[fd],lb;for(lb in gd.Oa)if("."!=lb.charAt(0)){var Oe=gd.Oa[lb].o;
if(void 0!==Oe){var Pe=gd.Oa[lb].l;Pe&&(lb=Pe);a.g(Y(Oe)+" "+lb)}}}else{if("d"==za){for(R in se)if(f[1]==R){var Qe=a.Ja[R];Qe?(f.shift(),f.shift(),Qe(f)):a.g("no dump registered for "+Z);break a}Z||(za=a.Mb||"db")}else a.Mb=za;if("dh"==za){var Re=Z,Se=Va,Te="",Ue=0,aa=a.ma,Ca=a.O;if(Ca.length){var fa=+Re||a.eb,mb=+Se||10;isNaN(fa)?fa=mb:Te="more ";fa>Ca.length&&(a.g("note: only "+Ca.length+" available"),fa=Ca.length);aa-=fa;0>aa&&(null==Ca[Ca.length-1].F?(fa=aa+fa,aa=0):aa+=Ca.length);var hd=[];"call"==
Se&&(mb=1E5,hd=["CALL"]);for(void 0!==Re&&a.g(fa+" instructions earlier:");0<mb&&aa!=a.ma;){var Ve=Ca[aa++];if(null==Ve.F)break;var Kb=X(Ve.F),$f=fa--,We=of(a,Kb,"history",$f);(!hd.length||0<=We.indexOf(hd[0]))&&a.g(We);Kb.Sb&&(aa+=Kb.Sb,mb-=Kb.Sb,fa-=Kb.Sb);aa>=Ca.length&&(aa=0);a.eb=fa;Ue++;mb--}}Ue||(a.g("no "+Te+"history available"),a.eb=void 0)}else{var oc=ve(a,Z);if(oc){var pc=0;Va&&("l"==Va.charAt(0)&&(Va=Va.substr(1)||Zf),pc=uf(a,Va)>>>0,65536<pc&&(pc=65536));for(var Wa="",qc="dd"==za?4:"dw"==
za?2:1,rc=qc*pc||128,ag=rc+15>>4||1;ag--&&0<rc;){var sc=0,id=0,Lb,Mb="",jd="",Z=Y(oc.F);for(Lb=16;0<Lb&&0<rc;Lb--){var tc=a.Y(oc,1),sc=sc|tc<<(id++<<3);id==qc&&(Mb+=n(sc,2*qc),Mb+=1==qc?9==Lb?"-":" ":" ",sc=id=0);jd+=32<=tc&&128>tc?String.fromCharCode(tc):".";rc--}Wa&&(Wa+="\n");Wa+=Z+" "+Mb+(0==Lb?" "+jd:"")}Wa&&a.g(Wa);a.bb=oc}}}}break;case "e":if("else"==f[0])break;var uc=1,Xe=255,Ye=a.Y,Ze=a.ra;"ew"==f[0]&&(uc=2,Xe=65535,Ye=a.Qa,Ze=a.Rb);var $e=uc<<1,af=f[1];if(null==af)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 vc=ve(a,af);if(vc)for(var wc=2;wc<f.length;wc++){var Nb=Ae(a,f[wc]);if(void 0===Nb){a.g("unrecognized value: "+f[wc]);break}Nb&~Xe&&a.g("warning: "+n(Nb)+" exceeds "+uc+"-byte value");var bg=Ye.call(a,vc);a.g("changing "+Y(vc.F)+" from 0x"+n(bg,$e)+" to 0x"+n(Nb,$e));Ze.call(a,vc,Nb,uc)}}break;case "f":zf(a,f[1]);break;case "g":a:{var bf=f[1],cg=b;if(void 0!==bf){var kd=ve(a,bf,!0);if(!kd)break a;
Be(a,kd,cg);a.Va(a.w,kd,!0)}a.$a(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":a:{var ld;if(a.D.xa)ld="halting",a.la();else{if(ib(a,!0))break a;ld="already halted"}c||a.g(ld)}break;case "i":if("if"==f[0]){var md;var Ob=b.substr(2),Ob=ja(Ob);Ae(a,Ob)?(c||a.g("true: "+Ob),md=!0):(c||a.g("false: "+Ob),md=!1);md||(d=!1);break}if("int"==f[0]){var xc;var dg=f[1];if(a.b.ta&512){var nd=Ae(a,dg);null==nd?xc=!1:(a.g("requesting interrupt level "+nd),ed(a.b,nd),xc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),
xc=!1;xc||(d=!1);break}var od=f[1];if(od&&"?"!=od){var pd=uf(a,od);if(void 0!==pd){var eg=Cb(a.A,pd);a.g(t(pd)+": "+("0x"+n(eg,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 fg=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var qd=0,cf=X(),Pb=X(a.b.ja);for(a.g("stack trace for "+Y(Pb.F));10>qd;){for(var Xa=null,gg=256;65536>Pb.F>>>0;){cf.F=
a.Qa(Pb,2);if(null==Pb.F||!gg--)break;for(var hg=a,yc=cf,df=null,Qb=yc.F,ef=Qb,rd=1;6>=rd&&Qb;rd++){if(2<rd){yc.F=Qb;var zc=of(hg,yc);if(0<=zc.indexOf("CALL")){var ff=zc.indexOf(" ");if(Qb+(zc.indexOf(" ",ff+1)-ff-1)/2==ef){df=zc;break}}}Qb--}yc.F=ef;if(Xa=df)break}if(!Xa||null==Xa)break;var gf=null;if("ks"==fg){var hf=Xa.match(/[0-9A-F]+$/);hf&&(gf=Bf(a,hf[0]))}Xa=ia(Xa,50)+" ;"+(gf||"stack="+Y(Pb.F));a.g(Xa);qd++}qd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Bf(a,f[1],!0);
break}break;case "m":a:{var Da,Ea=null,O=f[1];"?"==O&&(O=void 0);if(void 0!==O){var Oa=0;if("all"==O)Oa=1878917119,O=null;else if("on"==O)Ea=!0,O=null;else if("off"==O)Ea=!1,O=null;else{"keys"==O&&(O="key");"kbd"==O&&(O="keyboard");for(Da in se)if(O==Da){Oa=se[Da];Ea=!!(a.pa&Oa);break}if(!Oa){a.g("unknown message category: "+O);break a}}if(Oa)if("on"==f[2])a.pa|=Oa,Ea=!0;else if("off"==f[2]&&(a.pa&=~Oa,Ea=!1,1073741824==Oa)){for(var sd=0;sd<a.Ba.length;sd++)a.g(a.Ba[sd]);a.Ba=[]}}var ig=0,Pa="";for(Da in se)if(!O||
O==Da){var jg=!!(a.pa&se[Da]);if(null===Ea||Ea==jg)Pa&&(Pa+=","),++ig%10||(Pa+="\n\t"),"key"==Da&&(Da="keys"),Pa+=Da}void 0===O&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ea?Ea?"messages on: ":"messages off: ":"message categories:\n\t")+(Pa||"none"));le(a)}break;case "o":var td=f[1],kg=f[2];if(td&&"?"!=td){var ud=uf(a,td,"port #"),vd=uf(a,kg);void 0!==ud&&void 0!==vd&&(Gb(a.A,ud,vd),a.g(t(ud)+": "+("0x"+n(vd,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]){Df(a,b.substr(5));break}var jf="pr"==f[0]?1:0,lg=1+jf;if(a.ba)a.g("step in progress");else{var wd=X(a.b.N);switch(a.Y(wd)){case 205:a.ba=lg,we(wd,3)}a.ba?(a.Va(a.w,wd,!0),a.$a()||(a.u&&a.u.Eb(),a.ba=0)):Ef(a,jf?"tr":"t")}break;case "r":if("reset"==b){a.u&&a.u.reset();break}Je(a,f);break;case "s":Cf(a,f);break;case "t":Ef(a,f[0],f[1]);break;case "u":Ke(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Af(a,b.substr(3))||
(d=!1);break}a.g("PC8080 version 1.23.3 ("+a.b.tc+",RELEASE"+(nb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(qa());break;case "?":if(f[1]){Df(a,b.substr(1));break}var Rb="commands:",xd;for(xd in ne)Rb+="\n"+ia(xd,9)+ne[xd];yd(a)||(Rb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Rb);break;default:a.g("unknown command: "+b),d=!1}}}catch(kf){a.g("debugger error: "+(kf.stack||kf.message)),d=!1}return d}function kc(a,b,c){b=Ce(a,b,c);for(var d in b)if(!nf(a,b[d]))return!1;return!0}
Ia(function(){for(var a=B(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=z(c),d=new ie(d);db(d,c)}});function G(a,b,c){this.id=a.id;this.key=Gf(a,b,c);this.H=a.H;Hf(this,a.Ac)}function Gf(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}
G.prototype={constructor:G,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){Hf(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 Hf(a,b){a[a.id]={};b&&H(a,"parms",b);a.b=!1}function If(a){var b=!0;if(ta()){var c=JSON.stringify(a[a.id]);va(a.key,c)||(u("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Jf(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){u(c.message||c),b=!1}return b}function Kf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:ta()&&(b=ua(a.key))?(a[a.id]=b,a.b=!0):!1}function Lf(a,b){return a[a.id][b]||null}function H(a,b,c){try{a[a.id][b]=c}catch(d){}}
function Mf(a,b,c){x.call(this,"Computer",a,Mf,67108864);this.D.sa=!1;Nf(this,b);this.ba=hc(this,"autoPower",a);this.C=0;this.ha=a.busWidth||a.buswidth;this.u=Of;this.P=null;this.K=this.fa=!1;this.ma=hc(this,"url")||"";(Math.random()+.1).toString(36);this.w=Pf(this);if(this.b=cb("CPU",this.id)){this.H=cb("Debugger",this.id);this.J=[];for(b=null;b=qb(this,"Video",b);)this.J.push(b);this.A=new sb({id:this.Tb+".bus",busWidth:this.ha},this.b,this.H);var d,e=bb(this.id);if((this.I=cb("Panel",this.id))&&
this.I.Da)for(b=0;b<e.length;b++)d=e[b],d.ga=this.I.ga,d.g=this.I.g,d.Da=this.I.Da;this.g("PC8080 v1.23.3\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Na&&d.Na(this,this.A,this.b,this.H);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.O=d:this.u=parseInt(d,10));var f;if(a=hc(this,"state")||(f=!0,a.state))b=this.da=a,f||(this.K=!0,this.u=Of),this.u&&(this.Z=new G(this,"1.23.3"),Kf(this.Z)?
b=null:delete this.Z);!b&&this.u&&(b=Qf(this))&&(this.K=!0);if(b){var h=this;oa(b,null,!0,function(a,b,c){c?(h.O=null,h.K=!1,h.ga("Unable to load machine state from server (error "+c+(b?": "+ja(b):"")+")")):(h.P=b,h.fa=!0);D(h)})}else D(this);this.L.power||(this.ba=!0);!c&&this.ba&&Rf(this,this.Cb)}else u("Unable to find CPU component")}Za(Mf);var Of=0;function Nf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){u(d.message+" ("+c+")")}}a.M=b}
function hc(a,b,c){var d=b.toLowerCase(),d=Ra[b]||Ra[d];void 0===d&&a.M&&(d=a.M[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=bb(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 G(a,"1.23.3","validate");if(Kf(c)&&Jf(c)){var d=Lf(c,"timestamp"),e=b?Lf(b,"timestamp"):"unknown";d!=e&&(a.ga("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=Mf.prototype;
m.Cb=function(a){void 0===a&&(a=this.u||(this.P?1:Of));if(!this.C){this.C++;var b=!1,c=!1;this.ea=!1;var d=this.Z||new G(this,"1.23.3");if(-1==a)b=!0;else if(a>Of){if(Kf(d,this.P)){this.G=new G(this,"1.23.3","failsafe");Kf(this.G)&&(Tf(this,d),a=2,Hf(this.G));H(this.G,"timestamp",ma());If(this.G);var e=this.u&&!this.K;if(1==a||ra("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Jf(d)){var f=Lf(d,"code"),h=Lf(d,"data");f&&("ok"==f?Kf(d,h):("error"==f&&
"no machine state"!=h?(this.ga("Error: "+h),"unable to verify user"==h&&(va("user",""),this.w=null)):this.g(f+": "+h),Hf(d),Kf(d)?(c=Jf(d),e=!0):c=!1))}e&&Sf(this,c?d:null)}else 2==a&&d.clear()}else Sf(this);delete this.P;delete this.Z}e=bb(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.kc,b):this.kc(b)}};
function Uf(a,b,c,d,e){if(!b.D.sa){b.D.sa=!0;if(b.Aa){var f=null;e&&((f=Lf(c,b.id))||(f=Lf(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Aa(f,d)&&f&&(u("Unable to restore state for "+b.type),a.da&&!a.fa?(c.clear(),a.u=Of,window&&window.location.reload()):a.ea=!0,b.Aa(null),e=!1)}if(!d&&b.pc)for(a=b.pc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
m.kc=function(a){var b=a[0],c=0>a[1];a=a[2];this.oa=!0;this.D.sa=!0;var d=this.L.power;d&&(d.textContent="Shutdown");this.b&&(Uf(this,this.b,b,c,a),mc(this.b));this.ea&&(Tf(this,b),b.clear());!c&&this.G&&(this.G.clear(),delete this.G);this.C=0};
function Tf(a,b){if(ra("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.w||"",d=b.toString(),e={app:"PC8080",ver:"1.23.3"};e.url=a.ma;e.user=c;e.type="bug";e.data=d;oa("http://www.pcjs.org/api/v1/report",e,!0)}}
function Ff(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new G(a,"1.23.3"),h=new G(a,"1.23.3","validate"),g=ma();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.23.3");H(f,"url",window?window.location.href:null);H(f,"browser",qa());a.b&&a.b.Fa&&(c&&a.b.la(),d=a.b.Fa(b,c),"object"===typeof d&&H(f,a.b.id,d),c&&(a.b.D.sa=!1,!1===d&&(e=null)));for(var g=bb(a.id),k=0;k<g.length;k++){var l=g[k];l.D.sa&&(l.Fa&&(d=l.Fa(b,c),"object"===typeof d&&H(f,l.id,d)),c&&(l.D.sa=!1,!1===d&&(e=null)))}e&&
(c?(g=d=!1,b?(a.w&&Vf(a,a.w,f.toString()),If(h)&&If(f)||(e=null,d=g=!0)):a.u&&(d=!0,g=3==a.u),d&&f.clear(g)):e=f.toString());c&&(a.D.sa=!1,b=a.L.power)&&(b.textContent="Power");a.C=0;return e}m.reset=function(){this.A&&this.A.reset&&(fb(this,"Resetting "+this.A.type),this.A.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.A&&c.reset&&(fb(this,"Resetting "+c.type),c.reset())}};
m.start=function(a,b){for(var c=bb(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=bb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
m.ka=function(a,b,c){var d=this;switch(b){case "power":return this.L[b]=c,c.onclick=function(){d.D||(d.C.sa?Hf(d,!1,!0):Tf(d,d.Cb))},!0;case "reset":return this.L[b]=c,c.onclick=function(){if(d.C.sa&&!d.D)if(d.u&&!d.O){var a=ra("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Hf(d,a,!0);!a&&d.da?window&&window.location.reload():d.Cb(Qf)}else d.reset(),d.b&&mc(d.b)},!0;case "save":if(ea(pa(),"pcjs.org")){c.parentNode.removeChild(c);
break}this.L[b]=c;c.onclick=function(){var a=Rf(d,!0);if(a){var b=!!(d.u&&!d.O||d.da),c=Hf(d,b);b?Xf(d,a,c):d.ga("Resume disabled, machine state not saved")}};return!0}return!1};
function Rf(a,b){var c=a.w;c||(c=ua("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=Yf(a,c))||a.ga("The user ID is invalid."))):b&&a.ga("Browser local storage is not available"));return c}
function Yf(a,b){a.w=null;var c=oa(pa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(va("user",c.data),a.w=c.data)}catch(e){u(e.message+" ("+d+")")}return a.w}function Sf(a){var b=null;a.w&&(b=pa()+"/api/v1/user?req=load&user="+a.w+"&state="+If(a,"1.23.3"));return b}
function Xf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=If(a,"1.23.3");d.data=c;b=oa(pa()+"/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.ga("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.ga(c),va("user",""),a.w=null)}}
function qb(a,b,c){a=bb(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.Eb=function(a){if(this.J.length){var b=0,c=0;a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.J[0];d.Ba&&d.Ba.focus();a&&window&&window.scrollTo(b,c)}};m.Ga=function(a){this.b&&this.b.Ga(a);this.F&&this.F.Ga(a)};
function Ec(a,b){for(var c=0;c<a.J.length;c++){var d=a.J[c],e=!0;if(0<=b){d.Wb&&(120==d.Wb?b&1?(ed(d.b,2),e=!1):ed(d.b,1):ed(d.b,4));var f;if(f=e&&d.wa){f=d.A;for(var h=d.Ua,g=!0,k=d.va>>>f.na;0<h&&k<f.W.length;)f.W[k].La&&(f.W[k].La=g=!1,f.W[k].lc=!0),h-=f.Ea,k++;f=g}f&&(e=!1)}if(e)if(1<d.qa)switch(d.ea){case 2:ee(d)}else{var g=d.va,k=g+d.Ua,l=0,p=0,q=0,e=d.K,r=0;f=d.da;var y=h=0,v=d.Ta,I=(1<<v)-1;d.Jd&&(v=-v,y=16+v);for(;g<k;){var w=yb(d.A,g);if(d.wa&&w===d.J[l])p+=d.xc;else{d.J[l]=w;var J=y;J&&
(w=w>>8|(w&255)<<8);p<e&&(e=p);for(var A=d.xc;A--;){var R=w>>J&I;de(d,d.rc,p++,q,R);J+=v}p>r&&(r=p);q<f&&(f=q);q>=h&&(h=q+1)}g+=2;l++;if(p>=d.K&&(p=0,q++,q>d.da))break}d.wa=!0;e<d.K&&(g=r-e,h-=f,d.D&&(k=e,l=g,e=f,g=h,f=d.K-(k+l),h=l),d.cb.putImageData(d.rc,0,0,e,f,g,h),d.F.drawImage(d.O,0,0,d.O.width,d.O.height,0,0,d.ba,d.Z))}}}
Ia(function(){for(var a=B(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=z(c),c=B(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=z(f),h=new Of(h,d,!0);db(h,f);h.ba&&Tf(h,h.Cb)}});Aa.show.push(function(){for(var a=B(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=cb("Computer",c.id))&&c.oa&&!c.C.sa&&c.Cb(-1)}});
Aa.exit.push(function(){for(var a=B(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=cb("Computer",c.id))&&c.C.sa&&Hf(c,!(!c.u||c.O),!0)}});var Zf=0;function $f(a,b,c,d,e,f){e("Loading "+a+"...");oa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):og(g,a,b,c,d,e,f)})}
function og(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){ab(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?pg(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
function pg(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");oa(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);pg(a,b,c)}})}else c(a,null)}
function qg(a,b,c,d){function e(a){if(void 0===g){var b=h&&B(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ha(a))}function f(a){e("Error: "+a);k&&(--Zf||La(!0));k=!1}var h,g,k=!0;Zf++;$a[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=l:q.appendChild(document.createTextNode(l));p.appendChild(q)}c||
(c="/versions/pc8080/1.23.3/components.xsl");l=function(d,g){g?$f(c,null,null,!1,e,function(d,k){if(k)if(ab(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--Zf||La(!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),--Zf||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)?$f(b,a,d,!0,e,l):og(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(r){f(r.message)}return k}window.embedPC8080=function(a,b,c,d){La(!1);return qg(a,b,c,d)};window.enableEvents=La;window.sendEvent=Ma;
function rg(a,b,c,d){if(!c&&b){d.push(b);a=$a[d[0]];b=null;for(var e in a)if(ea(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?oa(b,null,!0,function(a,b){sg(b,d)}):sg(null,d)}else u("Error ("+c+") requesting "+a)}
function sg(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=$a[f],k={},l;for(l in g){var p=g[l],q=da(l);if("xml"==q){for(q=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=q.exec(g[l]);){var r=d[2];r&&(g[r]||(p=p.replace(d[0],"")))}d=l=ca(l)}else"xsl"==q&&(e=l=ca(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.ka=function(a,b,c){var d=this;switch(b){case "power":return this.L[b]=c,c.onclick=function(){d.C||(d.D.sa?Ff(d,!1,!0):Rf(d,d.Cb))},!0;case "reset":return this.L[b]=c,c.onclick=function(){if(d.D.sa&&!d.C)if(d.u&&!d.O){var a=ra("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Ff(d,a,!0);!a&&d.da?window&&window.location.reload():d.Cb(Of)}else d.reset(),d.b&&mc(d.b)},!0;case "save":if(ea(pa(),"pcjs.org")){c.parentNode.removeChild(c);
break}this.L[b]=c;c.onclick=function(){var a=Pf(d,!0);if(a){var b=!!(d.u&&!d.O||d.da),c=Ff(d,b);b?Vf(d,a,c):d.ga("Resume disabled, machine state not saved")}};return!0}return!1};
function Pf(a,b){var c=a.w;c||(c=ua("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.ga("The user ID is invalid."))):b&&a.ga("Browser local storage is not available"));return c}
function Wf(a,b){a.w=null;var c=oa(pa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(va("user",c.data),a.w=c.data)}catch(e){u(e.message+" ("+d+")")}return a.w}function Qf(a){var b=null;a.w&&(b=pa()+"/api/v1/user?req=load&user="+a.w+"&state="+Gf(a,"1.23.3"));return b}
function Vf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Gf(a,"1.23.3");d.data=c;b=oa(pa()+"/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.ga("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.ga(c),va("user",""),a.w=null)}}
function qb(a,b,c){a=bb(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.Eb=function(a){if(this.J.length){var b=0,c=0;a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.J[0];d.Ba&&d.Ba.focus();a&&window&&window.scrollTo(b,c)}};m.Ga=function(a){this.b&&this.b.Ga(a);this.I&&this.I.Ga(a)};
function Ec(a,b){for(var c=0;c<a.J.length;c++){var d=a.J[c],e=!0;if(0<=b){d.Wb&&(120==d.Wb?b&1?(ed(d.b,2),e=!1):ed(d.b,1):ed(d.b,4));var f;if(f=e&&d.wa){f=d.A;for(var h=d.Ua,g=!0,k=d.va>>>f.na;0<h&&k<f.W.length;)f.W[k].La&&(f.W[k].La=g=!1,f.W[k].mc=!0),h-=f.Ea,k++;f=g}f&&(e=!1)}if(e)if(1<d.qa)switch(d.ea){case 2:ce(d)}else{var g=d.va,k=g+d.Ua,l=0,p=0,q=0,e=d.K,r=0;f=d.da;var y=h=0,v=d.Ta,I=(1<<v)-1;d.Kd&&(v=-v,y=16+v);for(;g<k;){var w=yb(d.A,g);if(d.wa&&w===d.J[l])p+=d.yc;else{d.J[l]=w;var J=y;J&&
(w=w>>8|(w&255)<<8);p<e&&(e=p);for(var A=d.yc;A--;){var R=w>>J&I;be(d,d.sc,p++,q,R);J+=v}p>r&&(r=p);q<f&&(f=q);q>=h&&(h=q+1)}g+=2;l++;if(p>=d.K&&(p=0,q++,q>d.da))break}d.wa=!0;e<d.K&&(g=r-e,h-=f,d.C&&(k=e,l=g,e=f,g=h,f=d.K-(k+l),h=l),d.cb.putImageData(d.sc,0,0,e,f,g,h),d.I.drawImage(d.O,0,0,d.O.width,d.O.height,0,0,d.ba,d.Z))}}}
Ia(function(){for(var a=B(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=z(c),c=B(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=z(f),h=new Mf(h,d,!0);db(h,f);h.ba&&Rf(h,h.Cb)}});Aa.show.push(function(){for(var a=B(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=cb("Computer",c.id))&&c.oa&&!c.D.sa&&c.Cb(-1)}});
Aa.exit.push(function(){for(var a=B(document,"pc8080","computer"),b=0;b<a.length;b++){var c=z(a[b]);(c=cb("Computer",c.id))&&c.D.sa&&Ff(c,!(!c.u||c.O),!0)}});var Xf=0;function Yf(a,b,c,d,e,f){e("Loading "+a+"...");oa(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):mg(g,a,b,c,d,e,f)})}
function mg(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){ab(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?ng(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
function ng(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");oa(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);ng(a,b,c)}})}else c(a,null)}
function og(a,b,c,d){function e(a){if(void 0===g){var b=h&&B(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ha(a))}function f(a){e("Error: "+a);k&&(--Xf||La(!0));k=!1}var h,g,k=!0;Xf++;$a[a]={};try{if(h=document.getElementById(a)){var l;if("object"==typeof resources&&(l=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=l:q.appendChild(document.createTextNode(l));p.appendChild(q)}c||
(c="/versions/pc8080/1.23.3/components.xsl");l=function(d,g){g?Yf(c,null,null,!1,e,function(d,k){if(k)if(ab(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--Xf||La(!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),--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):mg(b,null,a,d,!1,e,l)}else f("missing machine element: "+a)}catch(r){f(r.message)}return k}window.embedPC8080=function(a,b,c,d){La(!1);return og(a,b,c,d)};window.enableEvents=La;window.sendEvent=Ma;
function pg(a,b,c,d){if(!c&&b){d.push(b);a=$a[d[0]];b=null;for(var e in a)if(ea(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?oa(b,null,!0,function(a,b){qg(b,d)}):qg(null,d)}else u("Error ("+c+") requesting "+a)}
function qg(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=$a[f],k={},l;for(l in g){var p=g[l],q=da(l);if("xml"==q){for(q=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=q.exec(g[l]);){var r=d[2];r&&(g[r]||(p=p.replace(d[0],"")))}d=l=ca(l)}else"xsl"==q&&(e=l=ca(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=wa("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.",u(c)):u("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=cb("Computer",a),e=cb("Debugger",a);if(d){var f=Hf(d,!0),h=d.M?JSON.stringify(d.M):null;b||(b="/versions/pcjs/1.23.3/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,zc:h}))return!0;oa(b,null,!0,function(c,d,e){rg(c,d,e,[a,ca(b,!0),h,f])});return!0}u("Unable to identify machine '"+a+"'");return!1};})();
window.savePC=function(a,b,c){var d=cb("Computer",a),e=cb("Debugger",a);if(d){var f=Ff(d,!0),h=d.M?JSON.stringify(d.M):null;b||(b="/versions/pcjs/1.23.3/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Ac:h}))return!0;oa(b,null,!0,function(c,d,e){pg(c,d,e,[a,ca(b,!0),h,f])});return!0}u("Unable to identify machine '"+a+"'");return!1};})();