1/4 of 8080 opcodes implemented now

This commit is contained in:
Jeff Parsons 2016-04-22 07:38:25 -07:00
commit 8800ed5ef8
3 changed files with 421 additions and 262 deletions

View file

@ -541,6 +541,164 @@ CPUDef.opCMA = function()
this.nStepCycles -= 4; this.nStepCycles -= 4;
}; };
/**
* op=0x31 (LXI SP,d16)
*
* @this {CPUSim}
*/
CPUDef.opLXISP = function()
{
this.setSP(this.getPCWord());
this.nStepCycles -= 10;
};
/**
* op=0x32 (STA a16)
*
* @this {CPUSim}
*/
CPUDef.opSTA = function()
{
this.setByte(this.getPCWord(), this.regA);
this.nStepCycles -= 13;
};
/**
* op=0x33 (INX SP)
*
* @this {CPUSim}
*/
CPUDef.opINXSP = function()
{
this.setSP(this.getSP() + 1);
this.nStepCycles -= 5;
};
/**
* op=0x34 (INR M)
*
* @this {CPUSim}
*/
CPUDef.opINRM = function()
{
var addr = this.getHL();
this.setByte(addr, this.incByte(this.getByte(addr)));
this.nStepCycles -= 10;
};
/**
* op=0x35 (DCR M)
*
* @this {CPUSim}
*/
CPUDef.opDCRM = function()
{
var addr = this.getHL();
this.setByte(addr, this.decByte(this.getByte(addr)));
this.nStepCycles -= 10;
};
/**
* op=0x36 (MVI M,d8)
*
* @this {CPUSim}
*/
CPUDef.opMVIM = function()
{
this.setByte(this.getHL(), this.getPCByte());
this.nStepCycles -= 10;
};
/**
* op=0x37 (STC)
*
* @this {CPUSim}
*/
CPUDef.opSTC = function()
{
this.setCF();
this.nStepCycles -= 4;
};
/**
* op=0x39 (DAD SP)
*
* @this {CPUSim}
*/
CPUDef.opDADSP = function()
{
var w;
this.setSP(w = this.getHL() + this.getSP());
this.resultZeroCarry = (this.resultZeroCarry & 0xff) | ((w >> 8) & 0x100);
this.nStepCycles -= 10;
};
/**
* op=0x3A (LDA a16)
*
* @this {CPUSim}
*/
CPUDef.opLDA = function()
{
this.regA = this.getByte(this.getPCWord());
this.nStepCycles -= 13;
};
/**
* op=0x3B (DCX SP)
*
* @this {CPUSim}
*/
CPUDef.opDCXSP = function()
{
this.setSP(this.getSP() - 1);
this.nStepCycles -= 5;
};
/**
* op=0x3C (INR A)
*
* @this {CPUSim}
*/
CPUDef.opINRA = function()
{
this.regA = this.incByte(this.regA);
this.nStepCycles -= 5;
};
/**
* op=0x3D (DCR A)
*
* @this {CPUSim}
*/
CPUDef.opDCRA = function()
{
this.regA = this.decByte(this.regA);
this.nStepCycles -= 5;
};
/**
* op=0x3E (MVI A,d8)
*
* @this {CPUSim}
*/
CPUDef.opMVIA = function()
{
this.regA = this.getPCByte();
this.nStepCycles -= 7;
};
/**
* op=0x3F (CMC)
*
* @this {CPUSim}
*/
CPUDef.opCMC = function()
{
this.updateCF(!this.getCF());
this.nStepCycles -= 4;
};
/** /**
* opTBD() * opTBD()
* *
@ -573,10 +731,10 @@ CPUDef.aOps = [
/* 0x24-0x27 */ CPUDef.opINRH, CPUDef.opDCRH, CPUDef.opMVIH, CPUDef.opDAA, /* 0x24-0x27 */ CPUDef.opINRH, CPUDef.opDCRH, CPUDef.opMVIH, CPUDef.opDAA,
/* 0x28-0x2B */ CPUDef.opNOP, CPUDef.opDADH, CPUDef.opLHLD, CPUDef.opDCXH, /* 0x28-0x2B */ CPUDef.opNOP, CPUDef.opDADH, CPUDef.opLHLD, CPUDef.opDCXH,
/* 0x2C-0x2F */ CPUDef.opINRL, CPUDef.opDCRL, CPUDef.opMVIL, CPUDef.opCMA, /* 0x2C-0x2F */ CPUDef.opINRL, CPUDef.opDCRL, CPUDef.opMVIL, CPUDef.opCMA,
/* 0x30-0x33 */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, /* 0x30-0x33 */ CPUDef.opNOP, CPUDef.opLXISP, CPUDef.opSTA, CPUDef.opINXSP,
/* 0x34-0x37 */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, /* 0x34-0x37 */ CPUDef.opINRM, CPUDef.opDCRM, CPUDef.opMVIM, CPUDef.opSTC,
/* 0x38-0x3B */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, /* 0x38-0x3B */ CPUDef.opNOP, CPUDef.opDADSP, CPUDef.opLDA, CPUDef.opDCXSP,
/* 0x3C-0x3F */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, /* 0x3C-0x3F */ CPUDef.opINRA, CPUDef.opDCRA, CPUDef.opMVIA, CPUDef.opCMC,
/* 0x40-0x43 */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, /* 0x40-0x43 */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD,
/* 0x44-0x47 */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, /* 0x44-0x47 */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD,
/* 0x48-0x4B */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, /* 0x48-0x4B */ CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD, CPUDef.opTBD,

View file

@ -1,171 +1,171 @@
(function(){var g;function da(a,b){var c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c} (function(){var k;function fa(a,b){var c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c}
function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function q(a){return"0x"+n(a,4)}function ea(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0<d&&(c=c.substr(0,d));b&&(d=c.lastIndexOf("."),0<d&&(c=c.substring(0,d)));return c}function fa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b} function n(a,b){var c="";void 0===b?b=8:8<b&&(b=8);if(null==a||isNaN(a))for(;0<b--;)c="?"+c;else for(;0<b--;){var d=a&15,d=d+(0<=d&&9>=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function q(a){return"0x"+n(a,4)}function ga(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0<d&&(c=c.substr(0,d));b&&(d=c.lastIndexOf("."),0<d&&(c=c.substring(0,d)));return c}function ha(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
function ka(a,b){return-1!==a.indexOf(b,a.length-b.length)}var la={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function ma(a){return a.replace(/[&<>"']/g,function(a){return la[a]})}function na(a,b){return(a+" ").slice(0,b)}function oa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")} function ia(a,b){return-1!==a.indexOf(b,a.length-b.length)}var ja={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function ka(a){return a.replace(/[&<>"']/g,function(a){return ja[a]})}function la(a,b){return(a+" ").slice(0,b)}function qa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
function pa(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var k=d+e>>1,h;h=c(b,a[k]);0<h?d=k+1:(e=k,f=!h)}return f?d:~d}var ua=Date.now||function(){return+new Date};function va(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} function ra(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var h=d+e>>1,g;g=c(b,a[h]);0<g?d=h+1:(e=h,f=!g)}return f?d:~d}var sa=Date.now||function(){return+new Date};function ta(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
function wa(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1} function ya(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1}
function u(a,b,c,d){var e=0,f=null,k=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),k;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a,f,e))});if(b&&"object"== function u(a,b,c,d){var e=0,f=null,h=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),h;var g=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(g.onreadystatechange=function(){4===g.readyState&&(f=g.responseText,200==g.status||!g.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=g.status||-1),d&&d(a,f,e))});if(b&&"object"==
typeof b){var l="",m;for(m in b)b.hasOwnProperty(m)&&(l&&(l+="&"),l+=m+"="+encodeURIComponent(b[m]));l=l.replace(/%20/g,"+");h.open("POST",a,!!c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(l)}else h.open("GET",a,!!c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),k=[f,e]);return k}function xa(){return"http://"+(window?window.location.host:"www.pcjs.org")} typeof b){var l="",m;for(m in b)b.hasOwnProperty(m)&&(l&&(l+="&"),l+=m+"="+encodeURIComponent(b[m]));l=l.replace(/%20/g,"+");g.open("POST",a,!!c);g.setRequestHeader("Content-type","application/x-www-form-urlencoded");g.send(l)}else g.open("GET",a,!!c),"bytes"==b&&g.overrideMimeType("text/plain; charset=x-user-defined"),g.send();c||(f=g.responseText,200!=g.status&&(e=g.status||-1),d&&d(a,f,e),h=[f,e]);return h}function za(){return"http://"+(window?window.location.host:"www.pcjs.org")}
function ya(){return window?window.navigator.userAgent:""}function v(a){window&&window.alert(a)}function za(a){var b=!1;window&&(b=window.confirm(a));return b}var Aa=null;function Ba(){if(null==Aa){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}Aa=a}return Aa} function Aa(){return window?window.navigator.userAgent:""}function v(a){window&&window.alert(a)}function Ba(a){var b=!1;window&&(b=window.confirm(a));return b}var Ca=null;function Da(){if(null==Ca){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}Ca=a}return Ca}
function Ca(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function Da(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ea(a){if(window){var b=ya();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Fa(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()} function Ea(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function Fa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function Ga(a){if(window){var b=Aa();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 Ha(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function Ga(a,b){function c(){b(100===d)&&(e=setTimeout(c,d),d=100)}var d=0,e=null,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 Ka={init:[],show:[],exit:[]},Na=!1,Oa=!0;function Pa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Qa(a){Ka.init.push(a)} function Ia(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 Ja={init:[],show:[],exit:[]},Na=!1,Qa=!0;function Ra(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Sa(a){Ja.init.push(a)}
function Ra(a){if(Oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){v("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function Sa(a){!Oa&&a?(Oa=!0,Na&&Ta("init")):Oa=a}function Ta(a){Ka[a]&&Ra(Ka[a])}Pa("onload",function(){Na=!0;Ra(Ka.init)});Pa("onpageshow",function(){Ra(Ka.show)});Pa(Ea("Opera")||Ea("iOS")?"onunload":"onbeforeunload",function(){Ra(Ka.exit)}); function Ta(a){if(Qa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){v("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.")}}function Ua(a){!Qa&&a?(Qa=!0,Na&&Va("init")):Qa=a}function Va(a){Ja[a]&&Ta(Ja[a])}Ra("onload",function(){Na=!0;Ta(Ja.init)});Ra("onpageshow",function(){Ta(Ja.show)});Ra(Ga("Opera")||Ga("iOS")?"onunload":"onbeforeunload",function(){Ta(Ja.exit)});
function x(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.wb=b.comment;this.Lb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Ab=this.id.substr(0,b),this.Xa=this.id.substr(b+1)):this.Xa=this.id;this[a]=c;this.j={La:!1,Ia:!1,ob:!1,W:!1,Ka:!1};this.lb=null;this.j.Ka=!1;this.H={};this.C=null;this.Z=d||0;y.push(this)}var Ua=void 0,Va={}; function x(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id;this.name=b.name;this.wb=b.comment;this.Lb=b;void 0===this.id&&(this.id="");b=this.id.indexOf(".");0<b?(this.Ab=this.id.substr(0,b),this.Xa=this.id.substr(b+1)):this.Xa=this.id;this[a]=c;this.j={Ka:!1,Ha:!1,ob:!1,W:!1,Ja:!1};this.lb=null;this.j.Ja=!1;this.H={};this.C=null;this.Y=d||0;y.push(this)}var Wa=void 0,Xa={};
if(window){Ua||(Ua=window.location.search.substr(1));for(var Wa,Xa=/\+/g,Ya=/([^&=]+)=?([^&]*)/g;Wa=Ya.exec(Ua);)Va[decodeURIComponent(Wa[1].replace(Xa," "))]=decodeURIComponent(Wa[2].replace(Xa," "))}function Za(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} if(window){Wa||(Wa=window.location.search.substr(1));for(var Ya,Za=/\+/g,$a=/([^&=]+)=?([^&]*)/g;Ya=$a.exec(Wa);)Xa[decodeURIComponent(Ya[1].replace(Za," "))]=decodeURIComponent(Ya[2].replace(Za," "))}function ab(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 z(a,b){b||(b=x);a.prototype=Za(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var y=[],$a={};function ab(a,b,c){$a[a]&&b&&($a[a][b]=c)}function C(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<y.length;b++){var d=y[b];a&&d.id.indexOf(a)||c.push(d)}return c} function z(a,b){b||(b=x);a.prototype=ab(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}var y=[],bb={};function cb(a,b,c){bb[a]&&b&&(bb[a][b]=c)}function C(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<y.length;b++){var d=y[b];a&&d.id.indexOf(a)||c.push(d)}return c}
function bb(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<y.length;d++)if(c)c==y[d]&&(c=null);else if(!(a!=y[d].type||b&&y[d].id.indexOf(b)))return y[d]}return null}function E(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){v(c.message+" ("+a+")")}return b} function db(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<y.length;d++)if(c)c==y[d]&&(c=null);else if(!(a!=y[d].type||b&&y[d].id.indexOf(b)))return y[d]}return null}function E(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){v(c.message+" ("+a+")")}return b}
function cb(a,b){for(var c=F(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var k=e[f];if(1===k.nodeType){var h=k.getAttribute("class");if(h)for(var l=h.split(" "),m=0;m<l.length;m++)switch(h=l[m],h){case "pc8080-binding":(h=E(k))&&h.binding&&a.ka(h.type,h.binding,k,h.value),m=l.length}}}} function eb(a,b){for(var c=F(b.parentNode,"pc8080-control"),d=0;d<c.length;d++)for(var e=c[d].childNodes,f=0;f<e.length;f++){var h=e[f];if(1===h.nodeType){var g=h.getAttribute("class");if(g)for(var l=g.split(" "),m=0;m<l.length;m++)switch(g=l[m],g){case "pc8080-binding":(g=E(h))&&g.binding&&a.la(g.type,g.binding,h,g.value),m=l.length}}}}
function F(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c} function F(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
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.H[b]||(this.H[b]=c,c.onclick=function(a){return function(){a.H.print&&(a.H.print.value="")}}(this)),!0;case "print":return this.H[b]||(this.ya=this.H[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), x.prototype={constructor:x,parent:null,toString:function(){return this.name?this.name:this.id||this.type},la:function(a,b,c){switch(b){case "clear":return this.H[b]||(this.H[b]=c,c.onclick=function(a){return function(){a.H.print&&(a.H.print.value="")}}(this)),!0;case "print":return this.H[b]||(this.za=this.H[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.fa=function(a,b,c){this.g(a,"notice",c)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.Xa+": "+a)},fa:function(a,b){b||v(a)},sa:function(){return this.j.W=!0},ra:function(a,b){b&&(this.j.W=!1);return!0}};function db(a,b,c){a.C&&(!0===c||eb(a,c|0))&&a.C.message(b,void 0)}function eb(a,b){if(a.C){a===a.C?b|=0:b=b||a.Z;var c=a.C.Z&b;return!!b&&c===b||!!(c&a.C.Sb)}return!1} this.fa=function(a,b,c){this.g(a,"notice",c)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.Xa+": "+a)},fa:function(a,b){b||v(a)},ta:function(){return this.j.W=!0},sa:function(a,b){b&&(this.j.W=!1);return!0}};function fb(a,b,c){a.C&&(!0===c||gb(a,c|0))&&a.C.message(b,void 0)}function gb(a,b){if(a.C){a===a.C?b|=0:b=b||a.Y;var c=a.C.Y&b;return!!b&&c===b||!!(c&a.C.Sb)}return!1}
function fb(a,b){if(a.j.ob)return a.j.Ia&&(a.j.Ia=!1),a.j.ob=!1;if(a.j.Ka)return a.g(a.toString()+" error"),!1;a.j.Ia=b;return a.j.Ia}function gb(a,b){a.j.Ia&&(b?a.j.ob=!0:void 0===b&&a.g(a.toString()+" busy"));return a.j.Ia}function G(a){if(!a.j.Ka&&(a.j.La=!0,a.j.La)){var b=a.lb;a.lb=null;b&&b()}}function rb(a,b){b&&(a.j.La?b():a.lb=b);return a.j.La}function sb(a,b){a.j.Ka=!0;a.fa(b)} function hb(a,b){if(a.j.ob)return a.j.Ha&&(a.j.Ha=!1),a.j.ob=!1;if(a.j.Ja)return a.g(a.toString()+" error"),!1;a.j.Ha=b;return a.j.Ha}function ib(a,b){a.j.Ha&&(b?a.j.ob=!0:void 0===b&&a.g(a.toString()+" busy"));return a.j.Ha}function G(a){if(!a.j.Ja&&(a.j.Ka=!0,a.j.Ka)){var b=a.lb;a.lb=null;b&&b()}}function tb(a,b){b&&(a.j.Ka?b():a.lb=b);return a.j.Ka}function ub(a,b){a.j.Ja=!0;a.fa(b)}
var tb="undefined"!==typeof ArrayBuffer,ub=[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, var vb="undefined"!==typeof ArrayBuffer,wb=[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 vb(a){x.call(this,"Panel",a,vb)}z(vb);g=vb.prototype;g.ka=function(a,b,c,d){return this.s&&this.s.ka(a,b,c,d)||this.b&&this.b.ka(a,b,c,d)||this.w&&this.w.ka(a,b,c,d)||this.C&&this.C.ka(a,b,c,d)?!0:this.parent.ka.call(this,a,b,c,d)};g.Ma=function(a,b,c,d){this.s=a;this.A=b;this.b=c;this.C=d;this.w=wb(a,"Keyboard")};g.sa=function(a,b){b||xb();return!0};g.ra=function(){return!0};g.la=function(){}; 0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1];function xb(a){x.call(this,"Panel",a,xb)}z(xb);k=xb.prototype;k.la=function(a,b,c,d){return this.s&&this.s.la(a,b,c,d)||this.b&&this.b.la(a,b,c,d)||this.w&&this.w.la(a,b,c,d)||this.C&&this.C.la(a,b,c,d)?!0:this.parent.la.call(this,a,b,c,d)};k.La=function(a,b,c,d){this.s=a;this.A=b;this.b=c;this.C=d;this.w=yb(a,"Keyboard")};k.ta=function(a,b){b||zb();return!0};k.sa=function(){return!0};k.ma=function(){};
function xb(){for(var a=!1,b=F(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=E(d),f;a:{f=e.id;if(void 0!==f)for(var k=void 0,k=0;k<y.length;k++)if(y[k].id===f){f=y[k];break a}f=null}f||(a=!0,f=new vb(e));cb(f,d);a&&G(f)}}Qa(xb); function zb(){for(var a=!1,b=F(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=E(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<y.length;h++)if(y[h].id===f){f=y[h];break a}f=null}f||(a=!0,f=new xb(e));eb(f,d);a&&G(f)}}Sa(zb);
function yb(a,b,c){x.call(this,"Bus",a,yb);this.b=b;this.C=c;this.K=a.buswidth||16;this.N=Math.pow(2,this.K);this.w=this.N-1|0;this.P=20>=this.K?12:24>=this.K?14:15;this.aa=1<<this.P;this.S=this.aa>>2;this.s=this.aa-1;this.J=this.N/this.aa|0;this.M=this.J-1;this.B=[];this.D=[];this.F=this.I=!1;this.T=[];this.V=[];a=new H;zb(a,this.C);this.A=Array(this.J);for(b=0;b<this.J;b++)this.A[b]=a;a=this.b;b=this.A;c=this.P;var d=this.w;a.Y=b;a.P=c;a.aa=1<<a.P;a.D=a.aa-1;a.T=b.length;a.S=a.T-1;a.K=d;G(this)} function Ab(a,b,c){x.call(this,"Bus",a,Ab);this.b=b;this.C=c;this.L=a.buswidth||16;this.O=Math.pow(2,this.L);this.w=this.O-1|0;this.R=20>=this.L?12:24>=this.L?14:15;this.Z=1<<this.R;this.S=this.Z>>2;this.s=this.Z-1;this.J=this.O/this.Z|0;this.N=this.J-1;this.B=[];this.F=[];this.G=this.I=!1;this.T=[];this.V=[];a=new H;Bb(a,this.C);this.A=Array(this.J);for(b=0;b<this.J;b++)this.A[b]=a;a=this.b;b=this.A;c=this.R;var d=this.w;a.ea=b;a.R=c;a.Z=1<<a.R;a.G=a.Z-1;a.T=b.length;a.S=a.T-1;a.L=d;G(this)}z(Ab);
z(yb);yb.prototype.reset=function(){};yb.prototype.sa=function(a,b){b||this.reset();return!0};function Ab(a,b,c,d){for(var e=b>>>a.P;0<c&&e<a.A.length;){var f=a.A[e],k=e*a.aa,h=c>a.aa?a.aa:c;if(f&&f.size){if(f.type==d){if(b+c<=f.u)return f.hb+=f.u-b,f.u=b,!0;if(b>=f.u+f.hb){h=f.size-(b-k);h>c&&(h=c);f.hb=b-f.u+h;c-=h;b=k+a.aa;continue}}return Bb(1,b,c)}f=a.A[e];b=new H(b,h,a.aa,d);zb(b,a.C,f);a.A[e++]=b;b=k+a.aa;c-=h}return 0>=c?!0:Bb(2,b,c)} Ab.prototype.reset=function(){};Ab.prototype.ta=function(a,b){b||this.reset();return!0};function Cb(a,b,c,d){for(var e=b>>>a.R;0<c&&e<a.A.length;){var f=a.A[e],h=e*a.Z,g=c>a.Z?a.Z:c;if(f&&f.size){if(f.type==d){if(b+c<=f.u)return f.hb+=f.u-b,f.u=b,!0;if(b>=f.u+f.hb){g=f.size-(b-h);g>c&&(g=c);f.hb=b-f.u+g;c-=g;b=h+a.Z;continue}}return Db(1,b,c)}f=a.A[e];b=new H(b,g,a.Z,d);Bb(b,a.C,f);a.A[e++]=b;b=h+a.Z;c-=g}return 0>=c?!0:Db(2,b,c)}function Eb(a,b){return a.A[(b&a.w)>>>a.R].fb(b&a.s,b)}
function Cb(a,b){return a.A[(b&a.w)>>>a.P].fb(b&a.s,b)}function Db(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Eb(a,b){if(void 0===b)return a.I=!a.I,a.I;void 0===a.D[b]&&(a.D[b]=[null,!1]);a.D[b][1]=!a.D[b][1];return a.D[b][1]}function Bb(a,b,c){v("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Fb; function Fb(a,b){if(void 0===b)return a.G=!a.G,a.G;void 0===a.B[b]&&(a.B[b]=[null,!1]);a.B[b][1]=!a.B[b][1];return a.B[b][1]}function Gb(a,b){if(void 0===b)return a.I=!a.I,a.I;void 0===a.F[b]&&(a.F[b]=[null,!1]);a.F[b][1]=!a.F[b][1];return a.F[b][1]}function Db(a,b,c){v("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Hb;if(vb){var Ib=new ArrayBuffer(2);(new DataView(Ib)).setUint16(0,256,!0);Hb=256===(new Uint16Array(Ib))[0]}else Hb=!1;var Jb=Hb;
if(tb){var Gb=new ArrayBuffer(2);(new DataView(Gb)).setUint16(0,256,!0);Fb=256===(new Uint16Array(Gb))[0]}else Fb=!1;var Hb=Fb; function H(a,b,c,d){this.id=Kb+=2;this.b=null;this.u=a;this.hb=b;this.size=c||0;this.type=d||Lb;this.A=d==Mb;Bb(this);this.va=this.Vb=!1;if(c)if(vb)this.F=new ArrayBuffer(c),this.G=new DataView(this.F,0,c),this.H=new Uint8Array(this.F,0,c),this.J=new Uint16Array(this.F,0,c>>1),this.b=new Int32Array(this.F,0,c>>2),Nb(this,Jb?Ob:ac);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Nb(this,bc)}else Nb(this)}var Lb=0,Mb=2,cc=["NONE","RAM","ROM","VIDEO","H/W"],Kb=0;
function H(a,b,c,d){this.id=Ib+=2;this.b=null;this.u=a;this.hb=b;this.size=c||0;this.type=d||Jb;this.A=d==Kb;zb(this);this.ua=this.Vb=!1;if(c)if(tb)this.D=new ArrayBuffer(c),this.F=new DataView(this.D,0,c),this.H=new Uint8Array(this.D,0,c),this.J=new Uint16Array(this.D,0,c>>1),this.b=new Int32Array(this.D,0,c>>2),Lb(this,Hb?Mb:Zb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Lb(this,$b)}else Lb(this)}var Jb=0,Kb=2,ac=["NONE","RAM","ROM","VIDEO","H/W"],Ib=0; H.prototype={constructor:H,parent:null,save:function(){var a,b;if(vb)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(vb)for(b=0;b<a.length;b++)this.G.setInt32(b<<2,a[b],!0);else this.b=a;return this.va=!0}return!1},ya:function(a,b){b?0===this.w++&&dc(this,ec,!1):0===this.s++&&fc(this,ec,!1)},L:function(){this.C&&gb(this.C,129)&&this.C.message("attempt to read invalid block %"+n(this.u),!0);
H.prototype={constructor:H,parent:null,save:function(){var a,b;if(tb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.F.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(tb)for(b=0;b<a.length;b++)this.F.setInt32(b<<2,a[b],!0);else this.b=a;return this.ua=!0}return!1},xa:function(a,b){b?0===this.w++&&bc(this,cc,!1):0===this.s++&&dc(this,cc,!1)},K:function(){this.C&&eb(this.C,129)&&this.C.message("attempt to read invalid block %"+n(this.u),!0); return 255},B:function(a,b){this.C&&gb(this.C,129)&&this.C.message("attempt to write "+q(b)+" to invalid block %"+n(this.u),!0)},N:function(a,b){return this.Sa(a++,b++)|this.Sa(a,b)<<8},I:function(a,b,c){this.Ua(a++,b&255,c++);this.Ua(a,b>>8,c)},V:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},oa: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},Ga:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.va=!0},jb:function(a,
return 255},B:function(a,b){this.C&&eb(this.C,129)&&this.C.message("attempt to write "+q(b)+" to invalid block %"+n(this.u),!0)},M:function(a,b){return this.Ta(a++,b++)|this.Ta(a,b)<<8},I:function(a,b,c){this.Ga(a++,b&255,c++);this.Ga(a,b>>8,c)},V:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},na: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},Ha:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.ua=!0},jb: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.va=!0},S:function(a,b){if(this.C&&null!=this.u){var c=this.C;gc(c,this.u+a,1,c.S)&&c.U(!0)}return this.fb(a,b)},ka:function(a,b){if(this.C&&null!=this.u){var c=this.C;gc(c,this.u+a,2,c.S)&&c.U(!0)}return this.tb(a,b)},wa:function(a,b,c){if(this.C&&null!=this.u){var d=this.C;gc(d,this.u+a,1,d.G)&&d.U(!0)}this.A?this.B(a,b,c):this.Va(a,b,c)},Xa:function(a,b,
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.ua=!0},S:function(a,b){if(this.C&&null!=this.u){var c=this.C;ec(c,this.u+a,1,c.S)&&c.U(!0)}return this.fb(a,b)},ja:function(a,b){if(this.C&&null!=this.u){var c=this.C;ec(c,this.u+a,2,c.S)&&c.U(!0)}return this.tb(a,b)},va:function(a,b,c){if(this.C&&null!=this.u){var d=this.C;ec(d,this.u+a,1,d.F)&&d.U(!0)}this.A?this.B(a,b,c):this.Va(a,b,c)},Xa:function(a,b, c){if(this.C&&null!=this.u){var d=this.C;gc(d,this.u+a,2,d.G)&&d.U(!0)}this.A?this.B(a,b,c):this.ub(a,b,c)},O:function(a){return this.H[a]},T:function(a){return this.H[a]},da:function(a){return this.G.getUint16(a,!0)},na:function(a){return a&1?this.H[a]|this.H[a+1]<<8:this.J[a>>1]},qa:function(a,b){this.H[a]=b;this.va=!0},xa:function(a,b){this.H[a]=b;this.va=!0},Wa:function(a,b){this.G.setUint16(a,b,!0);this.va=!0},Ya:function(a,b){a&1?(this.H[a]=b,this.H[a+1]=b>>8):this.J[a>>1]=b;this.va=!0}};
c){if(this.C&&null!=this.u){var d=this.C;ec(d,this.u+a,2,d.F)&&d.U(!0)}this.A?this.B(a,b,c):this.ub(a,b,c)},N:function(a){return this.H[a]},T:function(a){return this.H[a]},ea:function(a){return this.F.getUint16(a,!0)},ma:function(a){return a&1?this.H[a]|this.H[a+1]<<8:this.J[a>>1]},pa:function(a,b){this.H[a]=b;this.ua=!0},wa:function(a,b){this.H[a]=b;this.ua=!0},Wa:function(a,b){this.F.setUint16(a,b,!0);this.ua=!0},Ya:function(a,b){a&1?(this.H[a]=b,this.H[a+1]=b>>8):this.J[a>>1]=b;this.ua=!0}}; function Bb(a,b,c){a.C=b;a.s=a.w=0;c&&((a.s=c.s)&&fc(a,ec,!1),(a.w=c.w)&&dc(a,ec,!1))}function hc(a,b){b?0===--a.w&&(a.Ua=a.A?a.B:a.Va,a.Pb=a.A?a.I:a.ub):0===--a.s&&(a.Sa=a.fb,a.Mb=a.tb)}function dc(a,b,c){c&&a.w||(a.Ua=!a.A&&b[2]||a.B,a.Pb=!a.A&&b[3]||a.I);if(c||void 0===c)a.Va=b[2]||a.B,a.ub=b[3]||a.I}function fc(a,b,c){c&&a.s||(a.Sa=b[0]||a.L,a.Mb=b[1]||a.N);if(c||void 0===c)a.fb=b[0]||a.L,a.tb=b[1]||a.N}function Nb(a,b){b||(b=ic);fc(a,b,void 0);dc(a,b,void 0)}
function zb(a,b,c){a.C=b;a.s=a.w=0;c&&((a.s=c.s)&&dc(a,cc,!1),(a.w=c.w)&&bc(a,cc,!1))}function fc(a,b){b?0===--a.w&&(a.Ga=a.A?a.B:a.Va,a.Pb=a.A?a.I:a.ub):0===--a.s&&(a.Ta=a.fb,a.Mb=a.tb)}function bc(a,b,c){c&&a.w||(a.Ga=!a.A&&b[2]||a.B,a.Pb=!a.A&&b[3]||a.I);if(c||void 0===c)a.Va=b[2]||a.B,a.ub=b[3]||a.I}function dc(a,b,c){c&&a.s||(a.Ta=b[0]||a.K,a.Mb=b[1]||a.M);if(c||void 0===c)a.fb=b[0]||a.K,a.tb=b[1]||a.M}function Lb(a,b){b||(b=gc);dc(a,b,void 0);bc(a,b,void 0)} var ic=[],bc=[H.prototype.V,H.prototype.oa,H.prototype.Ga,H.prototype.jb],ec=[H.prototype.S,H.prototype.ka,H.prototype.wa,H.prototype.Xa];if(vb)var ac=[H.prototype.O,H.prototype.da,H.prototype.qa,H.prototype.Wa],Ob=[H.prototype.T,H.prototype.na,H.prototype.xa,H.prototype.Ya];
var gc=[],$b=[H.prototype.V,H.prototype.na,H.prototype.Ha,H.prototype.jb],cc=[H.prototype.S,H.prototype.ja,H.prototype.va,H.prototype.Xa];if(tb)var Zb=[H.prototype.N,H.prototype.ea,H.prototype.pa,H.prototype.Wa],Mb=[H.prototype.T,H.prototype.ma,H.prototype.wa,H.prototype.Ya]; function jc(a,b){x.call(this,"CPU",a,jc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.Ra=c;this.i.Da=d;this.i.qb=Math.round(this.i.Ra/1E4)/100;this.i.Ba=this.i.qb*this.i.Da;this.j.X=!1;this.j.pb=!1;this.j.Eb=a.autoStart;this.j.Fb=!1;this.j.Ia=!1;this.i.Za=this.i.Oa=0;this.i.$a=a.csStart;this.i.Na=a.csInterval;this.i.Pa=a.csStop;this.ka=this.Fa.bind(this);G(this)}z(jc);var kc=["power","reset"];k=jc.prototype;
function hc(a,b){x.call(this,"CPU",a,hc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.Sa=c;this.i.Ca=d;this.i.qb=Math.round(this.i.Sa/1E4)/100;this.i.Aa=this.i.qb*this.i.Ca;this.j.X=!1;this.j.pb=!1;this.j.Eb=a.autoStart;this.j.Fb=!1;this.j.Ja=!1;this.i.Za=this.i.Pa=0;this.i.$a=a.csStart;this.i.Oa=a.csInterval;this.i.Qa=a.csStop;this.ja=this.Fa.bind(this);G(this)}z(hc);var ic=["power","reset"];g=hc.prototype; k.La=function(a,b,c,d){this.s=a;this.A=b;this.C=d;for(b=0;b<kc.length;b++)(c=this.H[kc[b]])&&this.s.la(null,kc[b],c);yb(a,"FPU");this.w=yb(a,"ChipSet");a=lc(a,"autoStart");null!=a&&(this.j.Eb="true"==a?!0:"false"==a?!1:!!a);G(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
g.Ma=function(a,b,c,d){this.s=a;this.A=b;this.C=d;for(b=0;b<ic.length;b++)(c=this.H[ic[b]])&&this.s.ka(null,ic[b],c);wb(a,"FPU");this.w=wb(a,"ChipSet");a=jc(a,"autoStart");null!=a&&(this.j.Eb="true"==a?!0:"false"==a?!1:!!a);G(this)};g.reset=function(){};g.save=function(){return null};g.restore=function(){return!1}; k.ta=function(a,b){if(!b){if(a&&this.restore){mc(this);if(!this.restore(a))return!1;nc(this)}else this.reset();if(this.C){var c=this.C;c.g("Type ? for help with PC8080 Debugger commands");c.ma();if(c.Ya){var d=c.Ya;c.Ya=null;oc(c,d)}}else this.g("No debugger detected")}I(this);return!0};k.sa=function(a){return a?this.save():!0};function pc(a){(a.j.Eb||!a.C&&void 0===a.H.run)&&a.Fa(!0)}k.Gb=function(){return 0};
g.sa=function(a,b){if(!b){if(a&&this.restore){kc(this);if(!this.restore(a))return!1;lc(this)}else this.reset();if(this.C){var c=this.C;c.g("Type ? for help with PC8080 Debugger commands");c.la();if(c.Ya){var d=c.Ya;c.Ya=null;mc(c,d)}}else this.g("No debugger detected")}I(this);return!0};g.ra=function(a){return a?this.save():!0};function nc(a){(a.j.Eb||!a.C&&void 0===a.H.run)&&a.Fa(!0)}g.Gb=function(){return 0}; function nc(a){void 0===a.i.$a&&(a.i.$a=0);void 0===a.i.Na&&(a.i.Na=-1);void 0===a.i.Pa&&(a.i.Pa=-1);a.j.Ia=0<=a.i.$a&&0<a.i.Na;a.j.Ia&&(a.i.Za=0,a.i.Oa=a.i.$a-a.J)}function qc(a,b){if(a.j.Ia){var c=!1;a.i.Za=a.i.Za+a.Gb()|0;a.i.Oa-=b;0>=a.i.Oa&&(a.i.Oa+=a.i.Na,c=!0);0<=a.i.Pa&&a.i.Pa<=rc(a)&&(a.i.Na=a.i.Pa=-1,nc(a),a.U(),c=!0);c&&a.g(rc(a)+" cycles: checksum="+n(a.i.Za))}}
function lc(a){void 0===a.i.$a&&(a.i.$a=0);void 0===a.i.Oa&&(a.i.Oa=-1);void 0===a.i.Qa&&(a.i.Qa=-1);a.j.Ja=0<=a.i.$a&&0<a.i.Oa;a.j.Ja&&(a.i.Za=0,a.i.Pa=a.i.$a-a.J)}function oc(a,b){if(a.j.Ja){var c=!1;a.i.Za=a.i.Za+a.Gb()|0;a.i.Pa-=b;0>=a.i.Pa&&(a.i.Pa+=a.i.Oa,c=!0);0<=a.i.Qa&&a.i.Qa<=pc(a)&&(a.i.Oa=a.i.Qa=-1,lc(a),a.U(),c=!0);c&&a.g(pc(a)+" cycles: checksum="+n(a.i.Za))}} k.la=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.H[b]=c;a=!0;break;case "run":this.H[b]=c;c.onclick=function(){var a;if(a=d.s)if(a=d.s,a.j.W)a=!0;else{var b=null,c,g=C(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.j.Ka);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.j.W);c++);c==g.length&&(b=a);v("The "+b.type+" component ("+b.id+") is not "+(b.j.Ka?"powered yet":"ready yet"+(b.lb?" (waiting for notification)":""))+".");a=!1}a&&(d.j.X?d.U(!0):d.Fa(!0))};a=!0;break;
g.ka=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.H[b]=c;a=!0;break;case "run":this.H[b]=c;c.onclick=function(){var a;if(a=d.s)if(a=d.s,a.j.W)a=!0;else{var b=null,c,h=C(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.j.La);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.j.W);c++);c==h.length&&(b=a);v("The "+b.type+" component ("+b.id+") is not "+(b.j.La?"powered yet":"ready yet"+(b.lb?" (waiting for notification)":""))+".");a=!1}a&&(d.j.X?d.U(!0):d.Fa(!0))};a=!0;break; case "speed":this.H[b]=c;a=!0;break;case "setSpeed":this.H[b]=c,c.onclick=function(){sc(d,d.i.Da<<1,!0)},c.textContent=this.i.Ba.toFixed(2)+"Mhz",a=!0}return a};function tc(a,b,c){a.J+=b;c&&(a.F=a.b=0)}
case "speed":this.H[b]=c;a=!0;break;case "setSpeed":this.H[b]=c,c.onclick=function(){qc(d,d.i.Ca<<1,!0)},c.textContent=this.i.Aa.toFixed(2)+"Mhz",a=!0}return a};function rc(a,b,c){a.J+=b;c&&(a.F=a.b=0)} function uc(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1<a.i.Da&&a.i.Aa&&(d=a.i.Aa/a.i.qb);a.i.Ib=Math.round(1E3/30);a.i.Zb=Math.floor(a.i.Ra/c*d);a.i.rb=Math.floor(a.i.Ra/30*d);a.i.Kb=Math.floor(a.i.Ra/60*d);a.i.Jb=Math.floor(a.i.Ra/2*d);b||(a.i.Qa=a.i.rb,a.i.bb=a.i.Kb,a.i.ab=a.i.Jb);a.i.sb=0}function rc(a){return a.J+a.I+a.F-a.b}function mc(a){a.i.Aa=0;a.J=a.I=a.F=a.b=0;nc(a);sc(a,1)}
function sc(a,b){var c=30;60>c&&(c=60);2>c&&(c=2);var d=1;b&&1<a.i.Ca&&a.i.za&&(d=a.i.za/a.i.qb);a.i.Ib=Math.round(1E3/30);a.i.Zb=Math.floor(a.i.Sa/c*d);a.i.rb=Math.floor(a.i.Sa/30*d);a.i.Kb=Math.floor(a.i.Sa/60*d);a.i.Jb=Math.floor(a.i.Sa/2*d);b||(a.i.Ra=a.i.rb,a.i.bb=a.i.Kb,a.i.ab=a.i.Jb);a.i.sb=0}function pc(a){return a.J+a.I+a.F-a.b}function kc(a){a.i.za=0;a.J=a.I=a.F=a.b=0;lc(a);qc(a,1)} function sc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.Aa/a.i.Ba?b=1:d=!0;a.i.Da=b;b=a.i.qb*a.i.Da;if(a.i.Ba!=b){a.i.Ba=b;b=a.i.Ba.toFixed(2)+"Mhz";var e=a.H.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.s&&a.s.gb()}tc(a,a.I);a.I=0;a.i.Ma=sa();a.i.Ca=0;uc(a);return d}
function qc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.za/a.i.Aa?b=1:d=!0;a.i.Ca=b;b=a.i.qb*a.i.Ca;if(a.i.Aa!=b){a.i.Aa=b;b=a.i.Aa.toFixed(2)+"Mhz";var e=a.H.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.s&&a.s.gb()}rc(a,a.I);a.I=0;a.i.Na=ua();a.i.Ba=0;sc(a);return d} k.Fa=function(a){if(hb(this,!0)){if(!this.j.X){sc(this);this.s&&this.s.start(this.i.Ma,rc(this));this.j.X=!0;this.j.pb=!0;this.w&&this.w.$b();var b=this.H.run;b&&(b.textContent="Halt");this.s&&(this.s.ma(!0),a&&this.s.gb(!0))}this.i.sb>=this.i.Ra&&uc(this,!0);this.i.cb=0;this.i.mb=sa();this.i.Ca&&(a=this.i.mb-this.i.Ca,a>this.i.Ib&&(this.i.Ma+=a,this.i.Ma>this.i.mb&&(this.i.Ma=this.i.mb)));try{do{var c=this.j.Ia?1:this.i.Zb;this.w&&(this.w.Ob(),c=this.w.bc(0,c),c=this.w.ac(c));try{this.Ta(c)}catch(e){if("number"!=
g.Fa=function(a){if(fb(this,!0)){if(!this.j.X){qc(this);this.s&&this.s.start(this.i.Na,pc(this));this.j.X=!0;this.j.pb=!0;this.w&&this.w.$b();var b=this.H.run;b&&(b.textContent="Halt");this.s&&(this.s.la(!0),a&&this.s.gb(!0))}this.i.sb>=this.i.Sa&&sc(this,!0);this.i.cb=0;this.i.mb=ua();this.i.Ba&&(a=this.i.mb-this.i.Ba,a>this.i.Ib&&(this.i.Na+=a,this.i.Na>this.i.mb&&(this.i.Na=this.i.mb)));try{do{var c=this.j.Ja?1:this.i.Zb;this.w&&(this.w.Ob(),c=this.w.bc(0,c),c=this.w.ac(c));try{this.Ua(c)}catch(e){if("number"!= typeof e)throw e;}var d=this.F-this.b;this.I+=d;this.i.cb+=d;tc(this,0,!0);qc(this,d);this.i.bb-=d;0>=this.i.bb&&(this.i.bb+=this.i.Kb);this.i.ab-=d;0>=this.i.ab&&(this.i.ab+=this.i.Jb,this.s&&this.s.ma());this.i.Qa-=d;if(0>=this.i.Qa){this.i.Qa+=this.i.rb;break}}while(this.j.X)}catch(e){this.U();I(this);this.s&&this.s.stop(sa(),rc(this));hb(this,!1);ub(this,e.stack||e.message);return}c=setTimeout;d=this.ka;this.i.Ca=sa();a=this.i.Ib;this.i.cb&&(a=Math.round(a*this.i.cb/this.i.rb));a-=this.i.Ca-this.i.mb;
typeof e)throw e;}var d=this.F-this.b;this.I+=d;this.i.cb+=d;rc(this,0,!0);oc(this,d);this.i.bb-=d;0>=this.i.bb&&(this.i.bb+=this.i.Kb);this.i.ab-=d;0>=this.i.ab&&(this.i.ab+=this.i.Jb,this.s&&this.s.la());this.i.Ra-=d;if(0>=this.i.Ra){this.i.Ra+=this.i.rb;break}}while(this.j.X)}catch(e){this.U();I(this);this.s&&this.s.stop(ua(),pc(this));fb(this,!1);sb(this,e.stack||e.message);return}c=setTimeout;d=this.ja;this.i.Ba=ua();a=this.i.Ib;this.i.cb&&(a=Math.round(a*this.i.cb/this.i.rb));a-=this.i.Ba-this.i.mb; if(b=this.i.Ca-this.i.Ma)this.i.Aa=Math.round(this.I/(10*b))/100,864E5<=b&&(this.J=0,this.w&&this.w.Ob(!0),sc(this));if(0>a||this.i.Aa<this.i.Ba)a=0;this.i.sb+=this.i.cb;this.i.Ca+=a;c(d,a)}else I(this),this.s&&this.s.stop(sa(),rc(this))};k.Ta=function(){return 0};k.U=function(a){ib(this,!0);this.F-=this.b;this.b=0;tc(this,this.I);this.I=0;if(this.j.X){this.j.X=!1;this.w&&this.w.$b();var b=this.H.run;b&&(b.textContent="Run")}this.j.kb=a};function I(a,b){a.s&&a.s.ma(b)}
if(b=this.i.Ba-this.i.Na)this.i.za=Math.round(this.I/(10*b))/100,864E5<=b&&(this.J=0,this.w&&this.w.Ob(!0),qc(this));if(0>a||this.i.za<this.i.Aa)a=0;this.i.sb+=this.i.cb;this.i.Ba+=a;c(d,a)}else I(this),this.s&&this.s.stop(ua(),pc(this))};g.Ua=function(){return 0};g.U=function(a){gb(this,!0);this.F-=this.b;this.b=0;rc(this,this.I);this.I=0;if(this.j.X){this.j.X=!1;this.w&&this.w.$b();var b=this.H.run;b&&(b.textContent="Run")}this.j.kb=a};function I(a,b){a.s&&a.s.la(b)} function vc(a){this.Hb=a.model||8080;jc.call(this,a,1E6);this.da=wc;mc(this);this.j.kb=this.j.Ub=!1;this.V=0;this.ea=[];this.R=this.Z=this.G=this.T=this.S=this.L=0;xc(this)}z(vc,jc);k=vc.prototype;k.reset=function(){this.j.X&&this.U();xc(this);mc(this);this.j.Ja=!1};function xc(a){a.K=0;a.aa=0;a.ga=0;a.ba=0;a.ha=0;a.ca=0;a.ia=0;a.ja=0;a.P=0;yc(a,0);a.O=0}k.Gb=function(){var a=this.K+this.aa+this.ga+this.ba+this.ha+this.ca+this.ia|0;return a=a+this.ja+this.P+zc(this)|0};
function tc(a){this.Hb=a.model||8080;hc.call(this,a,1E6);this.ea=uc;kc(this);this.j.kb=this.j.Ub=!1;this.V=0;this.Y=[];this.P=this.aa=this.D=this.T=this.S=this.K=0;vc(this)}z(tc,hc);g=tc.prototype;g.reset=function(){this.j.X&&this.U();vc(this);kc(this);this.j.Ka=!1};function vc(a){a.O=0;a.ba=0;a.ga=0;a.ca=0;a.ha=0;a.da=0;a.ia=0;a.Ea=0;a.R=0;wc(a,0);a.N=0}g.Gb=function(){var a=this.O+this.ba+this.ga+this.ca+this.ha+this.da+this.ia|0;return a=a+this.Ea+this.R+xc(this)|0}; k.save=function(){var a=new J(this);M(a,0,[this.K,this.aa,this.ga,this.ba,this.ha,this.ca,this.ia,this.ja,this.P,zc(this)]);M(a,1,[this.N,this.O,this.J,this.i.Da]);for(var b=this.A,c=0,d=[],e=0;e<b.J;e++){var f=b.A[e];if(f.va||f.Vb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,l=0,m=[];g<f.length;){for(var p=f[g],r=g+1;r<f.length&&f[r]===p;)r++;m[l++]=r-g;m[l++]=p;g=r}if(m.length<f.length){f=m;break a}}d[h]=f}}M(a,2,d);return a.data()};
g.save=function(){var a=new J(this);M(a,0,[this.O,this.ba,this.ga,this.ca,this.ha,this.da,this.ia,this.Ea,this.R,xc(this)]);M(a,1,[this.M,this.N,this.J,this.i.Ca]);for(var b=this.A,c=0,d=[],e=0;e<b.J;e++){var f=b.A[e];if(f.ua||f.Vb){d[c++]=e;var k=c++;a:if(f=f.save()){for(var h=0,l=0,m=[];h<f.length;){for(var p=f[h],r=h+1;r<f.length&&f[r]===p;)r++;m[l++]=r-h;m[l++]=p;h=r}if(m.length<f.length){f=m;break a}}d[k]=f}}M(a,2,d);return a.data()}; k.restore=function(a){var b=a[0];this.K=b[0];this.aa=b[1];this.ga=b[2];this.ba=b[3];this.ha=b[4];this.ca=b[5];this.ia=b[6];this.ja=b[7]&65535;this.P=b[8]&65535;yc(this,b[9]);b=a[1];this.N=b[0];this.O=b[1];this.J=b[2];sc(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.S){for(var f=0,h=Array(b.S),g=0;g<e.length-1;)for(var l=e[g++],m=e[g++];l--;)h[f++]=m;e=h}f=b.A[d];if(!f||!f.restore(e)){v("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
g.restore=function(a){var b=a[0];this.O=b[0];this.ba=b[1];this.ga=b[2];this.ca=b[3];this.ha=b[4];this.da=b[5];this.ia=b[6];this.Ea=b[7]&65535;this.R=b[8]&65535;wc(this,b[9]);b=a[1];this.M=b[0];this.N=b[1];this.J=b[2];qc(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.S){for(var f=0,k=Array(b.S),h=0;h<e.length-1;)for(var l=e[h++],m=e[h++];l--;)k[f++]=m;e=k}f=b.A[d];if(!f||!f.restore(e)){v("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b}; k.la=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "D":case "E":case "H":case "L":case "SP":case "PC":case "F":case "SF":case "ZF":case "AF":case "PF":case "CF":this.H[b]=c;this.V++;d=!0;break;default:d=this.parent.la.call(this,a,b,c)}return d};function Ac(a){return a.aa<<8|a.ga}function Bc(a,b){a.aa=b>>8&255;a.ga=b&255}function Cc(a){return a.ba<<8|a.ha}function Dc(a,b){a.ba=b>>8&255;a.ha=b&255}function N(a){return a.ca<<8|a.ia}function Ec(a,b){a.ca=b>>8&255;a.ia=b&255}
g.ka=function(a,b,c){var d=!1;switch(b){case "A":case "B":case "C":case "D":case "E":case "H":case "L":case "SP":case "PC":case "F":case "SF":case "ZF":case "AF":case "PF":case "CF":this.H[b]=c;this.V++;d=!0;break;default:d=this.parent.ka.call(this,a,b,c)}return d};function yc(a){return a.ba<<8|a.ga}function zc(a,b){a.ba=b>>8&255;a.ga=b&255}function Ac(a){return a.ca<<8|a.ha}function Bc(a,b){a.ca=b>>8&255;a.ha=b&255}function Cc(a){return a.da<<8|a.ia}function Dc(a,b){a.da=b>>8&255;a.ia=b&255} function dd(a){return(a.M^a.B)&16?16:0}function zc(a){return a.Ea&-214|(a.M&128?128:0)|(a.D&255?0:64)|dd(a)|(wb[a.M&255]?4:0)|(a.D&256?1:0)}function yc(a,b){a.D=a.M=a.B=0;b&1&&(a.D|=256);b&4||(a.M|=1);b&16&&(a.B|=16);b&64||(a.D|=255);b&128&&(a.M^=192);a.Ea=a.Ea&-513|b&512|2}function ed(a,b){a.B=b;b=(a.M=b+1)&255;a.D=a.D&-256|b;return b}function fd(a,b){a.B=b;b=(a.M=b-1)&255;a.D=a.D&-256|b;return b}function gd(a,b){return a.ea[(b&a.L)>>>a.R].Sa(b&a.G,b)}
function cd(a){return(a.L^a.B)&16?16:0}function xc(a){return a.Da&-214|(a.L&128?128:0)|(a.G&255?0:64)|cd(a)|(ub[a.L&255]?4:0)|(a.G&256?1:0)}function wc(a,b){a.G=a.L=a.B=0;b&1&&(a.G|=256);b&4||(a.L|=1);b&16&&(a.B|=16);b&64||(a.G|=255);b&128&&(a.L^=192);a.Da=a.Da&-513|b&512|2}function dd(a,b){a.B=b;b=(a.L=b+1)&255;a.G=a.G&-256|b;return b}function ed(a,b){a.B=b;b=(a.L=b-1)&255;a.G=a.G&-256|b;return b}function fd(a,b){return a.Y[(b&a.K)>>>a.P].Ta(b&a.D,b)} function hd(a,b){var c=b&a.G,d=(b&a.L)>>>a.R;if(c<a.G)return a.ea[d].Mb(c,b);c=a.ea[d].Sa(c,b);return c|=a.ea[d+1&a.S].Sa(0,b+1)<<8}function id(a,b,c){a.ea[(b&a.L)>>>a.R].Ua(b&a.G,c&255,b)}function O(a){var b=gd(a,a.P);a.P=a.P+1&65535;return b}function jd(a){var b=hd(a,a.P);a.P=a.P+2&65535;return b}function P(a,b,c,d){d=d||2;a.H[b]&&(void 0===c&&(ub(a,"Value for "+b+" is invalid"),a.U()),c=!a.j.X||a.j.Fb?n(c,d):"--------".substr(0,d),a.H[b].textContent!=c&&(a.H[b].textContent=c))}
function gd(a,b){var c=b&a.D,d=(b&a.K)>>>a.P;if(c<a.D)return a.Y[d].Mb(c,b);c=a.Y[d].Ta(c,b);return c|=a.Y[d+1&a.S].Ta(0,b+1)<<8}function hd(a){var b=fd(a,a.R);a.R=a.R+1&65535;return b}function id(a){var b=gd(a,a.R);a.R=a.R+2&65535;return b}function N(a,b,c,d){d=d||2;a.H[b]&&(void 0===c&&(sb(a,"Value for "+b+" is invalid"),a.U()),c=!a.j.X||a.j.Fb?n(c,d):"--------".substr(0,d),a.H[b].textContent!=c&&(a.H[b].textContent=c))} k.ma=function(a){this.V&&(a||!this.j.X||this.j.Fb)&&(P(this,"A",this.K),P(this,"B",this.aa),P(this,"C",this.ga),P(this,"D",this.ba),P(this,"E",this.ha),P(this,"H",this.ca),P(this,"L",this.ia),P(this,"SP",this.ja,4),P(this,"PC",this.P,4),a=zc(this),P(this,"F",a,2),P(this,"SF",a&128,1),P(this,"ZF",a&64,1),P(this,"AF",a&16,1),P(this,"PF",a&4,1),P(this,"CF",a&1,1));if(a=this.H.speed)a.textContent=this.j.X&&this.i.Aa?this.i.Aa.toFixed(2)+"Mhz":"Stopped"};
g.la=function(a){this.V&&(a||!this.j.X||this.j.Fb)&&(N(this,"A",this.O),N(this,"B",this.ba),N(this,"C",this.ga),N(this,"D",this.ca),N(this,"E",this.ha),N(this,"H",this.da),N(this,"L",this.ia),N(this,"SP",this.Ea,4),N(this,"PC",this.R,4),a=xc(this),N(this,"F",a,2),N(this,"SF",a&128,1),N(this,"ZF",a&64,1),N(this,"AF",a&16,1),N(this,"PF",a&4,1),N(this,"CF",a&1,1));if(a=this.H.speed)a.textContent=this.j.X&&this.i.za?this.i.za.toFixed(2)+"Mhz":"Stopped"}; k.Ta=function(a){this.j.kb=!0;var b=this.j.Ub=this.C&&kd(this.C),c=a?this.j.pb?0:1:-1;this.j.pb=!1;this.F=this.b=a;this.w&&!a&&this.w.Ob();a||(this.N|=4);do{if(this.O&&this.O&4){this.N=this.b=0;break}if(b){if(ld(this.C,this.P,c)){this.U();break}c=1}this.N=0;this.da[O(this)].call(this)}while(0<this.b);return this.j.kb?this.F-this.b:void 0===this.j.kb?0:-1};Sa(function(){for(var a=F(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new vc(d);eb(d,c)}});function md(){this.b-=4}
g.Ua=function(a){this.j.kb=!0;var b=this.j.Ub=this.C&&jd(this.C),c=a?this.j.pb?0:1:-1;this.j.pb=!1;this.F=this.b=a;this.w&&!a&&this.w.Ob();a||(this.M|=4);do{if(this.N&&this.N&4){this.M=this.b=0;break}if(b){if(kd(this.C,this.R,c)){this.U();break}c=1}this.M=0;this.ea[hd(this)].call(this)}while(0<this.b);return this.j.kb?this.F-this.b:void 0===this.j.kb?0:-1};Qa(function(){for(var a=F(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new tc(d);cb(d,c)}});function ld(){this.b-=4} function Q(){this.P=this.P-1&65535;fb(this,"unimplemented opcode",!0);this.U()}
function O(){this.R=this.R-1&65535;db(this,"unimplemented opcode",!0);this.U()} var wc=[md,function(){Bc(this,jd(this));this.b-=10},function(){id(this,Ac(this),this.K);this.b-=7},function(){Bc(this,Ac(this)+1);this.b-=5},function(){this.aa=ed(this,this.aa);this.b-=5},function(){this.aa=fd(this,this.aa);this.b-=5},function(){this.aa=O(this);this.b-=7},function(){var a=this.K<<1;this.K=a&255|a>>8;this.D=this.D&255|a&256;this.b-=4},md,function(){var a;Ec(this,a=N(this)+Ac(this));this.D=this.D&255|a>>8&256;this.b-=10},function(){this.K=gd(this,Ac(this));this.b-=7},function(){Bc(this,
var uc=[ld,function(){zc(this,id(this));this.b-=10},function(){var a=yc(this);this.Y[(a&this.K)>>>this.P].Ga(a&this.D,this.O&255,a);this.b-=7},function(){zc(this,yc(this)+1);this.b-=5},function(){this.ba=dd(this,this.ba);this.b-=5},function(){this.ba=ed(this,this.ba);this.b-=5},function(){this.ba=hd(this);this.b-=7},function(){var a=this.O<<1;this.O=a&255|a>>8;this.G=this.G&255|a&256;this.b-=4},ld,function(){var a;Dc(this,a=Cc(this)+yc(this));this.G=this.G&255|a>>8&256;this.b-=10},function(){this.O= Ac(this)-1);this.b-=5},function(){this.ga=ed(this,this.ga);this.b-=5},function(){this.ga=fd(this,this.ga);this.b-=5},function(){this.ga=O(this);this.b-=7},function(){var a=this.K<<8&256;this.K=(a|this.K)>>1;this.D=this.D&255|a;this.b-=4},md,function(){Dc(this,jd(this));this.b-=10},function(){id(this,Cc(this),this.K);this.b-=7},function(){Dc(this,Cc(this)+1);this.b-=5},function(){this.ba=ed(this,this.ba);this.b-=5},function(){this.ba=fd(this,this.ba);this.b-=5},function(){this.ba=O(this);this.b-=7},
fd(this,yc(this));this.b-=7},function(){zc(this,yc(this)-1);this.b-=5},function(){this.ga=dd(this,this.ga);this.b-=5},function(){this.ga=ed(this,this.ga);this.b-=5},function(){this.ga=hd(this);this.b-=7},function(){var a=this.O<<8&256;this.O=(a|this.O)>>1;this.G=this.G&255|a;this.b-=4},ld,function(){Bc(this,id(this));this.b-=10},function(){var a=Ac(this);this.Y[(a&this.K)>>>this.P].Ga(a&this.D,this.O&255,a);this.b-=7},function(){Bc(this,Ac(this)+1);this.b-=5},function(){this.ca=dd(this,this.ca);this.b-= function(){var a=this.K<<1;this.K=a&255|this.D>>8;this.D=this.D&255|a&256;this.b-=4},md,function(){var a;Ec(this,a=N(this)+Cc(this));this.D=this.D&255|a>>8&256;this.b-=10},function(){this.K=gd(this,Cc(this));this.b-=7},function(){Dc(this,Cc(this)-1);this.b-=5},function(){this.ha=ed(this,this.ha);this.b-=5},function(){this.ha=fd(this,this.ha);this.b-=5},function(){this.ha=O(this);this.b-=7},function(){var a=this.K<<8&256;this.K=(this.D&256|this.K)>>1;this.D=this.D&255|a;this.b-=4},md,function(){Ec(this,
5},function(){this.ca=ed(this,this.ca);this.b-=5},function(){this.ca=hd(this);this.b-=7},function(){var a=this.O<<1;this.O=a&255|this.G>>8;this.G=this.G&255|a&256;this.b-=4},ld,function(){var a;Dc(this,a=Cc(this)+Ac(this));this.G=this.G&255|a>>8&256;this.b-=10},function(){this.O=fd(this,Ac(this));this.b-=7},function(){Bc(this,Ac(this)-1);this.b-=5},function(){this.ha=dd(this,this.ha);this.b-=5},function(){this.ha=ed(this,this.ha);this.b-=5},function(){this.ha=hd(this);this.b-=7},function(){var a= jd(this));this.b-=10},function(){var a=jd(this),b=N(this),c=a&this.G,d=(a&this.L)>>>this.R;c<this.G?this.ea[d].Pb(c,b&65535,a):(this.ea[d++].Ua(c,b&255,a),this.ea[d&this.S].Ua(0,b>>8&255,a+1));this.b-=16},function(){Ec(this,N(this)+1);this.b-=5},function(){this.ca=ed(this,this.ca);this.b-=5},function(){this.ca=fd(this,this.ca);this.b-=5},function(){this.ca=O(this);this.b-=7},function(){var a=this.K,b=!!(this.D&256),c=!!dd(this);9<(a&15)||c?(a+=6,c=!0):c=!1;160<=a||b?(a+=96,b=!0):b=!1;this.D=this.M=
this.O<<8&256;this.O=(this.G&256|this.O)>>1;this.G=this.G&255|a;this.b-=4},ld,function(){Dc(this,id(this));this.b-=10},function(){var a=id(this),b=Cc(this),c=a&this.D,d=(a&this.K)>>>this.P;c<this.D?this.Y[d].Pb(c,b&65535,a):(this.Y[d++].Ga(c,b&255,a),this.Y[d&this.S].Ga(0,b>>8&255,a+1));this.b-=16},function(){Dc(this,Cc(this)+1);this.b-=5},function(){this.da=dd(this,this.da);this.b-=5},function(){this.da=ed(this,this.da);this.b-=5},function(){this.da=hd(this);this.b-=7},function(){var a=this.O,b= this.K=a&255;this.D=b?this.D|256:this.D&-257;this.B=c?~this.M&16|this.B&-17:this.M&16|this.B&-17;this.b-=4},md,function(){var a;Ec(this,a=N(this)+N(this));this.D=this.D&255|a>>8&256;this.b-=10},function(){Ec(this,hd(this,jd(this)));this.b-=16},function(){Ec(this,N(this)-1);this.b-=5},function(){this.ia=ed(this,this.ia);this.b-=5},function(){this.ia=fd(this,this.ia);this.b-=5},function(){this.ia=O(this);this.b-=7},function(){this.K=~this.K&255;this.b-=4},md,function(){this.ja=jd(this)&65535;this.b-=
!!(this.G&256),c=!!cd(this);9<(a&15)||c?(a+=6,c=!0):c=!1;160<=a||b?(a+=96,b=!0):b=!1;this.G=this.L=this.O=a&255;this.G=b?this.G|256:this.G&-257;this.B=c?~this.L&16|this.B&-17:this.L&16|this.B&-17;this.b-=4},ld,function(){var a;Dc(this,a=Cc(this)+Cc(this));this.G=this.G&255|a>>8&256;this.b-=10},function(){Dc(this,gd(this,id(this)));this.b-=16},function(){Dc(this,Cc(this)-1);this.b-=5},function(){this.ia=dd(this,this.ia);this.b-=5},function(){this.ia=ed(this,this.ia);this.b-=5},function(){this.ia=hd(this); 10},function(){id(this,jd(this),this.K);this.b-=13},function(){this.ja=this.ja+1&65535;this.b-=5},function(){var a=N(this);id(this,a,ed(this,gd(this,a)));this.b-=10},function(){var a=N(this);id(this,a,fd(this,gd(this,a)));this.b-=10},function(){id(this,N(this),O(this));this.b-=10},function(){this.D|=256;this.b-=4},md,function(){var a;this.ja=(a=N(this)+this.ja)&65535;this.D=this.D&255|a>>8&256;this.b-=10},function(){this.K=gd(this,jd(this));this.b-=13},function(){this.ja=this.ja-1&65535;this.b-=5},
this.b-=7},function(){this.O=~this.O&255;this.b-=4},O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O,O]; function(){this.K=ed(this,this.K);this.b-=5},function(){this.K=fd(this,this.K);this.b-=5},function(){this.K=O(this);this.b-=7},function(){this.D=this.D&256?this.D&-257:this.D|256;this.b-=4},Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,
function md(a){x.call(this,"ROM",a,md);this.s=null;this.F=a.addr;this.w=a.size;this.B=a.alias;this.D=a.file;this.I=ea(this.D);if(this.D){a=this.D;var b=fa(this.I);"json"!=b&&"hex"!=b&&(a=xa()+"/api/v1/dump?file="+this.D+"&format=bytes&decimal=true");var c=this;u(a,null,!0,function(a,b,f){nd(c,a,b,f)})}}z(md);md.prototype.Ma=function(a,b,c,d){this.A=b;this.b=c;this.C=d;od(this)}; Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q,Q];function nd(a){x.call(this,"ROM",a,nd);this.s=null;this.G=a.addr;this.w=a.size;this.B=a.alias;this.F=a.file;this.I=ga(this.F);if(this.F){a=this.F;var b=ha(this.I);"json"!=b&&"hex"!=b&&(a=za()+"/api/v1/dump?file="+this.F+"&format=bytes&decimal=true");var c=this;u(a,null,!0,function(a,b,f){od(c,a,b,f)})}}z(nd);nd.prototype.La=function(a,b,c,d){this.A=b;this.b=c;this.C=d;pd(this)};
md.prototype.sa=function(){if(this.qa){if(this.C){var a=this.C,b=this.id,c=this.F,d=this.w,e=this.qa,f=[],k;for(k in e){var h=e[k];"number"==typeof h&&(e[k]=h={o:h});var l=h.o,m=h.a;if(void 0!==l){var p=f,l=[l>>>0,k],r=pa(p,l,a.xb);0>r&&p.splice(-(r+1),0,l)}m&&(h.a=m.replace(/''/g,'"'))}a.I.push({cc:b,u:c,Yb:d,qa:e,yb:f})}delete this.qa}return!0};md.prototype.ra=function(){return!0}; nd.prototype.ta=function(){if(this.ra){if(this.C){var a=this.C,b=this.id,c=this.G,d=this.w,e=this.ra,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var l=g.o,m=g.a;if(void 0!==l){var p=f,l=[l>>>0,h],r=ra(p,l,a.xb);0>r&&p.splice(-(r+1),0,l)}m&&(g.a=m.replace(/''/g,'"'))}a.I.push({cc:b,u:c,Yb:d,ra:e,yb:f})}delete this.ra}return!0};nd.prototype.sa=function(){return!0};
function nd(a,b,c,d){if(d)a.fa("Unable to load system ROM (error "+d+": "+b+")");else{ab(a.Ab,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,k=e.data;if(f)a.s=f;else if(k)for(a.s=Array(4*k.length),d=c=0;c<k.length;c++)a.s[d++]=k[c]&255,a.s[d++]=k[c]>>8&255,a.s[d++]=k[c]>>16&255,a.s[d++]=k[c]>>24&255;else a.s=e;a.qa=e.symbols;if(!a.s.length){v("Empty ROM: "+b);return}if(1==a.s.length){v(a.s[0]);return}}catch(h){a.fa("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm, function od(a,b,c,d){if(d)a.fa("Unable to load system ROM (error "+d+": "+b+")");else{cb(a.Ab,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.s=f;else if(h)for(a.s=Array(4*h.length),d=c=0;c<h.length;c++)a.s[d++]=h[c]&255,a.s[d++]=h[c]>>8&255,a.s[d++]=h[c]>>16&255,a.s[d++]=h[c]>>24&255;else a.s=e;a.ra=e.symbols;if(!a.s.length){v("Empty ROM: "+b);return}if(1==a.s.length){v(a.s[0]);return}}catch(g){a.fa("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.s=Array(b.length),e=0;e<b.length;e++)a.s[e]=da(b[e],16);od(a)}} " ").replace(/ +$/,"").split(" "),a.s=Array(b.length),e=0;e<b.length;e++)a.s[e]=fa(b[e],16);pd(a)}}
function od(a){if(!rb(a))if(!a.D)G(a);else if(a.s&&a.A){if(a.s.length!=a.w)sb(a,"ROM size (0x"+n(a.s.length)+") does not match specified size ("+("0x"+n(a.w))+")");else{var b;b=a.F;if(Ab(a.A,b,a.w,Kb)){for(var c=0;c<a.s.length;c++){var d=a.A,e=b+c;d.A[(e&d.w)>>>d.P].Va(e&d.s,a.s[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.B?b.push(a.B):null!=a.B&&a.B.length&&(b=a.B);for(c=0;c<b.length;c++){for(var f=a,d=b[c],e=f.A,k=f.w,h=[],l=f.F>>>e.P;0<k&&l<e.A.length;)h.push(e.A[l++]),k-=e.aa;e=f.A; function pd(a){if(!tb(a))if(!a.F)G(a);else if(a.s&&a.A){if(a.s.length!=a.w)ub(a,"ROM size (0x"+n(a.s.length)+") does not match specified size ("+("0x"+n(a.w))+")");else{var b;b=a.G;if(Cb(a.A,b,a.w,Mb)){for(var c=0;c<a.s.length;c++){var d=a.A,e=b+c;d.A[(e&d.w)>>>d.R].Va(e&d.s,a.s[c]&255,e)}b=!0}else b=!1;if(b){b=[];"number"==typeof a.B?b.push(a.B):null!=a.B&&a.B.length&&(b=a.B);for(c=0;c<b.length;c++){for(var f=a,d=b[c],e=f.A,h=f.w,g=[],l=f.G>>>e.R;0<h&&l<e.A.length;)g.push(e.A[l++]),h-=e.Z;e=f.A;
f=f.w;k=0;for(d>>>=e.P;0<f&&d<e.A.length;){l=h[k++];if(!l)break;e.A[d++]=l;f-=e.aa}}delete a.s}}G(a)}}Qa(function(){for(var a=F(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new md(d);cb(d,c)}});function pd(a){x.call(this,"RAM",a,pd);this.B=a.addr;this.w=a.size;this.s=!1}z(pd);g=pd.prototype;g.Ma=function(a,b,c,d){this.A=b;this.b=c;this.C=d;G(this)};g.sa=function(a,b){b||this.reset();return!0};g.ra=function(a){return a?this.save():!0}; f=f.w;h=0;for(d>>>=e.R;0<f&&d<e.A.length;){l=g[h++];if(!l)break;e.A[d++]=l;f-=e.Z}}delete a.s}}G(a)}}Sa(function(){for(var a=F(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new nd(d);eb(d,c)}});function qd(a){x.call(this,"RAM",a,qd);this.B=a.addr;this.w=a.size;this.s=!1}z(qd);k=qd.prototype;k.La=function(a,b,c,d){this.A=b;this.b=c;this.C=d;G(this)};k.ta=function(a,b){b||this.reset();return!0};k.sa=function(a){return a?this.save():!0};
g.reset=function(){!this.s&&this.w&&Ab(this.A,this.B,this.w,1)&&(this.s=!0,this.status(Math.floor(this.w/1024)+"Kb allocated"));this.s||v("No RAM allocated")};g.save=function(){return null};g.restore=function(){return!0};Qa(function(){for(var a=F(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new pd(d);cb(d,c)}});function qd(a){x.call(this,"Keyboard",a,qd,65536);G(this)}z(qd); k.reset=function(){!this.s&&this.w&&Cb(this.A,this.B,this.w,1)&&(this.s=!0,this.status(Math.floor(this.w/1024)+"Kb allocated"));this.s||v("No RAM allocated")};k.save=function(){return null};k.restore=function(){return!0};Sa(function(){for(var a=F(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new qd(d);eb(d,c)}});function rd(a){x.call(this,"Keyboard",a,rd,65536);G(this)}z(rd);
Qa(function(){for(var a=F(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new qd(d);cb(d,c)}});function rd(a){x.call(this,"Video",a,rd,262144);G(this)}z(rd); Sa(function(){for(var a=F(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new rd(d);eb(d,c)}});function sd(a){x.call(this,"Video",a,sd,262144);G(this)}z(sd);
Qa(function(){for(var a=F(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=E(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<=ya().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height= Sa(function(){for(var a=F(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=E(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<=Aa().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||Va.aspect);f&&.3<=f&&3.33>=f&&(Pa("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");Ea("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);e.getContext("2d");d=new rd(d);cb(d,c)}}); (a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Xa.aspect);f&&.3<=f&&3.33>=f&&(Ra("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");Ga("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);e.getContext("2d");d=new sd(d);eb(d,c)}});
function sd(a){x.call(this,"Debugger",a,sd);this.V=this.Ha=this.K=0;this.N=P();this.zb=P();this.D=-1;this.B=[];this.ma=!1;this.ea=P();this.I=[];this.ja={};this.w=this.S=this.F=[];td(this);this.va=0;ud(this);this.Wa=[];vd(this,a.messages);this.Ya=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return mc(b,a)}):void 0===global.$&&(global.$=function(a){return mc(b,a)})}z(sd); function td(a){x.call(this,"Debugger",a,td);this.V=this.Ga=this.L=0;this.O=R();this.zb=R();this.F=-1;this.B=[];this.na=!1;this.da=R();this.I=[];this.ka={};this.w=this.S=this.G=[];ud(this);this.wa=0;vd(this);this.Wa=[];wd(this,a.messages);this.Ya=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return oc(b,a)}):void 0===global.$&&(global.$=function(a){return oc(b,a)})}z(td);
var wd={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine","t [#]":"trace","u [#]":"unassemble",x:"execution options",v:"print version","var":"assign variable"},xd="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(" "), var xd={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine","t [#]":"trace","u [#]":"unassemble",x:"execution options",v:"print version","var":"assign variable"},yd="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(" "),
yd="B C D E H L M A F BC DE HL PSW SP PC".split(" "),zd=[[45],[42,2323,32],[71,2387],[29,2323],[28,17],[22,17],[44,17,32],[63],[45,32768],[21,6419],[40,2387],[23,2323],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2579,32],[71,2643],[29,2579],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,6675],[40,2643],[23,2579],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2835,32],[68,99],[29,2835],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,6931],[41,99],[23,2835],[28,1297],[22,1297],[44, zd="B C D E H L M A F BC DE HL PSW SP PC".split(" "),Ad=[[45],[42,2323,32],[71,2387],[29,2323],[28,17],[22,17],[44,17,32],[63],[45,32768],[21,6419],[40,2387],[23,2323],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2579,32],[71,2643],[29,2579],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,6675],[40,2643],[23,2579],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2835,32],[68,99],[29,2835],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,6931],[41,99],[23,2835],[28,1297],[22,1297],[44,
1297,32],[16],[45,32768],[42,3347,32],[70,97],[29,3347],[28,1553],[22,1553],[44,1553,32],[72],[45,32768],[21,7443],[39,97],[23,3347],[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,1553],[43,17,1809],[43,273,17],[43,273,273],[43,273,529],[43,273,785],[43,273,1041],[43,273,1297],[43,273,1553],[43,273,1809],[43,529,17],[43,529,273],[43,529,529],[43,529,785],[43,529,1041],[43,529,1297],[43,529,1553],[43,529,1809],[43,785,17],[43,785, 1297,32],[16],[45,32768],[42,3347,32],[70,97],[29,3347],[28,1553],[22,1553],[44,1553,32],[72],[45,32768],[21,7443],[39,97],[23,3347],[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,1553],[43,17,1809],[43,273,17],[43,273,273],[43,273,529],[43,273,785],[43,273,1041],[43,273,1297],[43,273,1553],[43,273,1809],[43,529,17],[43,529,273],[43,529,529],[43,529,785],[43,529,1041],[43,529,1297],[43,529,1553],[43,529,1809],[43,785,17],[43,785,
273],[43,785,529],[43,785,785],[43,785,1041],[43,785,1297],[43,785,1553],[43,785,1809],[43,1041,17],[43,1041,273],[43,1041,529],[43,1041,785],[43,1041,1041],[43,1041,1297],[43,1041,1553],[43,1041,1809],[43,1297,17],[43,1297,273],[43,1297,529],[43,1297,785],[43,1297,1041],[43,1297,1297],[43,1297,1553],[43,1297,1809],[43,1553,17],[43,1553,273],[43,1553,529],[43,1553,785],[43,1553,1041],[43,1553,1297],[43,1553,1553],[43,1553,1809],[43,1809,17],[43,1809,273],[43,1809,529],[43,1809,785],[43,1809,1041], 273],[43,785,529],[43,785,785],[43,785,1041],[43,785,1297],[43,785,1553],[43,785,1809],[43,1041,17],[43,1041,273],[43,1041,529],[43,1041,785],[43,1041,1041],[43,1041,1297],[43,1041,1553],[43,1041,1809],[43,1297,17],[43,1297,273],[43,1297,529],[43,1297,785],[43,1297,1041],[43,1297,1297],[43,1297,1553],[43,1297,1809],[43,1553,17],[43,1553,273],[43,1553,529],[43,1553,785],[43,1553,1041],[43,1553,1297],[43,1553,1553],[43,1553,1809],[43,1809,17],[43,1809,273],[43,1809,529],[43,1809,785],[43,1809,1041],
[43,1809,1297],[43,1809,1553],[43,1809,1809],[3,17],[3,273],[3,529],[3,785],[3,1041],[3,1297],[3,1553],[3,1809],[2,17],[2,273],[2,529],[2,785],[2,1041],[2,1297],[2,1553],[2,1809],[73,17],[73,273],[73,529],[73,785],[73,1041],[73,1297],[73,1553],[73,1809],[66,17],[66,273],[66,529],[66,785],[66,1041],[66,1297],[66,1553],[66,1809],[5,17],[5,273],[5,529],[5,785],[5,1041],[5,1297],[5,1553],[5,1809],[76,17],[76,273],[76,529],[76,785],[76,1041],[76,1297],[76,1553],[76,1809],[46,17],[46,273],[46,529],[46, [43,1809,1297],[43,1809,1553],[43,1809,1809],[3,17],[3,273],[3,529],[3,785],[3,1041],[3,1297],[3,1553],[3,1809],[2,17],[2,273],[2,529],[2,785],[2,1041],[2,1297],[2,1553],[2,1809],[73,17],[73,273],[73,529],[73,785],[73,1041],[73,1297],[73,1553],[73,1809],[66,17],[66,273],[66,529],[66,785],[66,1041],[66,1297],[66,1553],[66,1809],[5,17],[5,273],[5,529],[5,785],[5,1041],[5,1297],[5,1553],[5,1809],[76,17],[76,273],[76,529],[76,785],[76,1041],[76,1297],[76,1553],[76,1809],[46,17],[46,273],[46,529],[46,
785],[46,1041],[46,1297],[46,1553],[46,1809],[18,17],[18,273],[18,529],[18,785],[18,1041],[18,1297],[18,1553],[18,1809],[58],[50,2323],[34,35],[30,35],[11,35],[51,2323],[4,33],[65],[62],[54],[38,35],[30,32803],[15,35],[7,35],[1,33],[65],[57],[50,2579],[33,35],[48,33],[10,35],[51,2579],[74,33],[65],[55],[54,32768],[31,35],[27,33],[8,35],[7,32803],[67,33],[65],[61],[50,2835],[37,35],[78],[14,35],[51,2835],[6,33],[65],[60],[49],[36,35],[75],[13,35],[7,32803],[77,33],[65],[59],[50,3091],[35,35],[24], 785],[46,1041],[46,1297],[46,1553],[46,1809],[18,17],[18,273],[18,529],[18,785],[18,1041],[18,1297],[18,1553],[18,1809],[58],[50,2323],[34,35],[30,35],[11,35],[51,2323],[4,33],[65],[62],[54],[38,35],[30,32803],[15,35],[7,35],[1,33],[65],[57],[50,2579],[33,35],[48,33],[10,35],[51,2579],[74,33],[65],[55],[54,32768],[31,35],[27,33],[8,35],[7,32803],[67,33],[65],[61],[50,2835],[37,35],[78],[14,35],[51,2835],[6,33],[65],[60],[49],[36,35],[75],[13,35],[7,32803],[77,33],[65],[59],[50,3091],[35,35],[24],
[12,35],[51,3091],[47,33],[65],[56],[69],[32,35],[25],[9,35],[7,32803],[19,33],[65]],Q={cpu:1,bus:64,mem:128,port:256,timer:2048,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:536870912,warn:1073741824,halt:-2147483648};g=sd.prototype; [12,35],[51,3091],[47,33],[65],[56],[69],[32,35],[25],[9,35],[7,32803],[19,33],[65]],U={cpu:1,bus:64,mem:128,port:256,timer:2048,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:536870912,warn:1073741824,halt:-2147483648};k=td.prototype;
g.Ma=function(a,b,c,d){this.A=b;this.b=c;this.s=a;(a=jc(a,"messages"))&&vd(this,a);this.jb=zd;Ad(this,function(a){a:{var b=d.b.Y,c=a[0],h=a=0,l=b.length;if(c){a=T(U(d,c));if(-1===a){d.g("invalid address: "+c);break a}h=a>>>d.b.P;l=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,m=0;l--;){var p=b[h];p.type==c?m++||d.g("..."):(c=p.type,m=ac[c],p&&d.g(n(p.id)+" %"+n(h<<d.b.P)+" %%"+n(p.u)+" "+q(p.hb)+" "+q(p.size)+ k.La=function(a,b,c,d){this.A=b;this.b=c;this.s=a;(a=lc(a,"messages"))&&wd(this,a);this.jb=Ad;Bd(this,function(a){a:{var b=d.b.ea,c=a[0],g=a=0,l=b.length;if(c){a=V(W(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.b.R;l=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,m=0;l--;){var p=b[g];p.type==c?m++||d.g("..."):(c=p.type,m=cc[c],p&&d.g(n(p.id)+" %"+n(g<<d.b.R)+" %%"+n(p.u)+" "+q(p.hb)+" "+q(p.size)+
" "+m),c!=Jb&&(c=-1),m=0);a+=d.b.aa;h++}}});G(this)}; " "+m),c!=Lb&&(c=-1),m=0);a+=d.b.Z;g++}}});G(this)};
g.ka=function(a,b,c){var d=this;switch(b){case "debugInput":return this.pa=this.H[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",mc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.D<d.B.length-1&&(b=d.B[++d.D]):40==a.keyCode&&(0<d.D?b=d.B[--d.D]:(b="",d.D=-1)),null!=b){var k=b.length;c.value=b;c.setSelectionRange(k,k)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.H[b]=c,Ga(c,function(){if(d.pa){var a=d.pa.value;d.pa.value= k.la=function(a,b,c){var d=this;switch(b){case "debugInput":return this.qa=this.H[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",oc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.F<d.B.length-1&&(b=d.B[++d.F]):40==a.keyCode&&(0<d.F?b=d.B[--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.H[b]=c,Ia(c,function(){if(d.qa){var a=d.qa.value;d.qa.value=
"";mc(d,a,!0);return!0}return!1}),!0;case "step":return this.H[b]=c,Ga(c,function(a){var b=!1;gb(d,!0)||(fb(d,!0),b=d.Ua(a?1:0),fb(d,!1));return b}),!0}return!1};g.gb=function(){this.pa&&this.pa.focus()};function T(a){a=a&&a.u;null==a&&(a=-1);return a}g.ta=function(a,b){var c=255,d=T(a);-1!==d&&(c=Cb(this.A,d),b&&Bd(a,b));return c};g.ib=function(a,b){var c=65535,d=T(a);if(-1!==d){var c=this.A,e=d&c.s,f=(d&c.w)>>>c.P,c=e!=c.s?c.A[f].tb(e,d):c.A[f++].fb(e,d)|c.A[f&c.M].fb(0,d+1)<<8;b&&Bd(a,b)}return c}; "";oc(d,a,!0);return!0}return!1}),!0;case "step":return this.H[b]=c,Ia(c,function(a){var b=!1;ib(d,!0)||(hb(d,!0),b=d.Ta(a?1:0),hb(d,!1));return b}),!0}return!1};k.gb=function(){this.qa&&this.qa.focus()};function V(a){a=a&&a.u;null==a&&(a=-1);return a}k.ua=function(a,b){var c=255,d=V(a);-1!==d&&(c=Eb(this.A,d),b&&Cd(a,b));return c};k.ib=function(a,b){var c=65535,d=V(a);if(-1!==d){var c=this.A,e=d&c.s,f=(d&c.w)>>>c.R,c=e!=c.s?c.A[f].tb(e,d):c.A[f++].fb(e,d)|c.A[f&c.N].fb(0,d+1)<<8;b&&Cd(a,b)}return c};
g.vb=function(a,b,c){var d=T(a);if(-1!==d){var e=this.A;e.A[(d&e.w)>>>e.P].Va(d&e.s,b&255,d);c&&Bd(a,c);I(this.b,!0)}};g.Qb=function(a,b,c){var d=T(a);if(-1!==d){var e=this.A,f=d&e.s,k=(d&e.w)>>>e.P;f!=e.s?e.A[k].ub(f,b&65535,d):(e.A[k++].Va(f,b&255,d),e.A[k&e.M].Va(0,b>>8&255,d+1));c&&Bd(a,c);I(this.b,!0)}};function P(a){return{u:a||0,oa:!1}}function Cd(a){return[a.u,a.oa]}function Dd(a){return{u:a[0],oa:a[1]}} k.vb=function(a,b,c){var d=V(a);if(-1!==d){var e=this.A;e.A[(d&e.w)>>>e.R].Va(d&e.s,b&255,d);c&&Cd(a,c);I(this.b,!0)}};k.Qb=function(a,b,c){var d=V(a);if(-1!==d){var e=this.A,f=d&e.s,h=(d&e.w)>>>e.R;f!=e.s?e.A[h].ub(f,b&65535,d):(e.A[h++].Va(f,b&255,d),e.A[h&e.N].Va(0,b>>8&255,d+1));c&&Cd(a,c);I(this.b,!0)}};function R(a){return{u:a||0,pa:!1}}function Dd(a){return[a.u,a.pa]}function Ed(a){return{u:a[0],pa:a[1]}}
function U(a,b,c){var d;c=(c?a.N:a.zb).u;if(void 0!==b){d=b=Ed(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.I.length;c++){var f=a.I[c].qa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=P(d));break}}if(d=e)return d;c=Fd(a,b,void 0)}null!=c&&(d=P(c));return d}function Gd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Rb=Hd(a,b.Nb=c[2]))}function Bd(a,b){null!=a.u&&(a.u+=b||1)} function W(a,b,c){var d;c=(c?a.O:a.zb).u;if(void 0!==b){d=b=Fd(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.I.length;c++){var f=a.I[c].ra[d];if(void 0!==f){d=f.o;void 0!==d&&(e=R(d));break}}if(d=e)return d;c=Gd(a,b,void 0)}null!=c&&(d=R(c));return d}function Hd(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Rb=Id(a,b.Nb=c[2]))}function Cd(a,b){null!=a.u&&(a.u+=b||1)}
function Id(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.ta(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function vd(a,b){a.C=a;a.Z=a.Sb=1073741824;a.wa=null;var c=Hd(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in Q)0<=wa(c,d)&&(a.Z|=Q[d],a.g(d+" messages enabled"))}function Ad(a,b){for(var c in Q)if(64==Q[c]){a.Wa[c]=b;break}} function Jd(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.ua(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function wd(a,b){a.C=a;a.Y=a.Sb=1073741824;a.xa=null;var c=Id(a,b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(c.length)for(var d in U)0<=ya(c,d)&&(a.Y|=U[d],a.g(d+" messages enabled"))}function Bd(a,b){for(var c in U)if(64==U[c]){a.Wa[c]=b;break}}
function Jd(a,b){var c;a=a.toUpperCase();null==b?c=wa(yd,a):(c=wa(yd,a.substr(b,3)),0>c&&(c=wa(yd,a.substr(b,2))));return c}function Kd(a,b){var c=0,d=Ld(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 8:c=2;break;case 9:case 10:case 11:case 12:case 13:case 14:c=4}return c?n(d,c):"??"} function Kd(a,b){var c;a=a.toUpperCase();null==b?c=ya(zd,a):(c=ya(zd,a.substr(b,3)),0>c&&(c=ya(zd,a.substr(b,2))));return c}function Ld(a,b){var c=0,d=Md(a,b);if(void 0!==d)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 8:c=2;break;case 9:case 10:case 11:case 12:case 13:case 14:c=4}return c?n(d,c):"??"}
function Ld(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.O;break;case 8:c=xc(d)&255;break;case 0:c=d.ba;break;case 1:c=d.ga;break;case 9:c=d.ba<<8|d.ga;break;case 2:c=d.ca;break;case 3:c=d.ha;break;case 10:c=d.ca<<8|d.ha;break;case 4:c=d.da;break;case 5:c=d.ia;break;case 11:c=d.da<<8|d.ia;break;case 12:c=d.O<<8|xc(d)&255;break;case 13:c=d.Ea;break;case 14:c=d.R}}return c} function Md(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.K;break;case 8:c=zc(d)&255;break;case 0:c=d.aa;break;case 1:c=d.ga;break;case 9:c=d.aa<<8|d.ga;break;case 2:c=d.ba;break;case 3:c=d.ha;break;case 10:c=d.ba<<8|d.ha;break;case 4:c=d.ca;break;case 5:c=d.ia;break;case 11:c=d.ca<<8|d.ia;break;case 12:c=d.K<<8|zc(d)&255;break;case 13:c=d.ja;break;case 14:c=d.P}}return c}
function Md(a,b){b=Ed(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Jd(b,c+1),0<=e&&(b=b.substr(0,c)+Kd(a,e)+b.substr(c+1+yd[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=da(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=U(a,e))?(d=e+' "'+Id(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=U(a,e))?(Bd(d),d=e+' "'+ function Nd(a,b){b=Fd(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=Kd(b,c+1),0<=e&&(b=b.substr(0,c)+Ld(a,e)+b.substr(c+1+zd[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=fa(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=W(a,e))?(d=e+' "'+Jd(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=W(a,e))?(Cd(d),d=e+' "'+
Id(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}g.message=function(a,b){b&&(a+=" at "+n(P(this.b.R).u,4));if(!this.wa||a!=this.wa)if(this.wa=a,this.Z&-2147483648&&(this.U(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.Ra=0;c.F-=c.b;c.b=0;I(c)}};function Nd(a,b,c,d){a.message(b.Xa+"."+(null!=d?"outPort":"inPort")+"("+q(c)+",unknown"+(null!=d?",0x"+n(d,2):"")+")")} Jd(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}k.message=function(a,b){b&&(a+=" at "+n(R(this.b.P).u,4));if(!this.xa||a!=this.xa)if(this.xa=a,this.Y&-2147483648&&(this.U(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.Qa=0;c.F-=c.b;c.b=0;I(c)}};function Od(a,b,c,d){a.message(b.Xa+"."+(null!=d?"outPort":"inPort")+"("+q(c)+",unknown"+(null!=d?",0x"+n(d,2):"")+")")}
function ud(a){var b;if(jd(a)){if(!a.M||!a.M.length){a.M=Array(1E3);for(b=0;b<a.M.length;b++)a.M[b]=P();a.na=0;a.g("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.M&&a.M.length&&a.g("instruction history buffer freed"),a.na=0,a.M=[],a.J=[]}g.Fa=function(a){if(!Od(this))return!1;this.b.Fa(a);return!0}; function vd(a){var b;if(kd(a)){if(!a.N||!a.N.length){a.N=Array(1E3);for(b=0;b<a.N.length;b++)a.N[b]=R();a.oa=0;a.g("instruction history buffer allocated")}if(!a.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.N&&a.N.length&&a.g("instruction history buffer freed"),a.oa=0,a.N=[],a.J=[]}k.Fa=function(a){if(!Pd(this))return!1;this.b.Fa(a);return!0};
g.Ua=function(a,b,c){if(!Od(this))return!1;this.K=0;a||jd(this)&&kd(this,this.b.R,0);try{var d=this.b.Ua(a);0<d&&(this.K+=d,rc(this.b,d,!0),oc(this.b,d),this.V++)}catch(e){"number"!=typeof e&&(this.K=0,sb(this.b,e.stack||e.message))}!1!==c&&I(this.b);this.la(b||!1);return 0<this.K};g.U=function(a){this.b&&this.b.U(a)};g.la=function(a){void 0===a&&(a=!0);this.N=P(this.b.R);a&&1!=this.T?Pd(this):Qd(this)}; k.Ta=function(a,b,c){if(!Pd(this))return!1;this.L=0;a||kd(this)&&ld(this,this.b.P,0);try{var d=this.b.Ta(a);0<d&&(this.L+=d,tc(this.b,d,!0),qc(this.b,d),this.V++)}catch(e){"number"!=typeof e&&(this.L=0,ub(this.b,e.stack||e.message))}!1!==c&&I(this.b);this.ma(b||!1);return 0<this.L};k.U=function(a){this.b&&this.b.U(a)};k.ma=function(a){void 0===a&&(a=!0);this.O=R(this.b.P);a&&1!=this.T?Qd(this):Rd(this)};
function Od(a){var b;if(b=a.b&&rb(a.b))b=a.b,b.j.W?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!gb(a.b)?(a=a.b,a.j.Ka?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}g.sa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};g.ra=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};g.reset=function(a){ud(this);this.V=this.Ha=0;this.wa=null;this.K=0;this.N=P(this.b.R);this.j.X=!1;Rd(this);a||this.la()}; function Pd(a){var b;if(b=a.b&&tb(a.b))b=a.b,b.j.W?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!ib(a.b)?(a=a.b,a.j.Ja?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}k.ta=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};k.sa=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};k.reset=function(a){vd(this);this.V=this.Ga=0;this.xa=null;this.L=0;this.O=R(this.b.P);this.j.X=!1;Sd(this);a||this.ma()};
g.save=function(){var a=new J(this);M(a,0,Cd(this.N));M(a,1,Cd(this.ea));M(a,2,[this.B,this.ma,this.Z]);M(a,3,this.I);return a.data()};g.restore=function(a){var b=0;void 0!==a[2]&&(this.N=Dd(a[b++]),this.ea=Dd(a[b++]),this.B=a[b][0],"string"==typeof this.B&&(this.B=[this.B]),this.ma=a[b][1],this.Z|=a[b][2]);a[3]&&(this.I=a[3]);return!0};g.start=function(a,b){this.T||this.g("running");this.j.X=!0;this.Tb=a;this.Wb=b}; k.save=function(){var a=new J(this);M(a,0,Dd(this.O));M(a,1,Dd(this.da));M(a,2,[this.B,this.na,this.Y]);M(a,3,this.I);return a.data()};k.restore=function(a){var b=0;void 0!==a[2]&&(this.O=Ed(a[b++]),this.da=Ed(a[b++]),this.B=a[b][0],"string"==typeof this.B&&(this.B=[this.B]),this.na=a[b][1],this.Y|=a[b][2]);a[3]&&(this.I=a[3]);return!0};k.start=function(a,b){this.T||this.g("running");this.j.X=!0;this.Tb=a;this.Wb=b};
g.stop=function(a,b){if(this.j.X){this.j.X=!1;this.K=b-this.Wb;if(!this.T){var c="stopped";if(this.K){var d=a-this.Tb,e=0<d?Math.round(1E3*this.K/d):0,c=c+" (";jd(this)&&(c+=this.V+" opcodes, ",this.Ha-=this.V,this.V=0);c+=this.K+" cycles, "+d+" ms, "+e+" hz)"}else eb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.la(!0);this.gb();Rd(this,this.b.R)}};function jd(a){return 1<a.w.length||!!a.va} k.stop=function(a,b){if(this.j.X){this.j.X=!1;this.L=b-this.Wb;if(!this.T){var c="stopped";if(this.L){var d=a-this.Tb,e=0<d?Math.round(1E3*this.L/d):0,c=c+" (";kd(this)&&(c+=this.V+" opcodes, ",this.Ga-=this.V,this.V=0);c+=this.L+" cycles, "+d+" ms, "+e+" hz)"}else gb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.ma(!0);this.gb();Sd(this,this.b.P)}};function kd(a){return 1<a.w.length||!!a.wa}
function kd(a,b,c){var d=a.b;if(0<c&&(a.va&&!--a.va||ec(a,b,1,a.w)))return!0;0<=c&&a.J.length&&(a.V++,b=Cb(a.A,b),null!=b&&(a.J[b][1]++,b=a.M[a.na],b.u=d.R,b.oa=!1,++a.na==a.M.length&&(a.na=0)));return!1}function Sd(a,b,c){a.g("break on input from port "+q(b)+": "+n(c));a.U(!0)}function Td(a,b,c){a.g("break on output to port "+q(b)+": "+n(c));a.U(!0)} function ld(a,b,c){var d=a.b;if(0<c&&(a.wa&&!--a.wa||gc(a,b,1,a.w)))return!0;0<=c&&a.J.length&&(a.V++,b=Eb(a.A,b),null!=b&&(a.J[b][1]++,b=a.N[a.oa],b.u=d.P,b.pa=!1,++a.oa==a.N.length&&(a.oa=0)));return!1}function Td(a,b,c){a.g("break on input from port "+q(b)+": "+n(c));a.U(!0)}function Ud(a,b,c){a.g("break on output to port "+q(b)+": "+n(c));a.U(!0)}
function td(a){var b,c;a.w=["bp"];if(void 0!==a.S)for(b=1;b<a.S.length;b++){c=a.S[b];var d=a.b;fc(d.Y[T(c)>>>d.P],!1)}a.S=["br"];if(void 0!==a.F)for(b=1;b<a.F.length;b++)c=a.F[b],d=a.b,fc(d.Y[T(c)>>>d.P],!0);a.F=["bw"];a.Bb=0}g.xa=function(a,b,c){var d=!0;c||Ud(this,a,b,!1,!0);if(a!=this.w){var e=T(b);if(-1===e)this.g("invalid address: "+n(b.u,4)),d=!1;else{var f=this.b;f.Y[e>>>f.P].xa(e&f.D,a==this.F)}}d&&(a.push(b),c?b.oa=!0:(Vd(this,a,a.length-1,"set"),ud(this)));return d}; function ud(a){var b,c;a.w=["bp"];if(void 0!==a.S)for(b=1;b<a.S.length;b++){c=a.S[b];var d=a.b;hc(d.ea[V(c)>>>d.R],!1)}a.S=["br"];if(void 0!==a.G)for(b=1;b<a.G.length;b++)c=a.G[b],d=a.b,hc(d.ea[V(c)>>>d.R],!0);a.G=["bw"];a.Bb=0}k.ya=function(a,b,c){var d=!0;c||Vd(this,a,b,!1,!0);if(a!=this.w){var e=V(b);if(-1===e)this.g("invalid address: "+n(b.u,4)),d=!1;else{var f=this.b;f.ea[e>>>f.R].ya(e&f.G,a==this.G)}}d&&(a.push(b),c?b.pa=!0:(Wd(this,a,a.length-1,"set"),vd(this)));return d};
function Ud(a,b,c,d,e){var f=!1;c=T(c);for(var k=1;k<b.length;k++){var h=b[k];if(c==T(h)&&(!d||h.oa)){f=!0;h.oa||e||Vd(a,b,k,"cleared");b.splice(k,1);b!=a.w&&(d=a.b,fc(d.Y[c>>>d.P],b==a.F));h.oa||ud(a);break}}return f}function Wd(a,b){for(var c=1;c<b.length;c++)Vd(a,b,c);return b.length-1}function Vd(a,b,c,d){c=b[c];a.g(b[0]+" "+n(c.u,4)+(d?" "+d:c.Nb?' "'+c.Nb+'"':""))} function Vd(a,b,c,d,e){var f=!1;c=V(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==V(g)&&(!d||g.pa)){f=!0;g.pa||e||Wd(a,b,h,"cleared");b.splice(h,1);b!=a.w&&(d=a.b,hc(d.ea[c>>>d.R],b==a.G));g.pa||vd(a);break}}return f}function Xd(a,b){for(var c=1;c<b.length;c++)Wd(a,b,c);return b.length-1}function Wd(a,b,c,d){c=b[c];a.g(b[0]+" "+n(c.u,4)+(d?" "+d:c.Nb?' "'+c.Nb+'"':""))}
function Rd(a,b){if(void 0!==b)ec(a,b,1,a.w,!0),a.T=0;else for(var c=1;c<a.w.length;c++){var d=a.w[c];if(d.oa){if(!Ud(a,a.w,d,!0))break;c=0}}} function Sd(a,b){if(void 0!==b)gc(a,b,1,a.w,!0),a.T=0;else for(var c=1;c<a.w.length;c++){var d=a.w[c];if(d.pa){if(!Vd(a,a.w,d,!0))break;c=0}}}
function ec(a,b,c,d,e){var f=!1;if(!a.Bb++)for(var k=1;!f&&k<d.length;k++){var h=d[k];if(!e||h.oa)for(var l=T(h),m=0;m<c;m++)if(b+m==l){var p,f=!0;h.oa&&(Ud(a,d,h,!0),e=!0);if(p=h.Rb){for(var f=!1,r=0;r<p.length;r++)if(!Xd(a,p[r],!0)){if(p[r].indexOf("if")){f=!0;break}for(var t=r+1;t<p.length&&p[t].indexOf("else");t++)r++;if(t==p.length){f=!0;break}}a.b.j.X||(f=!0)}if(f){e||Vd(a,d,k,"hit");break}}}a.Bb--;return f} function gc(a,b,c,d,e){var f=!1;if(!a.Bb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.pa)for(var l=V(g),m=0;m<c;m++)if(b+m==l){var p,f=!0;g.pa&&(Vd(a,d,g,!0),e=!0);if(p=g.Rb){for(var f=!1,r=0;r<p.length;r++)if(!Yd(a,p[r],!0)){if(p[r].indexOf("if")){f=!0;break}for(var t=r+1;t<p.length&&p[t].indexOf("else");t++)r++;if(t==p.length){f=!0;break}}a.b.j.X||(f=!0)}if(f){e||Wd(a,d,h,"hit");break}}}a.Bb--;return f}
function Yd(a,b,c,d){for(var e=P(b.u),f=a.ta(b,1),k=a.jb[f],f="",h=null,l=xd[k[0]],m=k.length-1,p=1;p<=m;p++){var r="",t=k[p];if(void 0!==t){var K=t&15;if(0==K){if(null==h)continue;K=h}h=K;K=t&240;if(32==K){var r=a,K=b,B=" ";switch(t&15){case 1:t&12288&&(B=n(r.ta(K,1),2));break;case 2:B=n(r.ta(K,1)<<24>>24,4);break;case 3:B=n(r.ib(K,2),4);break;default:B="imm("+q(t)+")"}r=B}else 16==K&&(r=yd[(t&3840)>>8]);if(!r||!r.length){f="INVALID";break}0<f.length&&(f+=",");f+=r||"???"}}k="";h=n(e.u,4)+" ";if(-1!== function Zd(a,b,c,d){for(var e=R(b.u),f=a.ua(b,1),h=a.jb[f],f="",g=null,l=yd[h[0]],m=h.length-1,p=1;p<=m;p++){var r="",t=h[p];if(void 0!==t){var K=t&15;if(0==K){if(null==g)continue;K=g}g=K;K=t&240;if(32==K){var r=a,K=b,B=" ";switch(t&15){case 1:t&12288&&(B=n(r.ua(K,1),2));break;case 2:B=n(r.ua(K,1)<<24>>24,4);break;case 3:B=n(r.ib(K,2),4);break;default:B="imm("+q(t)+")"}r=B}else 16==K&&(r=zd[(t&3840)>>8]);if(!r||!r.length){f="INVALID";break}0<f.length&&(f+=",");f+=r||"???"}}h="";g=n(e.u,4)+" ";if(-1!==
e.u&&-1!==b.u){do if(k+=n(a.ta(e,1),2),null==e.u)break;while(e.u!=b.u)}h+=na(k,11);h+=na(l,7);f&&(h+=" "+f);c&&(h=na(h,40)+";"+c,h=a.b.j.Ja?h+("cycles="+pc(a.b).toString()+" cs="+n(a.b.i.Za)):h+(null!=d?"="+d.toString():""));return h}function Zd(a,b){var c;switch(b){case "I":c=a.b.Da&512;break;case "S":c=a.b.L&128?128:0;break;case "Z":c=a.b.G&255?0:64;break;case "A":c=cd(a.b);break;case "P":c=ub[a.b.L&255]?4:0;break;case "C":c=a.b.G&256?1:0;break;default:c=0}return b+(c?"1":"0")+" "} e.u&&-1!==b.u){do if(h+=n(a.ua(e,1),2),null==e.u)break;while(e.u!=b.u)}g+=la(h,11);g+=la(l,7);f&&(g+=" "+f);c&&(g=la(g,40)+";"+c,g=a.b.j.Ia?g+("cycles="+rc(a.b).toString()+" cs="+n(a.b.i.Za)):g+(null!=d?"="+d.toString():""));return g}function $d(a,b){var c;switch(b){case "I":c=a.b.Ea&512;break;case "S":c=a.b.M&128?128:0;break;case "Z":c=a.b.D&255?0:64;break;case "A":c=dd(a.b);break;case "P":c=wb[a.b.M&255]?4:0;break;case "C":c=a.b.D&256?1:0;break;default:c=0}return b+(c?"1":"0")+" "}
function V(a,b){return yd[b]+"="+Kd(a,b)+" "}var $d={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9}; function X(a,b){return zd[b]+"="+Ld(a,b)+" "}var ae={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function ae(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 be(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} 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 Fd(a,b,c){var d;if(b){b=Ed(a,b);for(var e=0,f=!1,k=b,h=[],l=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<m.length;){var p=m[e++],r=p.length,p=oa(p);if(!p){f=!0;break}p=be(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}h.push(p);if(e==m.length)break;var p=m[e++],t=p.length;l.length&&$d[p]<$d[l[l.length-1]]&&ae(h,l,1);l.push(p);b=b.substr(r+t)}ae(h,l)&&1==h.length||(f=!0);f?c&&a.g("error parsing '"+k+"' at character "+(k.length-b.length)):(d=h.pop(),c&&Ce(a,null, function Gd(a,b,c){var d;if(b){b=Fd(a,b);for(var e=0,f=!1,h=b,g=[],l=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<m.length;){var p=m[e++],r=p.length,p=qa(p);if(!p){f=!0;break}p=ce(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}g.push(p);if(e==m.length)break;var p=m[e++],t=p.length;l.length&&ae[p]<ae[l[l.length-1]]&&be(g,l,1);l.push(p);b=b.substr(r+t)}be(g,l)&&1==g.length||(f=!0);f?c&&a.g("error parsing '"+h+"' at character "+(h.length-b.length)):(d=g.pop(),c&&De(a,null,
d))}return d}function Ed(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Fd(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=U(a,c[1]),b=b.replace("["+c[1]+"]",d?n(a.ib(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.V-a.Ha}if(null==e)break;c=c.replace(d[0],e.toString())}return c} d))}return d}function Fd(a,b){for(var c;(c=b.match(/\{(.*?)}/))&&!(0<=c[1].indexOf("{"));){var d=Gd(a,c[1]);b=b.replace("{"+c[1]+"}",null!=d?n(d):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)d=W(a,c[1]),b=b.replace("["+c[1]+"]",d?n(a.ib(d,0),4):"undefined");for(c=b;d=c.match(/\$([a-z]+)/i);){var e=null;switch(d[1].toLowerCase()){case "ops":e=a.V-a.Ga}if(null==e)break;c=c.replace(d[0],e.toString())}return c}
function be(a,b,c,d){var e;void 0!==b?(e=Jd(b),0<=e?e=Ld(a,e):(e=a.ja[b],void 0===e&&(e=da(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e} function ce(a,b,c,d){var e;void 0!==b?(e=Kd(b),0<=e?e=Md(a,e):(e=a.ka[b],void 0===e&&(e=fa(b))),void 0!==e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
function Ce(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f,k="";if(!f||4<f)f=4;for(var h=0;h<f;h++){k&&(k=","+k);var l=d&255,m=8,p="";void 0===m?m=32:32<m&&(m=32);if(null==l||isNaN(l))for(;0<m--;)p="?"+p;else for(;0<m--;)p=(l&1?"1":"0")+p,l>>=1;k=p+"b"+k;d>>=8}d="0x"+n(c)+" "+c+". ("+k+")"}a.g((null!=b?b+": ":"")+d);return e}function De(a,b){if(b)return Ce(a,b,a.ja[b]);var c=0;for(b in a.ja)Ce(a,b,a.ja[b]),c++;return 0<c}sd.prototype.xb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0}; function De(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 l=d&255,m=8,p="";void 0===m?m=32:32<m&&(m=32);if(null==l||isNaN(l))for(;0<m--;)p="?"+p;else for(;0<m--;)p=(l&1?"1":"0")+p,l>>=1;h=p+"b"+h;d>>=8}d="0x"+n(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function Ee(a,b){if(b)return De(a,b,a.ka[b]);var c=0;for(b in a.ka)De(a,b,a.ka[b]),c++;return 0<c}td.prototype.xb=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Ee(a,b,c){var d=[],e=T(b)>>>0;for(b=0;b<a.I.length;b++){var f=a.I[b],k=f.u>>>0,h=f.Yb;if(e>=k&&e<k+h){e=pa(f.yb,[e-k],a.xb);0<=e?Fe(a,b,e,d):c&&(e=~e,Fe(a,b,e-1,d),Fe(a,b,e,d));break}}return d}function Fe(a,b,c,d){var e={},f=a.I[b].yb,k=0,h=null;0<=c&&c<f.length&&(k=f[c][0],h=f[c][1]);h&&(e=a.I[b].qa[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(k);d.push(e.a);d.push(e.c)} function Fe(a,b,c){var d=[],e=V(b)>>>0;for(b=0;b<a.I.length;b++){var f=a.I[b],h=f.u>>>0,g=f.Yb;if(e>=h&&e<h+g){e=ra(f.yb,[e-h],a.xb);0<=e?Ge(a,b,e,d):c&&(e=~e,Ge(a,b,e-1,d),Ge(a,b,e,d));break}}return d}function Ge(a,b,c,d){var e={},f=a.I[b].yb,h=0,g=null;0<=c&&c<f.length&&(h=f[c][0],g=f[c][1]);g&&(e=a.I[b].ra[g],g="."==g.charAt(0)?null:e.l||g);d.push(g);d.push(h);d.push(e.a);d.push(e.c)}
function Ge(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.J)if("clear"==b){for(c=0;c<a.J.length;c++)a.J[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.J.slice();e.sort(function(a,b){return b[1]-a[1]});for(c=0;c<e.length;c++){var f=e[c][0],k=e[c][1];k&&(a.g((xd[a.jb[f][0]]+" ").substr(0,5)+" ("+("0x"+n(f,2))+"): "+k+" times"),d++)}}d||a.g("no frequency data available")}} function He(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c,d=0;if(a.J)if("clear"==b){for(c=0;c<a.J.length;c++)a.J[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.J.slice();e.sort(function(a,b){return b[1]-a[1]});for(c=0;c<e.length;c++){var f=e[c][0],h=e[c][1];h&&(a.g((yd[a.jb[f][0]]+" ").substr(0,5)+" ("+("0x"+n(f,2))+"): "+h+" times"),d++)}}d||a.g("no frequency data available")}}
function He(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return De(a)||a.g("no variables"),!0;if(!c[2])return De(a,c[1]);if(!c[3])return delete a.ja[c[1]],!0;var d=Fd(a,c[3]);return void 0!==d?(a.ja[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1} function Ie(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ee(a)||a.g("no variables"),!0;if(!c[2])return Ee(a,c[1]);if(!c[3])return delete a.ka[c[1]],!0;var d=Gd(a,c[3]);return void 0!==d?(a.ka[c[1]]=d,!0):!1}a.g("invalid assignment:"+b);return!1}
function Ie(a,b,c){var d=null;if(b=U(a,b,!0)){var e=Ee(a,b,!0);if(e.length){var f,k;e[0]&&(k="",(f=b.u-e[1])&&(k=" + "+q(f)),f=e[0]+" ("+n(e[1],4)+")"+k,c&&a.g(f),d=f);4<e.length&&e[4]&&(k="",(f=e[5]-b.u)&&(k=" - "+q(f)),f=e[4]+" ("+n(e[5],4)+")"+k,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d} function Je(a,b,c){var d=null;if(b=W(a,b,!0)){var e=Fe(a,b,!0);if(e.length){var f,h;e[0]&&(h="",(f=b.u-e[1])&&(h=" + "+q(f)),f=e[0]+" ("+n(e[1],4)+")"+h,c&&a.g(f),d=f);4<e.length&&e[4]&&(h="",(f=e[5]-b.u)&&(h=" - "+q(f)),f=e[4]+" ("+n(e[5],4)+")"+h,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
function Pd(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{null==c&&(c=!0);if(null!=b&&1<b.length){var d=b[1],e=null,f=d.indexOf("=");if(0<f)e=d.substr(f+1),d=d.substr(0,f);else if(2<b.length)e=b[2];else{a.g("missing value for "+b[1]);return}var f=!1,k=Fd(a,e);if(void 0!==k){var f=!0,h=d.toUpperCase();"E"==h.charAt(0)&&(h=null);switch(h){case "A":a.b.O=k&255;break;case "B":a.b.ba=k&255;break;case "BC":a.b.ba=k<<8& function Qd(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{null==c&&(c=!0);if(null!=b&&1<b.length){var d=b[1],e=null,f=d.indexOf("=");if(0<f)e=d.substr(f+1),d=d.substr(0,f);else if(2<b.length)e=b[2];else{a.g("missing value for "+b[1]);return}var f=!1,h=Gd(a,e);if(void 0!==h){var f=!0,g=d.toUpperCase();"E"==g.charAt(0)&&(g=null);switch(g){case "A":a.b.K=h&255;break;case "B":a.b.aa=h&255;break;case "BC":a.b.aa=h<<8&
255;case "C":a.b.ga=k&255;break;case "D":a.b.ca=k&255;break;case "DE":a.b.ca=k<<8&255;case "E":a.b.ha=k&255;break;case "H":a.b.da=k&255;break;case "HL":a.b.da=k<<8&255;case "L":a.b.ia=k&255;break;case "SP":a.b.Ea=k&65535;break;case "PC":a.b.R=k&65535;a.N=P(a.b.R);break;case "PS":wc(a.b,k);break;case "C":k?(d=a.b,d.G|=256):(d=a.b,d.G&=255);break;case "P":k?(d=a.b,ub[d.L&255]||(d.L^=1)):(d=a.b,ub[d.L&255]&&(d.L^=1));break;case "A":k?(d=a.b,d.B=~d.L&16|d.B&-17):(d=a.b,d.B=d.L&16|d.B&-17);break;case "Z":k? 255;case "C":a.b.ga=h&255;break;case "D":a.b.ba=h&255;break;case "DE":a.b.ba=h<<8&255;case "E":a.b.ha=h&255;break;case "H":a.b.ca=h&255;break;case "HL":a.b.ca=h<<8&255;case "L":a.b.ia=h&255;break;case "SP":a.b.ja=h&65535;break;case "PC":a.b.P=h&65535;a.O=R(a.b.P);break;case "PS":yc(a.b,h);break;case "C":h?(d=a.b,d.D|=256):(d=a.b,d.D&=255);break;case "P":h?(d=a.b,wb[d.M&255]||(d.M^=1)):(d=a.b,wb[d.M&255]&&(d.M^=1));break;case "A":h?(d=a.b,d.B=~d.M&16|d.B&-17):(d=a.b,d.B=d.M&16|d.B&-17);break;case "Z":h?
(d=a.b,d.G&=-256):(d=a.b,d.G|=255);break;case "S":k?(d=a.b,d.L&128||(d.L^=192)):(d=a.b,d.L&128&&(d.L^=192));break;case "I":k?(d=a.b,d.Da|=512):(d=a.b,d.Da&=-513);break;default:a.g("unknown register: "+d);return}}if(!f){a.g("invalid value: "+e);return}I(a.b);a.g("updated registers:")}a.g(V(a,7)+V(a,8)+V(a,0)+V(a,1)+V(a,2)+V(a,3)+V(a,4)+V(a,5)+V(a,13)+Zd(a,"I")+Zd(a,"S")+Zd(a,"Z")+Zd(a,"A")+Zd(a,"P")+Zd(a,"C"));c&&(a.N=P(a.b.R),Qd(a,n(a.N.u,4)))}} (d=a.b,d.D&=-256):(d=a.b,d.D|=255);break;case "S":h?(d=a.b,d.M&128||(d.M^=192)):(d=a.b,d.M&128&&(d.M^=192));break;case "I":h?(d=a.b,d.Ea|=512):(d=a.b,d.Ea&=-513);break;default:a.g("unknown register: "+d);return}}if(!f){a.g("invalid value: "+e);return}I(a.b);a.g("updated registers:")}a.g(X(a,7)+X(a,8)+X(a,0)+X(a,1)+X(a,2)+X(a,3)+X(a,4)+X(a,5)+X(a,13)+$d(a,"I")+$d(a,"S")+$d(a,"Z")+$d(a,"A")+$d(a,"P")+$d(a,"C"));c&&(a.O=R(a.b.P),Rd(a,n(a.O.u,4)))}}
function Je(a,b){b=oa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Md(a,c[2])):Fd(a,b,!0)}function Ke(a,b,c){var d="t"!=b;c=be(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Fa(c,function(){return fb(a,!0)&&a.Ua(e,d,!1)},function(){I(a.b);fb(a,!1)})} function Ke(a,b){b=qa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Nd(a,c[2])):Gd(a,b,!0)}function Le(a,b,c){var d="t"!=b;c=ce(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ha(c,function(){return hb(a,!0)&&a.Ta(e,d,!1)},function(){I(a.b);hb(a,!1)})}
function Qd(a,b,c,d){if(b=U(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=U(a,c,!0);if(!d||d.u<b.u)return;e=d.u-b.u;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=gb(a,!1)||a.T?a.K:null;var k=null!=f?"cycles":null,h=Ee(a,b),l=b.u;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.g(m)}h[3]&&(k=h[3],f=null);f=Yd(a,b,k,f);a.g(f);a.N=b;e-=b.u-l;c++}}} function Rd(a,b,c,d){if(b=W(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=W(a,c,!0);if(!d||d.u<b.u)return;e=d.u-b.u;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=ib(a,!1)||a.T?a.L:null;var h=null!=f?"cycles":null,g=Fe(a,b),l=b.u;if(g[0]&&d&&(!c&&d||0>g[0].indexOf("+"))){var m=g[0]+":";g[2]&&(m+=" "+g[2]);a.g(m)}g[3]&&(h=g[3],f=null);f=Zd(a,b,h,f);a.g(f);a.O=b;e-=b.u-l;c++}}}
function Hd(a,b,c,d){if(c)if(b){0>a.D&&a.B.length&&(a.D=0);if(0>a.D||b!=a.B[a.D])a.B.splice(0,0,b),a.D=0;a.D--}else b=a.B[a.D+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 k=b.charAt(f);if('"'==k||"'"==k)e?k==e&&(e=null):e=k;else if(k==d&&!e||!k)a.push(oa(b.substring(c,f))),c=f+1}}return a} function Id(a,b,c,d){if(c)if(b){0>a.F&&a.B.length&&(a.F=0);if(0>a.F||b!=a.B[a.F])a.B.splice(0,0,b),a.F=0;a.F--}else b=a.B[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(qa(b.substring(c,f))),c=f+1}}return a}
function Xd(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.ma&&(a.g("ended assemble at "+n(a.ea.u,4)),a.N=a.ea,a.ma=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.wa=null;if(rb(a)&&0<b.length){a.ma&&(b="a "+n(a.ea.u,4)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var k=f[0],h=k.charAt(0),l=1;l<k.length;l++){var m=k.charAt(l);if("?"==h||"r"==h||"a">m||"z"<m){f[0]=k.substr(l);f.unshift(k.substr(0,l));break}}switch(f[0].charAt(0)){case "a":var p=U(a,f[1],!0);if(p)if(a.ea= function Yd(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.na&&(a.g("ended assemble at "+n(a.da.u,4)),a.O=a.da,a.na=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.xa=null;if(tb(a)&&0<b.length){a.na&&(b="a "+n(a.da.u,4)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),l=1;l<h.length;l++){var m=h.charAt(l);if("?"==g||"r"==g||"a">m||"z"<m){f[0]=h.substr(l);f.unshift(h.substr(0,l));break}}switch(f[0].charAt(0)){case "a":var p=W(a,f[1],!0);if(p)if(a.da=
p,void 0===f[2])a.g("begin assemble at "+n(p.u,4)),a.ma=!0,I(a.b);else{var r;a.g("not supported yet");r=[];if(r.length){for(var t=0;t<r.length;t++)a.vb(p,r[t],1);a.g(Yd(a,a.ea))}}break;case "b":a:{var K=f[0],B=f[1],ef=b;if("?"==B)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]"), p,void 0===f[2])a.g("begin assemble at "+n(p.u,4)),a.na=!0,I(a.b);else{var r;a.g("not supported yet");r=[];if(r.length){for(var t=0;t<r.length;t++)a.vb(p,r[t],1);a.g(Zd(a,a.da))}}break;case "b":a:{var K=f[0],B=f[1],ff=b;if("?"==B)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 X=K.charAt(1);if("l"==X){var Ha=0,Ha=Ha+Wd(a,a.w),Ha=Ha+Wd(a,a.S);(Ha+=Wd(a,a.F))||a.g("no breakpoints")}else if("n"==X)a.va=be(a,B),a.g("break after "+a.va+" instruction(s)");else if(void 0===B)a.g("missing breakpoint address");else{var A=P();if("*"!=B&&(A=U(a,B,!0),!A))break a;B=q(A.u);"c"==X?null==A.u?(td(a),a.g("all breakpoints cleared")):Ud(a,a.w,A)||Ud(a,a.S, 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 Z=K.charAt(1);if("l"==Z){var Ka=0,Ka=Ka+Xd(a,a.w),Ka=Ka+Xd(a,a.S);(Ka+=Xd(a,a.G))||a.g("no breakpoints")}else if("n"==Z)a.wa=ce(a,B),a.g("break after "+a.wa+" instruction(s)");else if(void 0===B)a.g("missing breakpoint address");else{var A=R();if("*"!=B&&(A=W(a,B,!0),!A))break a;B=q(A.u);"c"==Z?null==A.u?(ud(a),a.g("all breakpoints cleared")):Vd(a,a.w,A)||Vd(a,a.S,
A)||Ud(a,a.F,A)||a.g("breakpoint missing: "+n(A.u,4)):"i"==X?a.g("breakpoint "+(Db(a.A,A.u)?"enabled":"cleared")+": port "+B+" (input)"):"o"==X?a.g("breakpoint "+(Eb(a.A,A.u)?"enabled":"cleared")+": port "+B+" (output)"):null!=A.u&&(Gd(a,A,ef),"p"==X?a.xa(a.w,A):"r"==X?a.xa(a.S,A):"w"==X?a.xa(a.F,A):a.g("unknown breakpoint command: "+X))}}}break;case "c":a.ya&&(a.ya.value="");break;case "d":a:{var Ia,Ja=f[0],Y=f[1],qa=f[2],ff=f[3];if("?"==Y){var Z="";for(Ia in Q)a.Wa[Ia]&&(Z&&(Z+=","),Z+=Ia);Z+=",state,symbols"; A)||Vd(a,a.G,A)||a.g("breakpoint missing: "+n(A.u,4)):"i"==Z?a.g("breakpoint "+(Fb(a.A,A.u)?"enabled":"cleared")+": port "+B+" (input)"):"o"==Z?a.g("breakpoint "+(Gb(a.A,A.u)?"enabled":"cleared")+": port "+B+" (output)"):null!=A.u&&(Hd(a,A,ff),"p"==Z?a.ya(a.w,A):"r"==Z?a.ya(a.S,A):"w"==Z?a.ya(a.G,A):a.g("unknown breakpoint command: "+Z))}}}break;case "c":a.za&&(a.za.value="");break;case "d":a:{var La,Ma=f[0],aa=f[1],ua=f[2],gf=f[3];if("?"==aa){var ba="";for(La in U)a.Wa[La]&&(ba&&(ba+=","),ba+=La);
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");Z.length&&a.g("dump extension commands:\n\t"+Z)}else if("state"==Y){var ce=Le(a.s,!0);"console"==qa?console.log(ce):(a.ya&&(a.ya.value=""),a.g(ce))}else if("symbols"==Y)for(var Ec=0;Ec<a.I.length;Ec++){var Fc=a.I[Ec],La;for(La in Fc.qa)if("."!=La.charAt(0)){var de=Fc.qa[La].o; 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"==aa){var de=Me(a.s,!0);"console"==ua?console.log(de):(a.za&&(a.za.value=""),a.g(de))}else if("symbols"==aa)for(var Fc=0;Fc<a.I.length;Fc++){var Gc=a.I[Fc],Oa;for(Oa in Gc.ra)if("."!=
if(void 0!==de){var ee=Fc.qa[La].l;ee&&(La=ee);a.g(n(de,4)+" "+La)}}}else{if("d"==Ja){for(Ia in Q)if(f[1]==Ia){var fe=a.Wa[Ia];fe?(f.shift(),f.shift(),fe(f)):a.g("no dump registered for "+Y);break a}Y||(Ja=a.Xb||"db")}else a.Xb=Ja;if("dh"==Ja){var ge=Y,he=qa,ie="",je=0,D=a.na,aa=a.M;if(aa.length){var L=+ge||a.Cb,Ma=+he||10;isNaN(L)?L=Ma:ie="more ";L>aa.length&&(a.g("note: only "+aa.length+" available"),L=aa.length);D-=L;0>D&&(null==aa[aa.length-1].u?(L=D+L,D=0):D+=aa.length);var Gc=[];"call"==he&& Oa.charAt(0)){var ee=Gc.ra[Oa].o;if(void 0!==ee){var fe=Gc.ra[Oa].l;fe&&(Oa=fe);a.g(n(ee,4)+" "+Oa)}}}else{if("d"==Ma){for(La in U)if(f[1]==La){var ge=a.Wa[La];ge?(f.shift(),f.shift(),ge(f)):a.g("no dump registered for "+aa);break a}aa||(Ma=a.Xb||"db")}else a.Xb=Ma;if("dh"==Ma){var he=aa,ie=ua,je="",ke=0,D=a.oa,ca=a.N;if(ca.length){var L=+he||a.Cb,Pa=+ie||10;isNaN(L)?L=Pa:je="more ";L>ca.length&&(a.g("note: only "+ca.length+" available"),L=ca.length);D-=L;0>D&&(null==ca[ca.length-1].u?(L=D+L,D=0):
(Ma=1E5,Gc=["CALL"]);for(void 0!==ge&&a.g(L+" instructions earlier:");0<Ma&&D!=a.na;){var ke=aa[D++];if(null==ke.u)break;var hb=P(ke.u),gf=L--,le=Yd(a,hb,"history",gf);(!Gc.length||0<=le.indexOf(Gc[0]))&&a.g(le);hb.nb&&(D+=hb.nb,Ma-=hb.nb,L-=hb.nb);D>=aa.length&&(D=0);a.Cb=L;je++;Ma--}}je||(a.g("no "+ie+"history available"),a.Cb=void 0)}else{var Nb=U(a,Y);if(Nb){var Ob=0;qa&&("l"==qa.charAt(0)&&(qa=qa.substr(1)||ff),Ob=be(a,qa)>>>0,65536<Ob&&(Ob=65536));for(var ra="",hf=(Ob||128)+15>>4||1,Hc="dd"== D+=ca.length);var Hc=[];"call"==ie&&(Pa=1E5,Hc=["CALL"]);for(void 0!==he&&a.g(L+" instructions earlier:");0<Pa&&D!=a.oa;){var le=ca[D++];if(null==le.u)break;var jb=R(le.u),hf=L--,me=Zd(a,jb,"history",hf);(!Hc.length||0<=me.indexOf(Hc[0]))&&a.g(me);jb.nb&&(D+=jb.nb,Pa-=jb.nb,L-=jb.nb);D>=ca.length&&(D=0);a.Cb=L;ke++;Pa--}}ke||(a.g("no "+je+"history available"),a.Cb=void 0)}else{var Pb=W(a,aa);if(Pb){var Qb=0;ua&&("l"==ua.charAt(0)&&(ua=ua.substr(1)||gf),Qb=ce(a,ua)>>>0,65536<Qb&&(Qb=65536));for(var va=
Ja?4:"dw"==Ja?2:1,me=0;me<hf;me++){for(var Pb=0,Ic=0,ib="",Jc="",Y=n(Nb.u,4),Kc=0;16>Kc;Kc++){var Qb=a.ta(Nb,1),Pb=Pb|Qb<<(Ic++<<3);Ic==Hc&&(ib+=n(Pb,2*Hc),ib+=1==Hc?7==Kc?"-":" ":" ",Pb=Ic=0);Jc+=32<=Qb&&128>Qb?String.fromCharCode(Qb):"."}ra&&(ra+="\n");ra+=Y+" "+ib+" "+Jc}ra&&a.g(ra);a.zb=Nb}}}}break;case "e":if("else"==f[0])break;var Rb=1,ne=255,oe=a.ta,pe=a.vb;"ew"==f[0]&&(Rb=2,ne=65535,oe=a.ib,pe=a.Qb);var qe=Rb<<1,re=f[1];if(null==re)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"), "",jf=(Qb||128)+15>>4||1,Ic="dd"==Ma?4:"dw"==Ma?2:1,ne=0;ne<jf;ne++){for(var Rb=0,Jc=0,kb="",Kc="",aa=n(Pb.u,4),Lc=0;16>Lc;Lc++){var Sb=a.ua(Pb,1),Rb=Rb|Sb<<(Jc++<<3);Jc==Ic&&(kb+=n(Rb,2*Ic),kb+=1==Ic?7==Lc?"-":" ":" ",Rb=Jc=0);Kc+=32<=Sb&&128>Sb?String.fromCharCode(Sb):"."}va&&(va+="\n");va+=aa+" "+kb+" "+Kc}va&&a.g(va);a.zb=Pb}}}}break;case "e":if("else"==f[0])break;var Tb=1,oe=255,pe=a.ua,qe=a.vb;"ew"==f[0]&&(Tb=2,oe=65535,pe=a.ib,qe=a.Qb);var re=Tb<<1,se=f[1];if(null==se)a.g("edit memory commands:"),
a.g("\tew [a] [...] edit words at address a");else{var Sb=U(a,re);if(Sb)for(var Tb=2;Tb<f.length;Tb++){var jb=Fd(a,f[Tb]);if(void 0===jb){a.g("unrecognized value: "+f[Tb]);break}jb&~ne&&a.g("warning: "+n(jb)+" exceeds "+Rb+"-byte value");var jf=oe.call(a,Sb);a.g("changing "+n(Sb.u,4)+" from 0x"+n(jf,qe)+" to 0x"+n(jb,qe));pe.call(a,Sb,jb,Rb)}}break;case "f":Ge(a,f[1]);break;case "g":a:{var se=f[1],kf=b;if(void 0!==se){var Lc=U(a,se,!0);if(!Lc)break a;Gd(a,Lc,kf);a.xa(a.w,Lc,!0)}a.Fa(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break; a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");else{var Ub=W(a,se);if(Ub)for(var Vb=2;Vb<f.length;Vb++){var lb=Gd(a,f[Vb]);if(void 0===lb){a.g("unrecognized value: "+f[Vb]);break}lb&~oe&&a.g("warning: "+n(lb)+" exceeds "+Tb+"-byte value");var kf=pe.call(a,Ub);a.g("changing "+n(Ub.u,4)+" from 0x"+n(kf,re)+" to 0x"+n(lb,re));qe.call(a,Ub,lb,Tb)}}break;case "f":He(a,f[1]);break;case "g":a:{var te=f[1],lf=b;if(void 0!==te){var Mc=W(a,te,!0);if(!Mc)break a;
case "h":var Mc;a.j.X?(Mc="halting",a.U()):Mc="already halted";c||a.g(Mc);break;case "i":if("if"==f[0]){var Nc;var kb=b.substr(2),kb=oa(kb);Fd(a,kb)?(c||a.g("true: "+kb),Nc=!0):(c||a.g("false: "+kb),Nc=!1);Nc||(d=!1);break}var Oc=f[1];if(Oc&&"?"!=Oc){var Pc=be(a,Oc);if(void 0!==Pc){for(var R=a.A,ga=Pc,Qc=1,Rc=0,Sc=0;0<Qc;){var Ub=R.B[ga],lb=R.T[ga]||1,Tc=1==lb?255:2==lb?65535:-1,ha=Tc;void 0!==Ub?(Ub[0]&&(ha=Ub[0](ga,void 0),void 0===ha?ha=Tc:ha&=Tc),R.C&&R.F!=Ub[1]&&Sd(R.C,ga,ha)):R.C&&(Nd(R.C,R, Hd(a,Mc,lf);a.ya(a.w,Mc,!0)}a.Fa(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;case "h":var Nc;a.j.X?(Nc="halting",a.U()):Nc="already halted";c||a.g(Nc);break;case "i":if("if"==f[0]){var Oc;var mb=b.substr(2),mb=qa(mb);Gd(a,mb)?(c||a.g("true: "+mb),Oc=!0):(c||a.g("false: "+mb),Oc=!1);Oc||(d=!1);break}var Pc=f[1];if(Pc&&"?"!=Pc){var Qc=ce(a,Pc);if(void 0!==Qc){for(var S=a.A,ma=Qc,Rc=1,Sc=0,Tc=0;0<Rc;){var Wb=S.B[ma],nb=S.T[ma]||1,Uc=1==nb?255:2==nb?65535:-1,na=Uc;void 0!==Wb?(Wb[0]&&
ga,null),R.F&&Sd(R.C,ga,ha));Rc|=ha<<Sc;Sc+=lb<<3;ga+=lb;Qc-=lb}a.g(q(Pc)+": "+("0x"+n(Rc,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 lf=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var Uc=0,te=P(),mb=P(a.b.Ea);for(a.g("stack trace for "+n(mb.u,4));10>Uc;){for(var sa=null,mf=256;65536>mb.u>>>0;){te.u=a.ib(mb,2);if(null==mb.u||!mf--)break; (na=Wb[0](ma,void 0),void 0===na?na=Uc:na&=Uc),S.C&&S.G!=Wb[1]&&Td(S.C,ma,na)):S.C&&(Od(S.C,S,ma,null),S.G&&Td(S.C,ma,na));Sc|=na<<Tc;Tc+=nb<<3;ma+=nb;Rc-=nb}a.g(q(Qc)+": "+("0x"+n(Sc,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 mf=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var Vc=0,ue=R(),ob=R(a.b.ja);for(a.g("stack trace for "+
for(var nf=a,Vb=te,ue=null,nb=Vb.u,ve=nb,Vc=1;6>=Vc&&nb;Vc++){if(2<Vc){Vb.u=nb;var Wb=Yd(nf,Vb);if(0<Wb.indexOf("CALL")){var we=Wb.indexOf(" ");if(nb+(Wb.indexOf(" ",we+1)-we-1)/2==ve){ue=Wb;break}}}nb--}Vb.u=ve;if(sa=ue)break}if(!sa||null==sa)break;var xe=null;if("ks"==lf){var ye=sa.match(/[0-9A-F]+$/);ye&&(xe=Ie(a,ye[0]))}sa=na(sa,50)+" ;"+(xe||"stack="+n(mb.u,4));a.g(sa);Uc++}Uc||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Ie(a,f[1],!0);break}break;case "m":a:{var ba,ca=null, n(ob.u,4));10>Vc;){for(var wa=null,nf=256;65536>ob.u>>>0;){ue.u=a.ib(ob,2);if(null==ob.u||!nf--)break;for(var of=a,Xb=ue,ve=null,pb=Xb.u,we=pb,Wc=1;6>=Wc&&pb;Wc++){if(2<Wc){Xb.u=pb;var Yb=Zd(of,Xb);if(0<Yb.indexOf("CALL")){var xe=Yb.indexOf(" ");if(pb+(Yb.indexOf(" ",xe+1)-xe-1)/2==we){ve=Yb;break}}}pb--}Xb.u=we;if(wa=ve)break}if(!wa||null==wa)break;var ye=null;if("ks"==mf){var ze=wa.match(/[0-9A-F]+$/);ze&&(ye=Je(a,ze[0]))}wa=la(wa,50)+" ;"+(ye||"stack="+n(ob.u,4));a.g(wa);Vc++}Vc||a.g("no return addresses found")}break;
w=f[1];"?"==w&&(w=void 0);if(void 0!==w){var ta=0;if("all"==w)ta=1610481663,w=null;else if("on"==w)ca=!0,w=null;else if("off"==w)ca=!1,w=null;else{"keys"==w&&(w="key");"kbd"==w&&(w="keyboard");for(ba in Q)if(w==ba){ta=Q[ba];ca=!!(a.Z&ta);break}if(!ta){a.g("unknown message category: "+w);break a}}ta&&("on"==f[2]?(a.Z|=ta,ca=!0):"off"==f[2]&&(a.Z&=~ta,ca=!1))}var of=0,ia="";for(ba in Q)if(!w||w==ba){var pf=!!(a.Z&Q[ba]);if(null===ca||ca==pf)ia&&(ia+=","),++of%10||(ia+="\n\t"),"key"==ba&&(ba="keys"), case "l":if("ln"==f[0]){Je(a,f[1],!0);break}break;case "m":a:{var da,ea=null,w=f[1];"?"==w&&(w=void 0);if(void 0!==w){var xa=0;if("all"==w)xa=1610481663,w=null;else if("on"==w)ea=!0,w=null;else if("off"==w)ea=!1,w=null;else{"keys"==w&&(w="key");"kbd"==w&&(w="keyboard");for(da in U)if(w==da){xa=U[da];ea=!!(a.Y&xa);break}if(!xa){a.g("unknown message category: "+w);break a}}xa&&("on"==f[2]?(a.Y|=xa,ea=!0):"off"==f[2]&&(a.Y&=~xa,ea=!1))}var pf=0,oa="";for(da in U)if(!w||w==da){var qf=!!(a.Y&U[da]);if(null===
ia+=ba}void 0===w&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==ca?ca?"messages on: ":"messages off: ":"message categories:\n\t")+(ia||"none"));ud(a)}break;case "o":var Wc=f[1],qf=f[2];if(Wc&&"?"!=Wc){var Xc=be(a,Wc,"port #"),Yc=be(a,qf);if(void 0!==Xc&&void 0!==Yc){for(var S=a.A,ja=Xc,ze=Yc,Zc=1,$c=0;0<Zc;){var Xb=S.D[ja],ob=S.V[ja]||1,rf=1==ob?255:2==ob?65535:-1,Yb=(ze>>>=$c)&rf;if(void 0!==Xb){if(Xb[0])Xb[0](ja,Yb,void 0);S.C&&S.I!=Xb[1]&&Td(S.C,ja,Yb)}else S.C&& ea||ea==qf)oa&&(oa+=","),++pf%10||(oa+="\n\t"),"key"==da&&(da="keys"),oa+=da}void 0===w&&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")+(oa||"none"));vd(a)}break;case "o":var Xc=f[1],rf=f[2];if(Xc&&"?"!=Xc){var Yc=ce(a,Xc,"port #"),Zc=ce(a,rf);if(void 0!==Yc&&void 0!==Zc){for(var T=a.A,pa=Yc,Ae=Zc,$c=1,ad=0;0<$c;){var Zb=T.F[pa],qb=T.V[pa]||1,sf=1==qb?255:2==qb?65535:-1,$b=(Ae>>>=ad)&sf;if(void 0!==
(Nd(S.C,S,ja,Yb),S.I&&Td(S.C,ja,Yb));$c+=ob<<3;ja+=ob;Zc-=ob}a.g(q(Xc)+": "+("0x"+n(Yc,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]){Je(a,b.substr(5));break}var Ae="pr"==f[0]?1:0,sf=1+Ae;if(a.T)a.g("step in progress");else{var ad=P(a.b.R);switch(a.ta(ad)){case 205:a.T=sf,Bd(ad,3)}a.T?(a.xa(a.w,ad,!0),a.Fa()||(a.s&&a.s.gb(),a.T=0)):Ke(a,Ae?"tr":"t")}break;case "r":if("reset"== Zb){if(Zb[0])Zb[0](pa,$b,void 0);T.C&&T.I!=Zb[1]&&Ud(T.C,pa,$b)}else T.C&&(Od(T.C,T,pa,$b),T.I&&Ud(T.C,pa,$b));ad+=qb<<3;pa+=qb;$c-=qb}a.g(q(Yc)+": "+("0x"+n(Zc,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]){Ke(a,b.substr(5));break}var Be="pr"==f[0]?1:0,tf=1+Be;if(a.T)a.g("step in progress");else{var bd=R(a.b.P);switch(a.ua(bd)){case 205:a.T=tf,Cd(bd,3)}a.T?(a.ya(a.w,bd,!0),
b){a.s&&a.s.reset();break}Pd(a,f);break;case "t":Ke(a,f[0],f[1]);break;case "u":Qd(a,f[1],f[2],8);break;case "v":if("var"==f[0]){He(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.21.7 ("+a.b.Hb+",RELEASE"+(tb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(ya());break;case "x":a:if(f[1]&&"?"!=f[1])switch(f[1]){case "cs":var pb;void 0!==f[3]&&(pb=+f[3]);switch(f[2]){case "int":a.b.i.Oa=pb;break;case "start":a.b.i.$a=pb;break;case "stop":a.b.i.Qa=pb;break;default:a.g("unknown cs option");break a}void 0!== a.Fa()||(a.s&&a.s.gb(),a.T=0)):Le(a,Be?"tr":"t")}break;case "r":if("reset"==b){a.s&&a.s.reset();break}Qd(a,f);break;case "t":Le(a,f[0],f[1]);break;case "u":Rd(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Ie(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.21.7 ("+a.b.Hb+",RELEASE"+(vb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(Aa());break;case "x":a:if(f[1]&&"?"!=f[1])switch(f[1]){case "cs":var rb;void 0!==f[3]&&(rb=+f[3]);switch(f[2]){case "int":a.b.i.Na=rb;break;case "start":a.b.i.$a=rb;break;case "stop":a.b.i.Pa=
pb&&lc(a.b);a.g("checksums "+(a.b.j.Ja?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(qc(a.b,+f[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.Aa.toFixed(2)+"Mhz")+" ("+a.b.i.Ca+"x)");break;default:a.g("unknown option: "+f[1])}else a.g("execution options:"),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 #"); rb;break;default:a.g("unknown cs option");break a}void 0!==rb&&nc(a.b);a.g("checksums "+(a.b.j.Ia?"enabled":"disabled"));break;case "sp":void 0!==f[2]&&(sc(a.b,+f[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.i.Ba.toFixed(2)+"Mhz")+" ("+a.b.i.Da+"x)");break;default:a.g("unknown option: "+f[1])}else a.g("execution options:"),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 #"),
break;case "?":if(f[1]){Je(a,b.substr(1));break}var qb="commands:",bd;for(bd in wd)qb+="\n"+na(bd,7)+wd[bd];jd(a)||(qb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(qb);break;default:a.g("unknown command: "+b),d=!1}}}catch(Be){a.g("debugger error: "+(Be.stack||Be.message)),d=!1}return d}function mc(a,b,c){b=Hd(a,b,c);for(var d in b)if(!Xd(a,b[d]))return!1;return!0}Qa(function(){for(var a=F(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new sd(d);cb(d,c)}}); a.g("\tsp #\t\tset speed multiplier to #");break;case "?":if(f[1]){Ke(a,b.substr(1));break}var sb="commands:",cd;for(cd in xd)sb+="\n"+la(cd,7)+xd[cd];kd(a)||(sb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(sb);break;default:a.g("unknown command: "+b),d=!1}}}catch(Ce){a.g("debugger error: "+(Ce.stack||Ce.message)),d=!1}return d}function oc(a,b,c){b=Id(a,b,c);for(var d in b)if(!Yd(a,b[d]))return!1;return!0}
function J(a,b,c){this.id=a.id;this.key=Me(a,b,c);this.C=a.C;Ne(this,a.Lb)}function Me(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} Sa(function(){for(var a=F(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=E(c),d=new td(d);eb(d,c)}});function J(a,b,c){this.id=a.id;this.key=Ne(a,b,c);this.C=a.C;Oe(this,a.Lb)}function Ne(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}
J.prototype={constructor:J,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){Ne(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}}}; J.prototype={constructor:J,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){Oe(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 Ne(a,b){a[a.id]={};b&&M(a,"parms",b);a.b=!1}function Oe(a){var b=!0;if(Ba()){var c=JSON.stringify(a[a.id]);Da(a.key,c)||(v("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Pe(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){v(c.message||c),b=!1}return b}function Qe(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:Ba()&&(b=Ca(a.key))?(a[a.id]=b,a.b=!0):!1}function Re(a,b){return a[a.id][b]||null}function M(a,b,c){try{a[a.id][b]=c}catch(d){}} function Oe(a,b){a[a.id]={};b&&M(a,"parms",b);a.b=!1}function Pe(a){var b=!0;if(Da()){var c=JSON.stringify(a[a.id]);Fa(a.key,c)||(v("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function Qe(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){v(c.message||c),b=!1}return b}function Re(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:Da()&&(b=Ea(a.key))?(a[a.id]=b,a.b=!0):!1}function Se(a,b){return a[a.id][b]||null}function M(a,b,c){try{a[a.id][b]=c}catch(d){}}
function Se(a,b,c){x.call(this,"Computer",a,Se,67108864);this.j.W=!1;Te(this,b);this.S=jc(this,"autoPower",a);this.B=0;this.ma=a.busWidth||a.buswidth;this.s=Ue;this.M=null;this.I=this.ja=!1;this.na=jc(this,"url")||"";(Math.random()+.1).toString(36);this.w=Ve(this);if(this.b=bb("CPU",this.id)){this.C=bb("Debugger",this.id);this.pa=[];for(b=null;b=wb(this,"Video",b);)this.pa.push(b);this.A=new yb({id:this.Ab+".bus",buswidth:this.ma},this.b,this.C);var d,e=C(this.id);if((this.D=bb("Panel",this.id))&& function Te(a,b,c){x.call(this,"Computer",a,Te,67108864);this.j.W=!1;Ue(this,b);this.S=lc(this,"autoPower",a);this.B=0;this.na=a.busWidth||a.buswidth;this.s=Ve;this.N=null;this.I=this.ka=!1;this.oa=lc(this,"url")||"";(Math.random()+.1).toString(36);this.w=We(this);if(this.b=db("CPU",this.id)){this.C=db("Debugger",this.id);this.qa=[];for(b=null;b=yb(this,"Video",b);)this.qa.push(b);this.A=new Ab({id:this.Ab+".bus",buswidth:this.na},this.b,this.C);var d,e=C(this.id);if((this.F=db("Panel",this.id))&&
this.D.ya)for(b=0;b<e.length;b++)d=e[b],d.fa=this.D.fa,d.g=this.D.g,d.ya=this.D.ya;for(b=0;b<e.length;b++)d=e[b],d.Ma&&d.Ma(this,this.A,this.b,this.C);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.K=d:this.s=parseInt(d,10));var f;if(a=jc(this,"state")||(f=!0,a.state))b=this.T=a,f||(this.I=!0,this.s=Ue),this.s&&(this.N=new J(this,W),Qe(this.N)?b=null:delete this.N);!b&&this.s&&(b=We(this))&&(this.I=!0);if(b){var k=this;u(b,null,!0,function(a,b,c){c?(k.K=null,k.I=!1,k.fa("Unable to load machine state from server (error "+ this.F.za)for(b=0;b<e.length;b++)d=e[b],d.fa=this.F.fa,d.g=this.F.g,d.za=this.F.za;for(b=0;b<e.length;b++)d=e[b],d.La&&d.La(this,this.A,this.b,this.C);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.L=d:this.s=parseInt(d,10));var f;if(a=lc(this,"state")||(f=!0,a.state))b=this.T=a,f||(this.I=!0,this.s=Ve),this.s&&(this.O=new J(this,Y),Re(this.O)?b=null:delete this.O);!b&&this.s&&(b=Xe(this))&&(this.I=!0);if(b){var h=this;u(b,null,!0,function(a,b,c){c?(h.L=null,h.I=!1,h.fa("Unable to load machine state from server (error "+
c+(b?": "+oa(b):"")+")")):(k.M=b,k.ja=!0);G(k)})}else G(this);this.H.power||(this.S=!0);!c&&this.S&&Xe(this,this.eb)}else v("Unable to find CPU component")}z(Se);var W="1.21.7",Ue=0;function Te(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){v(d.message+" ("+c+")")}}a.J=b} c+(b?": "+qa(b):"")+")")):(h.N=b,h.ka=!0);G(h)})}else G(this);this.H.power||(this.S=!0);!c&&this.S&&Ye(this,this.eb)}else v("Unable to find CPU component")}z(Te);var Y="1.21.7",Ve=0;function Ue(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){v(d.message+" ("+c+")")}}a.J=b}
function jc(a,b,c){var d=b.toLowerCase(),d=Va[b]||Va[d];void 0===d&&a.J&&(d=a.J[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Xe(a,b,c){for(var d=C(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!rb(f)){rb(f,function(){Xe(a,b,c)});return}}b.call(a,c)} function lc(a,b,c){var d=b.toLowerCase(),d=Xa[b]||Xa[d];void 0===d&&a.J&&(d=a.J[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Ye(a,b,c){for(var d=C(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!tb(f)){tb(f,function(){Ye(a,b,c)});return}}b.call(a,c)}
function Ye(a,b){var c=new J(a,W,"validate");if(Qe(c)&&Pe(c)){var d=Re(c,"timestamp"),e=b?Re(b,"timestamp"):"unknown";d!=e&&(a.fa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}g=Se.prototype; function Ze(a,b){var c=new J(a,Y,"validate");if(Re(c)&&Qe(c)){var d=Se(c,"timestamp"),e=b?Se(b,"timestamp"):"unknown";d!=e&&(a.fa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=Te.prototype;
g.eb=function(a){void 0===a&&(a=this.s||(this.M?1:Ue));if(!this.B){this.B++;var b=!1,c=!1;this.ea=!1;var d=this.N||new J(this,W);if(-1==a)b=!0;else if(a>Ue){if(Qe(d,this.M)){this.F=new J(this,W,"failsafe");Qe(this.F)&&(Ze(this,d),a=2,Ne(this.F));M(this.F,"timestamp",va());Oe(this.F);var e=this.s&&!this.I;if(1==a||za("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Pe(d)){var f=Re(d,"code"),k=Re(d,"data");f&&("ok"==f?Qe(d,k):("error"==f&&"no machine state"!= k.eb=function(a){void 0===a&&(a=this.s||(this.N?1:Ve));if(!this.B){this.B++;var b=!1,c=!1;this.da=!1;var d=this.O||new J(this,Y);if(-1==a)b=!0;else if(a>Ve){if(Re(d,this.N)){this.G=new J(this,Y,"failsafe");Re(this.G)&&($e(this,d),a=2,Oe(this.G));M(this.G,"timestamp",ta());Pe(this.G);var e=this.s&&!this.I;if(1==a||Ba("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=Qe(d)){var f=Se(d,"code"),h=Se(d,"data");f&&("ok"==f?Re(d,h):("error"==f&&"no machine state"!=
k?(this.fa("Error: "+k),"unable to verify user"==k&&(Da("user",""),this.w=null)):this.g(f+": "+k),Ne(d),Qe(d)?(c=Pe(d),e=!0):c=!1))}e&&Ye(this,c?d:null)}else 2==a&&d.clear()}else Ye(this);delete this.M;delete this.N}e=C(this.id);for(f=0;f<e.length;f++)k=e[f],k!==this&&k!=this.b&&(c=$e(this,k,d,b,c));b=[d,a,c];-1!=a?Xe(this,this.Db,b):this.Db(b)}}; h?(this.fa("Error: "+h),"unable to verify user"==h&&(Fa("user",""),this.w=null)):this.g(f+": "+h),Oe(d),Re(d)?(c=Qe(d),e=!0):c=!1))}e&&Ze(this,c?d:null)}else 2==a&&d.clear()}else Ze(this);delete this.N;delete this.O}e=C(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=af(this,h,d,b,c));b=[d,a,c];-1!=a?Ye(this,this.Db,b):this.Db(b)}};
function $e(a,b,c,d,e){if(!b.j.W){b.j.W=!0;if(b.sa){var f=null;e&&((f=Re(c,b.id))||(f=Re(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.sa(f,d)&&f&&(v("Unable to restore state for "+b.type),a.T&&!a.ja?(c.clear(),a.s=Ue,window&&window.location.reload()):a.ea=!0,b.sa(null),e=!1)}if(!d&&b.wb)for(a=b.wb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e} function af(a,b,c,d,e){if(!b.j.W){b.j.W=!0;if(b.ta){var f=null;e&&((f=Se(c,b.id))||(f=Se(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ta(f,d)&&f&&(v("Unable to restore state for "+b.type),a.T&&!a.ka?(c.clear(),a.s=Ve,window&&window.location.reload()):a.da=!0,b.ta(null),e=!1)}if(!d&&b.wb)for(a=b.wb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
g.Db=function(a){var b=a[0],c=0>a[1];a=a[2];this.j.W=!0;var d=this.H.power;d&&(d.textContent="Shutdown");this.V||(this.g("PC8080 v"+W+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.V=!0);this.b&&($e(this,this.b,b,c,a),nc(this.b));this.ea&&(Ze(this,b),b.clear());!c&&this.F&&(this.F.clear(),delete this.F);this.B=0}; k.Db=function(a){var b=a[0],c=0>a[1];a=a[2];this.j.W=!0;var d=this.H.power;d&&(d.textContent="Shutdown");this.V||(this.g("PC8080 v"+Y+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.V=!0);this.b&&(af(this,this.b,b,c,a),pc(this.b));this.da&&($e(this,b),b.clear());!c&&this.G&&(this.G.clear(),delete this.G);this.B=0};
function Ze(a,b){if(za("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.na,d=a.w||"",e=b.toString(),f={app:"PC8080"};f.ver=W;f.url=c;f.user=d;f.type="bug";f.data=e;u("http://www.pcjs.org/api/v1/report",f,!0)}} function $e(a,b){if(Ba("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.oa,d=a.w||"",e=b.toString(),f={app:"PC8080"};f.ver=Y;f.url=c;f.user=d;f.type="bug";f.data=e;u("http://www.pcjs.org/api/v1/report",f,!0)}}
function Le(a,b,c){var d,e="none";if(a.B)return null;a.B--;var f=new J(a,W),k=new J(a,W,"validate"),h=va();M(k,"timestamp",h);M(f,"timestamp",h);M(f,"version","1.21.7");M(f,"url",window?window.location.href:null);M(f,"browser",ya());a.b&&a.b.ra&&(c&&a.b.U(),d=a.b.ra(b,c),"object"===typeof d&&M(f,a.b.id,d),c&&(a.b.j.W=!1,!1===d&&(e=null)));for(var h=C(a.id),l=0;l<h.length;l++){var m=h[l];m.j.W&&(m.ra&&(d=m.ra(b,c),"object"===typeof d&&M(f,m.id,d)),c&&(m.j.W=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.w&& function Me(a,b,c){var d,e="none";if(a.B)return null;a.B--;var f=new J(a,Y),h=new J(a,Y,"validate"),g=ta();M(h,"timestamp",g);M(f,"timestamp",g);M(f,"version","1.21.7");M(f,"url",window?window.location.href:null);M(f,"browser",Aa());a.b&&a.b.sa&&(c&&a.b.U(),d=a.b.sa(b,c),"object"===typeof d&&M(f,a.b.id,d),c&&(a.b.j.W=!1,!1===d&&(e=null)));for(var g=C(a.id),l=0;l<g.length;l++){var m=g[l];m.j.W&&(m.sa&&(d=m.sa(b,c),"object"===typeof d&&M(f,m.id,d)),c&&(m.j.W=!1,!1===d&&(e=null)))}e&&(c?(g=d=!1,b?(a.w&&
af(a,a.w,f.toString()),Oe(k)&&Oe(f)||(e=null,d=h=!0)):a.s&&(d=!0,h=3==a.s),d&&f.clear(h)):e=f.toString());c&&(a.j.W=!1,b=a.H.power)&&(b.textContent="Power");a.B=0;return e}g.reset=function(){this.A&&this.A.reset&&(db(this,"Resetting "+this.A.type),this.A.reset());for(var a=C(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.A&&c.reset&&(db(this,"Resetting "+c.type),c.reset())}}; bf(a,a.w,f.toString()),Pe(h)&&Pe(f)||(e=null,d=g=!0)):a.s&&(d=!0,g=3==a.s),d&&f.clear(g)):e=f.toString());c&&(a.j.W=!1,b=a.H.power)&&(b.textContent="Power");a.B=0;return e}k.reset=function(){this.A&&this.A.reset&&(fb(this,"Resetting "+this.A.type),this.A.reset());for(var a=C(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())}};
g.start=function(a,b){for(var c=C(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};g.stop=function(a,b){for(var c=C(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}}; k.start=function(a,b){for(var c=C(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};k.stop=function(a,b){for(var c=C(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
g.ka=function(a,b,c){var d=this;switch(b){case "power":return this.H[b]=c,c.onclick=function(){d.B||(d.j.W?Le(d,!1,!0):Xe(d,d.eb))},!0;case "reset":return this.H[b]=c,c.onclick=function(){if(d.j.W&&!d.B)if(d.s&&!d.K){var a=za("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Le(d,a,!0);!a&&d.T?window&&window.location.reload():d.eb(Ue)}else d.reset(),d.b&&nc(d.b)},!0;case "save":if(ka(xa(),"pcjs.org")){c.parentNode.removeChild(c);break}this.H[b]= k.la=function(a,b,c){var d=this;switch(b){case "power":return this.H[b]=c,c.onclick=function(){d.B||(d.j.W?Me(d,!1,!0):Ye(d,d.eb))},!0;case "reset":return this.H[b]=c,c.onclick=function(){if(d.j.W&&!d.B)if(d.s&&!d.L){var a=Ba("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Me(d,a,!0);!a&&d.T?window&&window.location.reload():d.eb(Ve)}else d.reset(),d.b&&pc(d.b)},!0;case "save":if(ia(za(),"pcjs.org")){c.parentNode.removeChild(c);break}this.H[b]=
c;c.onclick=function(){var a=Ve(d,!0);if(a){var b=!!(d.s&&!d.K||d.T),c=Le(d,b);b?af(d,a,c):d.fa("Resume disabled, machine state not saved")}};return!0}return!1}; c;c.onclick=function(){var a=We(d,!0);if(a){var b=!!(d.s&&!d.L||d.T),c=Me(d,b);b?bf(d,a,c):d.fa("Resume disabled, machine state not saved")}};return!0}return!1};
function Ve(a,b){var c=a.w;c||(c=Ca("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=bf(a,c))||a.fa("The user ID is invalid."))):b&&a.fa("Browser local storage is not available"));return c} function We(a,b){var c=a.w;c||(c=Ea("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=cf(a,c))||a.fa("The user ID is invalid."))):b&&a.fa("Browser local storage is not available"));return c}
function bf(a,b){a.w=null;var c=u(xa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Da("user",c.data),a.w=c.data)}catch(e){v(e.message+" ("+d+")")}return a.w}function We(a){var b=null;a.w&&(b=xa()+"/api/v1/user?req=load&user="+a.w+"&state="+Me(a,W));return b} function cf(a,b){a.w=null;var c=u(za()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(Fa("user",c.data),a.w=c.data)}catch(e){v(e.message+" ("+d+")")}return a.w}function Xe(a){var b=null;a.w&&(b=za()+"/api/v1/user?req=load&user="+a.w+"&state="+Ne(a,Y));return b}
function af(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Me(a,W);d.data=c;b=u(xa()+"/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.fa("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.fa(c),Da("user",""),a.w=null)}} function bf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Ne(a,Y);d.data=c;b=u(za()+"/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.fa("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.fa(c),Fa("user",""),a.w=null)}}
function wb(a,b,c){a=C(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}g.gb=function(){};g.la=function(a){this.b&&this.b.la(a);this.D&&this.D.la(a)};Qa(function(){for(var a=F(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=E(c),c=F(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],k=E(f),k=new Se(k,d,!0);cb(k,f);k.S&&Xe(k,k.eb)}}); function yb(a,b,c){a=C(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}k.gb=function(){};k.ma=function(a){this.b&&this.b.ma(a);this.F&&this.F.ma(a)};Sa(function(){for(var a=F(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=E(c),c=F(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=E(f),h=new Te(h,d,!0);eb(h,f);h.S&&Ye(h,h.eb)}});
Ka.show.push(function(){for(var a=F(document,"pc8080","computer"),b=0;b<a.length;b++){var c=E(a[b]);(c=bb("Computer",c.id))&&c.V&&!c.j.W&&c.eb(-1)}});Ka.exit.push(function(){for(var a=F(document,"pc8080","computer"),b=0;b<a.length;b++){var c=E(a[b]);(c=bb("Computer",c.id))&&c.j.W&&Le(c,!(!c.s||c.K),!0)}});var cf=0;function df(a,b,c,d,e,f){e("Loading "+a+"...");u(a,null,!0,function(k,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),f(h,null)):tf(h,a,b,c,d,e,f)})} Ja.show.push(function(){for(var a=F(document,"pc8080","computer"),b=0;b<a.length;b++){var c=E(a[b]);(c=db("Computer",c.id))&&c.V&&!c.j.W&&c.eb(-1)}});Ja.exit.push(function(){for(var a=F(document,"pc8080","computer"),b=0;b<a.length;b++){var c=E(a[b]);(c=db("Computer",c.id))&&c.j.W&&Me(c,!(!c.s||c.L),!0)}});var df=0;function ef(a,b,c,d,e,f){e("Loading "+a+"...");u(a,null,!0,function(h,g,l){l?(g||(g="unable to load "+a+" ("+l+")"),f(g,null)):uf(g,a,b,c,d,e,f)})}
function tf(a,b,c,d,e,f,k){function h(a,f){if(f)k(f,null);else{if(c){ab(c,b,a);var h=b;h&&0>h.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(h=window.location.pathname+h);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+h+'"}';"object"==typeof resources&&(h=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(h?' url="'+h+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2")); function uf(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){cb(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"));
h=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(h=new window.ActiveXObject("Microsoft.XMLDOM"),h.async=!1,h.loadXML(a)):h=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){h=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);k(a,h)}}a?e?uf(a,f,h):h(a,null):k("no data"+(b?" for file: "+b:""),null)} 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(r){g=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?vf(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
function uf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");u(e,null,!0,function(f,k,h){if(h||!k)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=k.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=l&&(k=k.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}k=k.replace(/<\?xml[^>]*>[\r\n]*/, function vf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");u(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=g[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)l=0>l.indexOf(m[1])?l.replace(">",m[0]+">"):l.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);g[0]!=l&&(h=h.replace(g[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,
"");a=a.replace(d[0],k);uf(a,b,c)}})}else c(a,null)} "");a=a.replace(d[0],h);vf(a,b,c)}})}else c(a,null)}
function vf(a,b,c,d){function e(a){if(void 0===h){var b=k&&F(k,"machine-warning");h=b&&b[0]||k}h&&(h.innerHTML=ma(a))}function f(a){e("Error: "+a);l&&(--cf||Sa(!0));l=!1}var k,h,l=!0;cf++;$a[a]={};try{if(k=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css";r.styleSheet?r.styleSheet.cssText=m:r.appendChild(document.createTextNode(m));p.appendChild(r)}c|| function wf(a,b,c,d){function e(a){if(void 0===g){var b=h&&F(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ka(a))}function f(a){e("Error: "+a);l&&(--df||Ua(!0));l=!1}var h,g,l=!0;df++;bb[a]={};try{if(h=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],r=document.createElement("style");r.type="text/css";r.styleSheet?r.styleSheet.cssText=m:r.appendChild(document.createTextNode(m));p.appendChild(r)}c||
(c="/versions/pc8080/1.21.7/components.xsl");m=function(d,h){h?df(c,null,null,!1,e,function(d,m){if(m)if(ab(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=h.transformNode(m);l?(k.outerHTML=l,--cf||Sa(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(m),(l=l.transformToFragment(h,document))?k.parentNode?(k.parentNode.replaceChild(l,k),--cf||Sa(!0)):f("invalid machine element: "+ (c="/versions/pc8080/1.21.7/components.xsl");m=function(d,g){g?ef(c,null,null,!1,e,function(d,m){if(m)if(cb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(m);l?(h.outerHTML=l,--df||Ua(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(m),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--df||Ua(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?df(b,a,d,!0,e,m):tf(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(t){f(t.message)}return l}window.embedPC8080=function(a,b,c,d){Sa(!1);return vf(a,b,c,d)};window.enableEvents=Sa;window.sendEvent=Ta; a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?ef(b,a,d,!0,e,m):uf(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(t){f(t.message)}return l}window.embedPC8080=function(a,b,c,d){Ua(!1);return wf(a,b,c,d)};window.enableEvents=Ua;window.sendEvent=Va;
function wf(a,b,c,d){if(!c&&b){d.push(b);a=$a[d[0]];b=null;for(var e in a)if(ka(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?u(b,null,!0,function(a,b){xf(b,d)}):xf(null,d)}else v("Error ("+c+") requesting "+a)} function xf(a,b,c,d){if(!c&&b){d.push(b);a=bb[d[0]];b=null;for(var e in a)if(ia(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?u(b,null,!0,function(a,b){yf(b,d)}):yf(null,d)}else v("Error ("+c+") requesting "+a)}
function xf(a,b){var c,d,e,f=b[0],k=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var h=$a[f],l={},m;for(m in h){var p=h[m],r=fa(m);if("xml"==r){for(r=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=r.exec(h[m]);){var t=d[2];t&&(h[t]||(p=p.replace(d[0],"")))}d=m=ea(m)}else"xsl"==r&&(e=m=ea(m));l[m]=p}a&&(l[m="css"]=a);b[2]&&(l[m="parms"]=b[2]);b[3]&&(l[m="state"]=b[3]);d&&e?(m=JSON.stringify(l),k+=".js",c=c[1]+"var resources="+m+";"+c[2]+c[3],c=c.replace(/\u00A9/g, function yf(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=bb[f],l={},m;for(m in g){var p=g[m],r=ha(m);if("xml"==r){for(r=/[ \t]*<disk [^>]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=r.exec(g[m]);){var t=d[2];t&&(g[t]||(p=p.replace(d[0],"")))}d=m=ga(m)}else"xsl"==r&&(e=m=ga(m));l[m]=p}a&&(l[m="css"]=a);b[2]&&(l[m="parms"]=b[2]);b[3]&&(l[m="state"]=b[3]);d&&e?(m=JSON.stringify(l),h+=".js",c=c[1]+"var resources="+m+";"+c[2]+c[3],c=c.replace(/\u00A9/g,
"&#xA9;"),m=k,h=null,l="data:application/javascript,",l=Ea("Firefox")?l+encodeURIComponent(c):l+encodeURI(c),m&&(h=document.createElement("a"),"string"!=typeof h.download&&(h=null)),h?(h.href=l,h.download=m,document.body.appendChild(h),h.click(),document.body.removeChild(h),c="Check your Downloads folder for "+m+"."):(window.open(l),c="Check your browser for a new window/tab containing the requested data"+(m?" ("+m+")":"")+"."),c+=', copy it to your web server as "'+k+'", and then add the following to your web page:\n\n', "&#xA9;"),m=h,g=null,l="data:application/javascript,",l=Ga("Firefox")?l+encodeURIComponent(c):l+encodeURI(c),m&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=l,g.download=m,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+m+"."):(window.open(l),c="Check your browser for a new window/tab containing the requested data"+(m?" ("+m+")":"")+"."),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="'+k+'">\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.",v(c)):v("Missing XML/XSL resources")} 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.",v(c)):v("Missing XML/XSL resources")}
window.savePC=function(a,b,c){var d=bb("Computer",a),e=bb("Debugger",a);if(d){var f=Le(d,!0),k=d.J?JSON.stringify(d.J):null;b||(b="/versions/pcjs/1.21.7/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Lb:k}))return!0;u(b,null,!0,function(c,d,e){wf(c,d,e,[a,ea(b,!0),k,f])});return!0}v("Unable to identify machine '"+a+"'");return!1};})(); window.savePC=function(a,b,c){var d=db("Computer",a),e=db("Debugger",a);if(d){var f=Me(d,!0),h=d.J?JSON.stringify(d.J):null;b||(b="/versions/pcjs/1.21.7/pc"+(e?"-dbg":"")+".js");if(c&&c({state:f,Lb:h}))return!0;u(b,null,!0,function(c,d,e){xf(c,d,e,[a,ga(b,!0),h,f])});return!0}v("Unable to identify machine '"+a+"'");return!1};})();

View file

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