Converted PC8080 to ES6

This commit is contained in:
Jeff Parsons 2016-12-28 10:03:58 -08:00 committed by Jeff Parsons
commit 0f680839f7
27 changed files with 11054 additions and 10896 deletions

View file

@ -1,18 +1,17 @@
(function(){/*
http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/dumpapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/reportapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/userapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/keys.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/strlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/weblib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpudef.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/messages.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/state.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/embed.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/defines.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/usrlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/component.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/defines.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/panel.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/bus.js (C) Jeff Parsons 2012-2016
@ -26,265 +25,265 @@
http://pcjs.org/modules/pc8080/lib/keyboard.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/video.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/serialport.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2016
*/
var l,n={qe:0,te:1,ue:2,ve:3,we:4,xe:5,ye:6,ze:7,Ae:8,Be:9,Ce:10,De:11,Ee:12,Fe:13,Ge:14,He:15,Ie:16,Je:17,Ke:18,Le:19,Me:20,Ne:21,Oe:22,Pe:23,Qe:24,Re:25,Se:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Eb:65,Mc:66,Oc:67,bc:68,E:69,Rc:70,Sc:71,Tc:72,Uc:73,ad:74,bd:75,dc:76,jd:77,kd:78,md:79,nd:80,Q:81,td:82,wd:83,Cd:84,Dd:85,Ed:86,Fd:87,
Hd:88,Id:89,Pb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Jd:97,Bf:98,Cf:99,d:100,e:101,Df:102,Ef:103,Ff:104,Gf:105,Hf:106,k:107,If:108,Jf:109,n:110,Kf:111,p:112,q:113,r:114,Lf:115,t:116,Nf:117,Of:118,Pf:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Te:127};
function aa(a,b){var c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):2==e&&
d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function ba(a,b,c){var d="";b?11<b&&(b=11):b=a&-16777216?11:a&-65536?8:6;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;)d=String.fromCharCode((a&7)+48)+d,a>>=3;return(c?"0o":"")+d}function t(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}
function ca(a){return t(a,2,!0)}function v(a){return t(a,4,!0)}function da(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function fa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function ga(){var a=ia();return-1!==a.indexOf("pcjs.org",a.length-8)}var ka={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function la(a){return a.replace(/[&<>"']/g,function(a){return ka[a]})}
function ma(a,b){return(a+" ").slice(0,b)}function na(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var oa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"};
function pa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var g=d+e>>1,h;h=c(b,a[g]);0<h?d=g+1:(e=g,f=!h)}return f?d:~d}var qa=Date.now||function(){return+new Date};function ra(){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 sa(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 ta(a,b,c,d){var e=0,f=null,g=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)}),g;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"==
typeof b){var k="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encodeURIComponent(b[m]));k=k.replace(/%20/g,"+");h.open("POST",a,!!c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}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),g=[f,e]);return g}
function ua(a,b){var c,d={Ba:null,Fa:null,$a:null,Sa:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.$a=g.load;d.Sa=g.exec;if(e=g.bytes)d.Ba=e;else if(e=g.words)for(d.Ba=Array(2*e.length),f=c=0;c<e.length;c++)d.Ba[f++]=e[c]&255,d.Ba[f++]=e[c]>>8&255;else if(e=g.data)for(d.Ba=Array(4*e.length),f=c=0;c<e.length;c++)d.Ba[f++]=
e[c]&255,d.Ba[f++]=e[c]>>8&255,d.Ba[f++]=e[c]>>16&255,d.Ba[f++]=e[c]>>24&255;else d.Ba=g;d.Fa=g.symbols;d.Ba.length?1==d.Ba.length&&(w(d.Ba[0]),d=null):(w("Empty resource: "+a),d=null)}catch(h){w("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){w("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.Ba=e)}return d}
function ia(){return"http://"+(window?window.location.host:"www.pcjs.org")}function xa(){return window?window.navigator.userAgent:""}function w(a){window&&window.alert(a)}function ya(a){var b=!1;window&&(b=window.confirm(a));return b}var za=null;
function Aa(){if(null==za){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}za=a}return za}function Ba(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function Ca(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}
function Da(a){if(window){var b=xa();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 Ea(a){if(!Fa){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}Fa=c}return Fa[a]}function Ga(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function Ka(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 Fa=null,La={init:[],show:[],exit:[]},Ma=!1,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){La.init.push(a)}function Ra(a){if(Oa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Ta("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Ua(a){!Oa&&a?(Oa=!0,Ma&&Va("init"),Na&&Va("show")):Oa=a}function Va(a){La[a]&&Ra(La[a])}Pa("onload",function(){Ma=!0;Ra(La.init)});Pa("onpageshow",function(){Na=!0;Ra(La.show)});Pa(Da("Opera")||Da("iOS")?"onunload":"onbeforeunload",function(){Ra(La.exit)});
function x(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.jc=b.comment;this.Qd=b;b=this.id.indexOf(".");0>b?this.fb=this.id:(this.gb=this.id.substr(0,b),this.fb=this.id.substr(b+1));this[a]=c;this.C={ready:!1,wb:!1,Qb:!1,xa:!1,error:!1};this.Ib=null;this.C.error=!1;this.M={};this.H=null;this.sa=d||0;Wa.push(this)}
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}function A(a,b){b||(b=x);a.prototype=Xa(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Ya=window.PCjs.Machines||(window.PCjs.Machines={}),Wa=window.PCjs.Components||(window.PCjs.Components=[])}else Ya={},Wa=[];
function Za(a,b,c){Ya[a]&&b&&(Ya[a][b]=c)}function Ta(a,b,c){b||w((c?c+": ":"")+a)}function ab(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Wa.length;b++){var d=Wa[b];a&&d.id.indexOf(a)||c.push(d)}return c}function bb(a){if(void 0!==a){var b;for(b=0;b<Wa.length;b++)if(Wa[b].id===a)return Wa[b]}return null}
function cb(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<Wa.length;d++)if(c)c==Wa[d]&&(c=null);else if(!(a!=Wa[d].type||b&&Wa[d].id.indexOf(b)))return Wa[d]}return null}function B(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){w(c.message+" ("+a+")")}return b}
function db(a,b){b=D(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),k=0;k<h.length;k++)switch(g=h[k],g){case "pc8080-binding":(g=B(f))&&g.binding&&a.pa(g.type,g.binding,f,g.value),k=h.length}}}}
function D(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
x.prototype={constructor:x,parent:null,toString:function(){return this.name?this.name:this.id||this.type},pa:function(a,b,c){switch(b){case "clear":return this.M[b]||(this.M[b]=c,c.onclick=function(a){return function(){a.M.print&&(a.M.print.value="")}}(this)),!0;case "print":return this.M[b]||(this.Ia=this.M[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.ja=function(a){this.g(a,this.fb)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.fb+": "+a)},ja:function(a,b,c){Ta(a,b,c||this.type)},Ga:function(){return this.C.xa=!0},Ka:function(a,b){b&&(this.C.xa=!1);return!0}};function E(a,b,c,d,e,f,g){a.H&&(!0===g?g=0:null==g&&(g=a.sa),eb(a.H,a,b,c,d,e,f,g))}function fb(a,b){a.H&&gb(a,0)&&a.H.message(b,void 0)}function gb(a,b){if(a.H){a===a.H?b|=0:b=b||a.sa;var c=a.H.sa&b;return!!b&&c===b||!!(c&a.H.Nd)}return!1}
function hb(a,b){if(a.C.Qb)return a.C.wb=!1,a.C.Qb=!1;if(a.C.error)return a.g(a.toString()+" error"),!1;a.C.wb=b;return a.C.wb}function ib(a,b){a.C.wb&&(b?a.C.Qb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.C.wb}function F(a){if(!a.C.error&&(a.C.ready=!0,a.C.ready)){var b=a.Ib;a.Ib=null;b&&b()}}function jb(a,b){b&&(a.C.ready?b():a.Ib=b);return a.C.ready}function kb(a,b){a.C.error=!0;a.ja(b)}
Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
var k;function ba(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}
var m={le:0,oe:1,pe:2,qe:3,re:4,se:5,te:6,ue:7,ve:8,we:9,xe:10,ye:11,ze:12,Ae:13,Be:14,Ce:15,De:16,Ee:17,Fe:18,Ge:19,He:20,Ie:21,Je:22,Ke:23,Le:24,Me:25,Ne:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,pb:65,rc:66,tc:67,Rb:68,E:69,xc:70,yc:71,zc:72,Ac:73,Hc:74,Ic:75,Ub:76,Pc:77,Qc:78,Sc:79,Tc:80,Q:81,Zc:82,bd:83,hd:84,jd:85,kd:86,ld:87,
nd:88,od:89,Db:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,pd:97,wf:98,xf:99,d:100,e:101,yf:102,zf:103,Af:104,Bf:105,Cf:106,k:107,Df:108,Ef:109,n:110,Ff:111,p:112,q:113,r:114,Gf:115,t:116,If:117,Jf:118,Kf:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Oe:127};
function ca(a,b){var c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):2==e&&
d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function da(a,b,c){var d="";b?11<b&&(b=11):b=a&-16777216?11:a&-65536?8:6;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;)d=String.fromCharCode((a&7)+48)+d,a>>=3;return(c?"0o":"")+d}function n(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}
function ea(a){return n(a,2,!0)}function q(a){return n(a,4,!0)}function fa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function ga(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function ha(){var a=ja();return-1!==a.indexOf("pcjs.org",a.length-8)}function ka(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,"")}var la={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"},pa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"};
function qa(a,b,c){var d=0,e=a.length,f=0;for(c||(c=function(a,b){return a>b?1:a<b?-1:0});d<e;){var g=d+e>>1,h;h=c(b,a[g]);0<h?d=g+1:(e=g,f=!h)}return f?d:~d}function ra(){return Date.now()||+new Date}function sa(){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 ua(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 va(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=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)}),g;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"==typeof b){var l="",p;for(p in b)b.hasOwnProperty(p)&&(l&&(l+="&"),l+=p+"="+encodeURIComponent(b[p]));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),g=[f,e]);return g}
function wa(a,b){var c,d={ma:null,ra:null,Qa:null,Ia:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Qa=g.load;d.Ia=g.exec;if(e=g.bytes)d.ma=e;else if(e=g.words)for(d.ma=Array(2*e.length),f=c=0;c<e.length;c++)d.ma[f++]=e[c]&255,d.ma[f++]=e[c]>>8&255;else if(e=g.data)for(d.ma=Array(4*e.length),f=c=0;c<e.length;c++)d.ma[f++]=
e[c]&255,d.ma[f++]=e[c]>>8&255,d.ma[f++]=e[c]>>16&255,d.ma[f++]=e[c]>>24&255;else d.ma=g;d.ra=g.symbols;d.ma.length?1==d.ma.length&&(v(d.ma[0]),d=null):(v("Empty resource: "+a),d=null)}catch(h){v("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){v("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.ma=e)}return d}
function ja(){return"http://"+(window?window.location.host:"www.pcjs.org")}function xa(){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}
function Ba(){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 Da(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function Ea(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}
function Fa(a){if(window){var b=xa();return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}function Ga(a){if(!Ha){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}Ha=c}return Ha[a]}function Ia(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function Ja(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}}function Ka(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Na(a){Oa.init.push(a)}
function Pa(a){if(Qa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Ra("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Sa(a){!Qa&&a?(Qa=!0,Ta&&Ua("init"),Va&&Ua("show")):Qa=a}function Ua(a){Oa[a]&&Pa(Oa[a])}var Ha=null,Oa={init:[],show:[],exit:[]},Ta=!1,Va=!1,Qa=!0,Ca=null;Ka("onload",function(){Ta=!0;Pa(Oa.init)});Ka("onpageshow",function(){Va=!0;Pa(Oa.show)});
Ka(Fa("Opera")||Fa("iOS")?"onunload":"onbeforeunload",function(){Pa(Oa.exit)});function x(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.bc=b.comment;this.wd=b;this.exports={};a=this.id.indexOf(".");0>a?this.$a=this.id:(this.ab=this.id.substr(0,a),this.$a=this.id.substr(a+1));this.G={ready:!1,jb:!1,Eb:!1,ja:!1,error:!1};this.vb=null;this.G.error=!1;this.P={};this.ha=d||0;this.K=this.u=this.H=this.S=this.ta=null;Wa.push(this)}
function $a(a,b,c){ab[a]&&b&&(ab[a][b]=c)}function Ra(a,b,c){b||v((c?c+": ":"")+a)}function bb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Wa.length;b++){var d=Wa[b];a&&d.id.indexOf(a)||c.push(d)}return c}function cb(a){if(void 0!==a){var b;for(b=0;b<Wa.length;b++)if(Wa[b].id===a)return Wa[b]}return null}
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<Wa.length;d++)if(c)c==Wa[d]&&(c=null);else if(!(a!=Wa[d].type||b&&Wa[d].id.indexOf(b)))return Wa[d]}return null}function eb(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){v(c.message+" ("+a+")")}return b}
function fb(a,b){b=gb(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),l=0;l<h.length;l++)switch(g=h[l],g){case "pc8080-binding":(g=eb(f))&&g.binding&&a.ca(g.type,g.binding,f,g.value),l=h.length}}}}
function gb(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}k=x.prototype;k.toString=function(){return this.name?this.name:this.id||this.type};
k.ca=function(a,b,c){switch(b){case "clear":return this.P[b]||(this.P[b]=c,c.onclick=function(a){return function(){a.P.print&&(a.P.print.value="")}}(this)),!0;case "print":return this.P[b]||(this.ta=this.P[b]=c,c.value="",this.i=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),this.aa=function(a){this.i(a,this.$a)}),!0;default:return!1}};k.log=function(){};k.i=function(){};
k.status=function(a){this.i(this.$a+": "+a)};k.aa=function(a,b,c){Ra(a,b,c||this.type)};function hb(a,b){a.G.error=!0;a.aa(b)}function ib(a,b){b&&(a.G.ready?b():a.vb=b);return a.G.ready}function kb(a){if(!a.G.error&&(a.G.ready=!0,a.G.ready)){var b=a.vb;a.vb=null;b&&b()}}function lb(a,b){a.G.jb&&(b?a.G.Eb=!0:void 0===b&&a.i(a.toString()+" busy"));return a.G.jb}function mb(a,b){if(a.G.Eb)return a.G.jb=!1,a.G.Eb=!1;if(a.G.error)return a.i(a.toString()+" error"),!1;a.G.jb=b;return a.G.jb}
k.ua=function(){return this.G.ja=!0};k.wa=function(a,b){b&&(this.G.ja=!1);return!0};function nb(a,b){if(a.K){a===a.K?b|=0:b=b||a.ha;var c=a.K.ha&b;return!!b&&c===b||!!(c&a.K.td)}return!1}function ob(a,b){a.K&&nb(a,0)&&a.K.message(b,void 0)}function y(a,b,c,d,e,f,g){a.K&&(!0===g?g=0:null==g&&(g=a.ha),pb(a.K,a,b,c,d,e,f,g))}window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]));
var ab=window?window.PCjs.Machines:{},Wa=window?window.PCjs.Components:[];Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
Function.prototype.bind||(Function.prototype.bind=function(a){function b(){return e.apply(this instanceof c&&a?this:a,d.concat(Array.prototype.slice.call(arguments)))}function c(){}if("function"!=typeof this)throw new TypeError("Function.prototype.bind: non-callable object");var d=Array.prototype.slice.call(arguments,1),e=this;c.prototype=this.prototype;b.prototype=new c;return b});
var lb="undefined"!==typeof ArrayBuffer,mb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1],nb={cpu:1,bus:64,mem:128,port:256,nvr:16384,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function ob(a){x.call(this,"Panel",a,ob)}A(ob);l=ob.prototype;
l.pa=function(a,b,c,d){return this.A&&this.A.pa(a,b,c,d)||this.b&&this.b.pa(a,b,c,d)||this.I&&this.I.pa(a,b,c,d)||this.H&&this.H.pa(a,b,c,d)?!0:this.parent.pa.call(this,a,b,c,d)};l.Qa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.H=d;this.I=rb(a,"Keyboard")};l.Ga=function(a,b){b||sb();return!0};l.Ka=function(){return!0};l.Aa=function(){};function sb(){for(var a=!1,b=D(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=B(d),f=bb(e.id);f||(a=!0,f=new ob(e));db(f,d);a&&F(f)}}Qa(sb);
function tb(a,b,c){x.call(this,"Bus",a,tb);this.b=b;this.H=c;this.J=a.busWidth||16;this.K=Math.pow(2,this.J);this.u=this.K-1|0;this.ha=(this.J>>1)+2;10>this.ha&&(this.ha=10);15<this.ha&&(this.ha=15);this.Ja=1<<this.ha;this.L=this.Ja>>2;this.w=this.Ja-1;this.I=this.K/this.Ja|0;this.D=this.I-1;this.A=[];this.j=[];this.F=this.B=!1;this.N=[];this.O=[];a=new G;ub(a,this.H);this.W=Array(this.I);for(b=0;b<this.I;b++)this.W[b]=a;F(this)}A(tb);l=tb.prototype;l.reset=function(){};
l.Ga=function(a,b){b||this.reset();return!0};function vb(a,b,c,d){for(var e=b,f=c,g=e>>>a.ha;0<f&&g<a.W.length;){var h=a.W[g],k=g*a.Ja,m=a.Ja-(e-k);m>f&&(m=f);if(h&&h.size){if(h.type==d){if(e+f<=h.G)return h.Cb+=h.G-e,h.G=e,!0;if(e>=h.G+h.Cb){m=h.size-(e-k);m>f&&(m=f);h.Cb=e-h.G+m;e=k+a.Ja;f-=m;g++;continue}}return wb(1,e,f)}e=new G(e,m,a.Ja,d);ub(e,a.H,h);a.W[g++]=e;e=k+a.Ja;f-=m}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+xb[d]+" at "+v(b)),!0):wb(2,b,c)}
l.Z=function(a){return this.W[(a&this.u)>>>this.ha].nb(a&this.w,a)};function yb(a,b){return a.W[(b&a.u)>>>a.ha].Ab(b&a.w,b)}l.ab=function(a){var b=a&this.w,c=(a&this.u)>>>this.ha;return b!=this.w?this.W[c].Fc(b,a):this.W[c++].nb(b,a)|this.W[c&this.D].nb(0,a+1)<<8};function zb(a,b){var c=b&a.w,d=(b&a.u)>>>a.ha;return c!=a.w?a.W[d].Vb(c,b):a.W[d++].Ab(c,b)|a.W[d&a.D].Ab(0,b+1)<<8}l.ua=function(a,b){this.W[(a&this.u)>>>this.ha].pb(a&this.w,b&255,a)};
function Ab(a,b,c){a.W[(b&a.u)>>>a.ha].Db(b&a.w,c&255,b)}l.Mb=function(a,b){var c=a&this.w,d=(a&this.u)>>>this.ha;c!=this.w?this.W[d].Hc(c,b&65535,a):(this.W[d++].pb(c,b&255,a),this.W[d&this.D].pb(0,b>>8&255,a+1))};function Bb(a){for(var b=0,c=[],d=0;d<a.I;d++){var e=a.W[d];if(e.Oa||e.Cc){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,k=[];g<e.length;){for(var m=e[g],p=g+1;p<e.length&&e[p]===m;)p++;k[h++]=p-g;k[h++]=m;g=p}k.length<e.length&&(e=k)}c[f]=e}}return c}
function Cb(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}function Db(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var k=+e+d;k<=g;k++)void 0!==f.A[k]?w("Input port "+v(k)+" already registered"):f.A[k]=[h,!1]}}
function Eb(a,b,c){for(var d=1,e=0,f=0;0<d;){var g=a.A[b],h=a.N[b]||1,k=1==h?255:2==h?65535:-1,m=k;void 0!==g?(g[0]&&(m=g[0](b,c),void 0===m?m=k:m&=k),a.H&&a.F!=g[1]&&Fb(a.H,b,m)):a.H&&(eb(a.H,a,b,null,c),a.F&&Fb(a.H,b,m));e|=m<<f;f+=h<<3;b+=h;d-=h}return e}function Hb(a,b){if(void 0===b)return a.B=!a.B,a.B;void 0===a.j[b]&&(a.j[b]=[null,!1]);a.j[b][1]=!a.j[b][1];return a.j[b][1]}
function Ib(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var k=+e+d;k<=g;k++)void 0!==f.j[k]?w("Output port "+v(k)+" already registered"):f.j[k]=[h,!1]}}function Jb(a,b,c,d){for(var e=1,f=0;0<e;){var g=a.j[b],h=a.O[b]||1,k=1==h?255:2==h?65535:-1,k=(c>>>=f)&k;if(void 0!==g){if(g[0])g[0](b,k,d);a.H&&a.B!=g[1]&&Tb(a.H,b,k)}else a.H&&(eb(a.H,a,b,k,d),a.B&&Tb(a.H,b,k));f+=h<<3;b+=h;e-=h}}
function wb(a,b,c){w("Memory block error ("+a+": "+t(b)+","+t(c)+")");return!1}var Ub;if(lb){var Vb=new ArrayBuffer(2);(new DataView(Vb)).setUint16(0,256,!0);Ub=256===(new Uint16Array(Vb))[0]}else Ub=!1;var Wb=Ub;
function G(a,b,c,d){this.id=Xb+=2;this.b=null;this.G=a;this.Cb=b;this.size=c||0;this.type=d||Yb;this.M=d==Zb;ub(this);this.Oa=this.Cc=!1;if(c)if(lb)this.F=new ArrayBuffer(c),this.B=new DataView(this.F,0,c),this.w=new Uint8Array(this.F,0,c),this.I=new Uint16Array(this.F,0,c>>1),this.b=new Int32Array(this.F,0,c>>2),$b(this,Wb?ac:bc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;$b(this,cc)}else $b(this)}var Yb=0,Zb=2,xb=["NONE","RAM","ROM","VID","H/W"],Xb=0;
G.prototype={constructor:G,parent:null,save:function(){var a,b;if(lb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.B.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(lb)for(b=0;b<a.length;b++)this.B.setInt32(b<<2,a[b],!0);else this.b=a;return this.Oa=!0}return!1},Za:function(a,b){b?this.j++||dc(this,ec,!1):this.A++||fc(this,ec,!1)},J:function(){this.H&&gb(this.H,129)&&this.H.message("attempt to read invalid block %"+t(this.G),!0);return 255},
u:function(a,b){this.H&&gb(this.H,129)&&this.H.message("attempt to write "+v(b)+" to invalid block %"+t(this.G),!0)},K:function(a,b){return this.nb(a++,b++)|this.nb(a,b)<<8},D:function(a,b,c){this.pb(a++,b&255,c++);this.pb(a,b>>8,c)},X:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ea: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},gb:function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<<a)|b<<a;this.Oa=!0},va:function(a,b){var c=a>>
2;a=(a&3)<<3;24>a?this.b[c]=this.b[c]&~(65535<<a)|b<<a:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Oa=!0},N:function(a,b){if(this.H&&null!=this.G){var c=this.H;gc(c,this.G+a,1,c.N)&&c.qa(!0)}return this.Ab(a,b)},ba:function(a,b){if(this.H&&null!=this.G){var c=this.H;gc(c,this.G+a,2,c.N)&&c.qa(!0)}return this.Vb(a,b)},ia:function(a,b,c){if(this.H&&null!=this.G){var d=this.H;gc(d,this.G+a,1,d.B)&&d.qa(!0)}this.M?this.u(a,b,c):this.Db(a,b,c)},la:function(a,b,c){if(this.H&&
null!=this.G){var d=this.H;gc(d,this.G+a,2,d.B)&&d.qa(!0)}this.M?this.u(a,b,c):this.Zb(a,b,c)},L:function(a){return this.w[a]},O:function(a){return this.w[a]},aa:function(a){return this.B.getUint16(a,!0)},da:function(a){return a&1?this.w[a]|this.w[a+1]<<8:this.I[a>>1]},ga:function(a,b){this.w[a]=b;this.Oa=!0},fb:function(a,b){this.w[a]=b;this.Oa=!0},ka:function(a,b){this.B.setUint16(a,b,!0);this.Oa=!0},ma:function(a,b){a&1?(this.w[a]=b,this.w[a+1]=b>>8):this.I[a>>1]=b;this.Oa=!0}};
function ub(a,b,c){a.H=b;a.A=a.j=0;c&&((a.A=c.A)&&fc(a,ec,!1),(a.j=c.j)&&dc(a,ec,!1))}function hc(a,b){b?--a.j||(a.pb=a.M?a.u:a.Db,a.Hc=a.M?a.D:a.Zb):--a.A||(a.nb=a.Ab,a.Fc=a.Vb)}function dc(a,b,c){c&&a.j||(a.pb=!a.M&&b[1]||a.u,a.Hc=!a.M&&b[3]||a.D);if(c||void 0===c)a.Db=b[1]||a.u,a.Zb=b[3]||a.D}function fc(a,b,c){c&&a.A||(a.nb=b[0]||a.J,a.Fc=b[2]||a.K);if(c||void 0===c)a.Ab=b[0]||a.J,a.Vb=b[2]||a.K}function $b(a,b){b||(b=ic);fc(a,b,void 0);dc(a,b,void 0)}
var ic=[],cc=[G.prototype.X,G.prototype.gb,G.prototype.ea,G.prototype.va],ec=[G.prototype.N,G.prototype.ia,G.prototype.ba,G.prototype.la];if(lb)var bc=[G.prototype.L,G.prototype.ga,G.prototype.aa,G.prototype.ka],ac=[G.prototype.O,G.prototype.fb,G.prototype.da,G.prototype.ma];
function jc(a,b){x.call(this,"CPU",a,jc,1);var c=a.multiplier||1;this.X=a.cycles||b;this.Ra=c;this.ga=Math.round(this.X/1E4)/100;this.bb=this.ga*this.Ra;this.C.za=!1;this.C.Yb=!1;this.C.vb=a.autoStart;this.C.Ac=!1;this.C.jb=!1;this.xb=this.N=0;this.yb=a.csStart;this.lb=a.csInterval;this.mb=a.csStop;this.u=[];this.Ha=this.cb.bind(this);F(this)}A(jc);var kc=["power","reset"];l=jc.prototype;
l.Qa=function(a,b,c,d){this.A=a;this.w=b;this.H=d;for(b=0;b<kc.length;b++)(c=this.M[kc[b]])&&this.A.pa(null,kc[b],c);this.F=rb(a,"ChipSet");a=lc(a,"autoStart");null!=a&&(this.C.vb="true"==a?!0:"false"==a?!1:!!a);F(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};
l.Ga=function(a,b){if(!b){if(a&&this.restore){mc(this);if(!this.restore(a))return!1;nc(this)}else this.reset();this.H?(a=this.H,a.g("Type ? for help with PC8080 Debugger commands"),a.Aa(),a.Ca&&(b=a.Ca,a.Ca=null,oc(a,b))):this.g("No debugger detected")}pc(this);return!0};l.Ka=function(a){return a?this.save():!0};l.vb=function(){return this.C.vb||!this.H&&void 0===this.M.run?(this.cb(),!0):!1};l.Dc=function(){return 0};
function nc(a){void 0===a.yb&&(a.yb=0);void 0===a.lb&&(a.lb=-1);void 0===a.mb&&(a.mb=-1);a.C.jb=0<=a.yb&&0<a.lb;a.C.jb&&(a.xb=0,a.N=a.yb-a.L)}function qc(a,b){if(a.C.jb){var c=!1;a.xb=a.xb+a.Dc()|0;a.N-=b;0>=a.N&&(a.N+=a.lb,c=!0);0<=a.mb&&a.mb<=Dc(a)&&(a.lb=a.mb=-1,nc(a),a.qa(),c=!0);c&&a.g(Dc(a)+" cycles: checksum="+t(a.xb))}}
l.pa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.M[b]=c;a=!0;break;case "run":this.M[b]=c;c.onclick=function(){var a;if(a=d.A)if(a=d.A,a.C.xa)a=!0;else{var b=null,c,h=ab(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.C.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.C.xa);c++);c==h.length&&(b=a);w("The "+b.type+" component ("+b.id+") is not "+(b.C.ready?"powered yet":"ready yet"+(b.Ib?" (waiting for notification)":""))+".");a=!1}a&&(d.C.za?d.qa():d.cb())};
a=!0;break;case "speed":this.M[b]=c;a=!0;break;case "setSpeed":this.M[b]=c,c.onclick=function(){Ec(d,d.Ra<<1,!0)},c.textContent=this.bb.toFixed(2)+"Mhz",a=!0}return a};function Fc(a,b,c){a.L+=b;c&&(a.K=a.b=0)}function Gc(a,b){var c=1;b&&1<a.Ra&&a.I&&(c=a.I/a.ga);a.va=Math.round(1E3/30);a.ea=Math.floor(a.X/30*c);b||(a.O=a.ea);a.ia=0}function Dc(a){return a.L+a.D+a.K-a.b}function mc(a){a.I=0;a.Ca=0;a.L=a.D=a.K=a.b=0;nc(a);Ec(a,1)}
function Ec(a,b,c){var d=!1;if(void 0!==b){.8>a.I/a.bb?b=1:d=!0;a.Ra=b;b=a.ga*a.Ra;if(a.bb!=b){a.bb=b;b=a.bb.toFixed(2)+"Mhz";var e=a.M.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.A&&a.A.Bb()}Fc(a,a.D);a.D=0;a.B=qa();a.J=0;Gc(a);return d}function Hc(a,b){var c=a.u.length;a.u.push([-1,b]);return c}function Ic(a,b,c){0<=b&&b<a.u.length&&0>a.u[b][0]&&(c*=a.X*a.Ra/1E3,a.u[b][0]=c+Jc(a))}function Jc(a,b){var c=a.K-=a.b;a.b=0;b&&(a.K=0);return c}
l.cb=function(a){if(hb(this,!0)){if(!this.C.za){Ec(this);this.A&&this.A.start(this.B,Dc(this));this.C.za=!0;this.C.Yb=!0;this.F&&this.F.start();var b=this.M.run;b&&(b.textContent="Halt");this.A&&(this.A.Aa(!0),a&&this.A.Bb(!0))}this.ia>=this.X&&Gc(this,!0);this.aa=0;this.da=qa();this.J&&(a=this.da-this.J,a>this.va&&(this.B+=a,this.B>this.da&&(this.B=this.da)));try{do{for(var c,d=this.C.jb?1:this.ea,e=this.u.length-1;0<=e;e--){var f=this.u[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.ob(c);c=Jc(this,!0);this.aa+=
c;this.D+=c;qc(this,c);a=c;for(var g=this.u.length-1;0<=g;g--){var h=this.u[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.O-=c;if(0>=this.O){this.O+=this.ea;15<=++this.Ca&&(this.A&&this.A.Aa(),this.Ca=0);break}}while(this.C.za)}catch(k){this.qa();pc(this);this.A&&this.A.stop(qa(),Dc(this));hb(this,!1);kb(this,k.stack||k.message);return}c=setTimeout;d=this.Ha;this.J=qa();e=this.va;this.aa&&(e=Math.round(e*this.aa/this.ea));e-=this.J-this.da;if(f=this.J-this.B)this.I=Math.round(this.D/(10*f))/
100,864E5<=f&&(this.L=0,Ec(this));if(0>e||this.I<this.bb)-1E3>e&&(this.B-=e),e=0;this.ia+=this.aa;this.J+=e;c(d,e)}else pc(this),this.A&&this.A.stop(qa(),Dc(this))};l.ob=function(){return 0};l.qa=function(a){ib(this,!0);Jc(this);Fc(this,this.D);this.D=0;if(this.C.za){this.C.za=!1;this.F&&this.F.stop();var b=this.M.run;b&&(b.textContent="Run")}this.C.complete=a};function pc(a,b){if(a.A){for(var c=a.A,d=0;d<c.D.length;d++)Kc(c.D[d],b);a.A.Aa(b)}}
function Lc(a){this.ae=+a.model||8080;jc.call(this,a,1E6);this.ka=Mc;mc(this);this.C.complete=this.C.Pd=!1;this.ma=0;this.ba=[];this.la=0;Nc(this)}A(Lc,jc);function Oc(a,b){a.ba.push(b)}l=Lc.prototype;l.reset=function(){this.C.za&&this.qa();Nc(this);mc(this);this.C.error=!1;this.parent.reset.call(this)};function Nc(a){a.i=0;a.R=0;a.S=0;a.T=0;a.U=0;a.V=0;a.Y=0;a.oa=0;I(a,a.la);Pc(a,0);a.j=0}function Qc(a,b){a.la=b;I(a,b)}
l.Dc=function(){var a=this.i+this.R+this.S+this.T+this.U+this.V+this.Y|0;return a=a+this.oa+this.P+Rc(this)|0};l.save=function(){var a=new Sc(this);a.set(0,[this.i,this.R,this.S,this.T,this.U,this.V,this.Y,this.oa,this.P,Rc(this)]);a.set(1,[this.j,this.L,this.Ra]);a.set(2,Bb(this.w));return a.data()};
l.restore=function(a){var b=a[0];this.i=b[0];this.R=b[1];this.S=b[2];this.T=b[3];this.U=b[4];this.V=b[5];this.Y=b[6];this.oa=b[7]&65535;I(this,b[8]);Pc(this,b[9]);b=a[1];this.j=b[0];this.L=b[1];Ec(this,b[3]);a:{b=this.w;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.L){for(var f=0,g=Array(b.L),h=0;h<e.length-1;)for(var k=e[h++],m=e[h++];k--;)g[f++]=m;e=g}f=b.W[d];if(!f||!f.restore(e)){w("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
l.pa=function(a,b,c){switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.M[b]=c;this.ma++;a=!0;break;default:a=this.parent.pa.call(this,a,b,c)}return a};function Tc(a){return a.R<<8|a.S}function Uc(a,b){a.R=b>>8&255;a.S=b&255}function Vc(a){return a.T<<8|a.U}function Wc(a,b){a.T=b>>8&255;a.U=b&255}function J(a){return a.V<<8|a.Y}
function Xc(a,b){a.V=b>>8&255;a.Y=b&255}function I(a,b){a.P=b&65535}function Yc(a){return a.ca&256?1:0}function Zc(a,b){a.ca=a.ca&255|b}function $c(a){return mb[a.fa&255]?4:0}function ad(a){return(a.fa^a.ya)&16?16:0}function bd(a){return a.ca&255?0:64}function cd(a){return a.fa&128?128:0}function Rc(a){return a.ta&-214|cd(a)|bd(a)|ad(a)|$c(a)|Yc(a)}function Pc(a,b){a.ca=a.fa=a.ya=0;b&1&&(a.ca|=256);b&4||(a.fa|=1);b&16&&(a.ya|=16);b&64||(a.ca|=255);b&128&&(a.fa^=192);a.ta=a.ta&-726|b&512|2}
function dd(a,b){a.ya=a.i^b;return a.fa=(a.ca=a.i+b)&255}function ed(a,b){a.ya=a.i^b;return a.fa=(a.ca=a.i+b+(a.ca&256?1:0))&255}function fd(a,b){a.ca=a.fa=a.ya=a.i&b;(a.i|b)&8&&(a.ya^=16);return a.ca}function gd(a,b){a.ya=b^255;b=a.fa=b+255&255;a.ca=a.ca&-256|b;return b}function hd(a,b){a.ya=b;b=a.fa=b+1&255;a.ca=a.ca&-256|b;return b}function id(a,b){return a.fa=a.ca=a.ya=a.i|b}function K(a,b){b^=255;a.ya=a.i^b;return a.fa=(a.ca=a.i+b+1^256)&255}
function jd(a,b){b^=255;a.ya=a.i^b;return a.fa=(a.ca=a.i+b+(a.ca&256?0:1)^256)&255}function kd(a,b){return a.fa=a.ca=a.ya=a.i^b}l.Z=function(a){return this.w.Z(a)};l.ua=function(a,b){this.w.ua(a,b)};function L(a){var b=a.Z(a.P);I(a,a.P+1);return b}function M(a){var b=a.w.ab(a.P);I(a,a.P+2);return b}function N(a){var b=a.w.ab(a.oa);a.oa=a.oa+2&65535;return b}function P(a,b){a.oa=a.oa-2&65535;a.w.Mb(a.oa,b)}
function ld(a){if(a.b&&a.j&255&&a.ta&512){for(var b=0;8>b&&!(a.j&1<<b);b++);a.j&=~(0>b?255:1<<b);a.ta&=-513;a.j&=-257;a.ka[199|b<<3].call(a)}return a.j&256?(Jc(a),!1):!0}function Gd(a,b){a.j|=1<<b;a.ta&512&&Jc(a)}function Q(a,b,c,d){d=d||2;a.M[b]&&(void 0===c&&(kb(a,"Value for "+b+" is invalid"),a.qa()),c=!a.C.za||a.C.Ac?t(c,d):"--------".substr(0,d),a.M[b].textContent!=c&&(a.M[b].textContent=c))}
l.Aa=function(a){this.ma&&(a||!this.C.za||this.C.Ac)&&(Q(this,"A",this.i),Q(this,"B",this.R),Q(this,"C",this.S),Q(this,"BC",Tc(this),4),Q(this,"D",this.T),Q(this,"E",this.U),Q(this,"DE",Vc(this),4),Q(this,"H",this.V),Q(this,"L",this.Y),Q(this,"HL",J(this),4),Q(this,"SP",this.oa,4),Q(this,"PC",this.P,4),a=Rc(this),Q(this,"PS",a,4),Q(this,"IF",a&512?1:0,1),Q(this,"SF",a&128?1:0,1),Q(this,"ZF",a&64?1:0,1),Q(this,"AF",a&16?1:0,1),Q(this,"PF",a&4?1:0,1),Q(this,"CF",a&1?1:0,1));if(a=this.M.speed)a.textContent=
this.C.za&&this.I?this.I.toFixed(2)+"Mhz":"Stopped"};l.ob=function(a){this.C.complete=!0;var b=this.C.Pd=this.H&&Hd(this.H),c=a?this.C.Yb?0:1:-1;this.C.Yb=!1;this.K=this.b=a;if(ld(this)){do{if(b){if(Id(this.H,this.P,c)){this.qa();break}c=1}this.ka[L(this)].call(this)}while(0<this.b)}return this.C.complete?this.K-this.b:void 0===this.C.complete?0:-1};Qa(function(){for(var a=D(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Lc(d);db(d,c)}});function Jd(){this.b-=4}
function Kd(){I(this,M(this));this.b-=10}function Ld(){I(this,N(this));this.b-=10}function Md(){var a=M(this);P(this,this.P);I(this,a);this.b-=17}
var Mc=[Jd,function(){Uc(this,M(this));this.b-=10},function(){this.ua(Tc(this),this.i);this.b-=7},function(){Uc(this,Tc(this)+1);this.b-=5},function(){this.R=hd(this,this.R);this.b-=5},function(){this.R=gd(this,this.R);this.b-=5},function(){this.R=L(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|a>>8;Zc(this,a&256);this.b-=4},Jd,function(){var a;Xc(this,a=J(this)+Tc(this));Zc(this,a>>8&256);this.b-=10},function(){this.i=this.Z(Tc(this));this.b-=7},function(){Uc(this,Tc(this)-1);this.b-=
5},function(){this.S=hd(this,this.S);this.b-=5},function(){this.S=gd(this,this.S);this.b-=5},function(){this.S=L(this);this.b-=7},function(){var a=this.i<<8&256;this.i=(a|this.i)>>1;Zc(this,a);this.b-=4},Jd,function(){Wc(this,M(this));this.b-=10},function(){this.ua(Vc(this),this.i);this.b-=7},function(){Wc(this,Vc(this)+1);this.b-=5},function(){this.T=hd(this,this.T);this.b-=5},function(){this.T=gd(this,this.T);this.b-=5},function(){this.T=L(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|
Yc(this);Zc(this,a&256);this.b-=4},Jd,function(){var a;Xc(this,a=J(this)+Vc(this));Zc(this,a>>8&256);this.b-=10},function(){this.i=this.Z(Vc(this));this.b-=7},function(){Wc(this,Vc(this)-1);this.b-=5},function(){this.U=hd(this,this.U);this.b-=5},function(){this.U=gd(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){var a=this.i<<8;this.i=(Yc(this)<<8|this.i)>>1;Zc(this,a&256);this.b-=4},Jd,function(){Xc(this,M(this));this.b-=10},function(){var a=M(this);this.w.Mb(a,J(this));
this.b-=16},function(){Xc(this,J(this)+1);this.b-=5},function(){this.V=hd(this,this.V);this.b-=5},function(){this.V=gd(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){var a=0,b=Yc(this);if(ad(this)||9<(this.i&15))a|=6;if(b||154<=this.i)a|=96,b=1;this.i=dd(this,a);Zc(this,b?256:0);this.b-=4},Jd,function(){var a;Xc(this,a=J(this)+J(this));Zc(this,a>>8&256);this.b-=10},function(){var a;a=M(this);a=this.w.ab(a);Xc(this,a);this.b-=16},function(){Xc(this,J(this)-1);this.b-=5},function(){this.Y=
hd(this,this.Y);this.b-=5},function(){this.Y=gd(this,this.Y);this.b-=5},function(){this.Y=L(this);this.b-=7},function(){this.i=~this.i&255;this.b-=4},Jd,function(){this.oa=M(this)&65535;this.b-=10},function(){this.ua(M(this),this.i);this.b-=13},function(){this.oa=this.oa+1&65535;this.b-=5},function(){var a=J(this);this.ua(a,hd(this,this.Z(a)));this.b-=10},function(){var a=J(this);this.ua(a,gd(this,this.Z(a)));this.b-=10},function(){this.ua(J(this),L(this));this.b-=10},function(){this.ca|=256;this.b-=
4},Jd,function(){var a;Xc(this,a=J(this)+this.oa);Zc(this,a>>8&256);this.b-=10},function(){this.i=this.Z(M(this));this.b-=13},function(){this.oa=this.oa-1&65535;this.b-=5},function(){this.i=hd(this,this.i);this.b-=5},function(){this.i=gd(this,this.i);this.b-=5},function(){this.i=L(this);this.b-=7},function(){Zc(this,Yc(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.R=this.S;this.b-=5},function(){this.R=this.T;this.b-=5},function(){this.R=this.U;this.b-=5},function(){this.R=this.V;this.b-=
5},function(){this.R=this.Y;this.b-=5},function(){this.R=this.Z(J(this));this.b-=7},function(){this.R=this.i;this.b-=5},function(){this.S=this.R;this.b-=5},function(){this.b-=5},function(){this.S=this.T;this.b-=5},function(){this.S=this.U;this.b-=5},function(){this.S=this.V;this.b-=5},function(){this.S=this.Y;this.b-=5},function(){this.S=this.Z(J(this));this.b-=7},function(){this.S=this.i;this.b-=5},function(){this.T=this.R;this.b-=5},function(){this.T=this.S;this.b-=5},function(){this.b-=5},function(){this.T=
this.U;this.b-=5},function(){this.T=this.V;this.b-=5},function(){this.T=this.Y;this.b-=5},function(){this.T=this.Z(J(this));this.b-=7},function(){this.T=this.i;this.b-=5},function(){this.U=this.R;this.b-=5},function(){this.U=this.S;this.b-=5},function(){this.U=this.T;this.b-=5},function(){this.b-=5},function(){this.U=this.V;this.b-=5},function(){this.U=this.Y;this.b-=5},function(){this.U=this.Z(J(this));this.b-=7},function(){this.U=this.i;this.b-=5},function(){this.V=this.R;this.b-=5},function(){this.V=
this.S;this.b-=5},function(){this.V=this.T;this.b-=5},function(){this.V=this.U;this.b-=5},function(){this.b-=5},function(){this.V=this.Y;this.b-=5},function(){this.V=this.Z(J(this));this.b-=7},function(){this.V=this.i;this.b-=5},function(){this.Y=this.R;this.b-=5},function(){this.Y=this.S;this.b-=5},function(){this.Y=this.T;this.b-=5},function(){this.Y=this.U;this.b-=5},function(){this.Y=this.V;this.b-=5},function(){this.b-=5},function(){this.Y=this.Z(J(this));this.b-=7},function(){this.Y=this.i;
this.b-=5},function(){this.ua(J(this),this.R);this.b-=7},function(){this.ua(J(this),this.S);this.b-=7},function(){this.ua(J(this),this.T);this.b-=7},function(){this.ua(J(this),this.U);this.b-=7},function(){this.ua(J(this),this.V);this.b-=7},function(){this.ua(J(this),this.Y);this.b-=7},function(){var a=this.P-1;if(this.ba.length)for(var b=0;b<this.ba.length;b++)if(this.ba[b](a))return;this.b-=7;this.j|=256;Jc(this);this.H&&gb(this,-2147483648)?(I(this,a),this.H.qa()):this.ta&512||(this.H&&I(this,
a),this.qa())},function(){this.ua(J(this),this.i);this.b-=7},function(){this.i=this.R;this.b-=5},function(){this.i=this.S;this.b-=5},function(){this.i=this.T;this.b-=5},function(){this.i=this.U;this.b-=5},function(){this.i=this.V;this.b-=5},function(){this.i=this.Y;this.b-=5},function(){this.i=this.Z(J(this));this.b-=7},function(){this.b-=5},function(){this.i=dd(this,this.R);this.b-=4},function(){this.i=dd(this,this.S);this.b-=4},function(){this.i=dd(this,this.T);this.b-=4},function(){this.i=dd(this,
this.U);this.b-=4},function(){this.i=dd(this,this.V);this.b-=4},function(){this.i=dd(this,this.Y);this.b-=4},function(){this.i=dd(this,this.Z(J(this)));this.b-=7},function(){this.i=dd(this,this.i);this.b-=4},function(){this.i=ed(this,this.R);this.b-=4},function(){this.i=ed(this,this.S);this.b-=4},function(){this.i=ed(this,this.T);this.b-=4},function(){this.i=ed(this,this.U);this.b-=4},function(){this.i=ed(this,this.V);this.b-=4},function(){this.i=ed(this,this.Y);this.b-=4},function(){this.i=ed(this,
this.Z(J(this)));this.b-=7},function(){this.i=ed(this,this.i);this.b-=4},function(){this.i=K(this,this.R);this.b-=4},function(){this.i=K(this,this.S);this.b-=4},function(){this.i=K(this,this.T);this.b-=4},function(){this.i=K(this,this.U);this.b-=4},function(){this.i=K(this,this.V);this.b-=4},function(){this.i=K(this,this.Y);this.b-=4},function(){this.i=K(this,this.Z(J(this)));this.b-=7},function(){this.i=K(this,this.i);this.b-=4},function(){this.i=jd(this,this.R);this.b-=4},function(){this.i=jd(this,
this.S);this.b-=4},function(){this.i=jd(this,this.T);this.b-=4},function(){this.i=jd(this,this.U);this.b-=4},function(){this.i=jd(this,this.V);this.b-=4},function(){this.i=jd(this,this.Y);this.b-=4},function(){this.i=jd(this,this.Z(J(this)));this.b-=7},function(){this.i=jd(this,this.i);this.b-=4},function(){this.i=fd(this,this.R);this.b-=4},function(){this.i=fd(this,this.S);this.b-=4},function(){this.i=fd(this,this.T);this.b-=4},function(){this.i=fd(this,this.U);this.b-=4},function(){this.i=fd(this,
this.V);this.b-=4},function(){this.i=fd(this,this.Y);this.b-=4},function(){this.i=fd(this,this.Z(J(this)));this.b-=7},function(){this.i=fd(this,this.i);this.b-=4},function(){this.i=kd(this,this.R);this.b-=4},function(){this.i=kd(this,this.S);this.b-=4},function(){this.i=kd(this,this.T);this.b-=4},function(){this.i=kd(this,this.U);this.b-=4},function(){this.i=kd(this,this.V);this.b-=4},function(){this.i=kd(this,this.Y);this.b-=4},function(){this.i=kd(this,this.Z(J(this)));this.b-=7},function(){this.i=
kd(this,this.i);this.b-=4},function(){this.i=id(this,this.R);this.b-=4},function(){this.i=id(this,this.S);this.b-=4},function(){this.i=id(this,this.T);this.b-=4},function(){this.i=id(this,this.U);this.b-=4},function(){this.i=id(this,this.V);this.b-=4},function(){this.i=id(this,this.Y);this.b-=4},function(){this.i=id(this,this.Z(J(this)));this.b-=7},function(){this.i=id(this,this.i);this.b-=4},function(){K(this,this.R);this.b-=4},function(){K(this,this.S);this.b-=4},function(){K(this,this.T);this.b-=
4},function(){K(this,this.U);this.b-=4},function(){K(this,this.V);this.b-=4},function(){K(this,this.Y);this.b-=4},function(){K(this,this.Z(J(this)));this.b-=7},function(){K(this,this.i);this.b-=4},function(){bd(this)||(I(this,N(this)),this.b-=6);this.b-=5},function(){Uc(this,N(this));this.b-=10},function(){var a=M(this);bd(this)||I(this,a);this.b-=10},Kd,function(){var a=M(this);bd(this)||(P(this,this.P),I(this,a),this.b-=6);this.b-=11},function(){P(this,Tc(this));this.b-=11},function(){this.i=dd(this,
L(this));this.b-=7},function(){P(this,this.P);I(this,0);this.b-=11},function(){bd(this)&&(I(this,N(this)),this.b-=6);this.b-=5},Ld,function(){var a=M(this);bd(this)&&I(this,a);this.b-=10},Kd,function(){var a=M(this);bd(this)&&(P(this,this.P),I(this,a),this.b-=6);this.b-=11},Md,function(){this.i=ed(this,L(this));this.b-=7},function(){P(this,this.P);I(this,8);this.b-=11},function(){Yc(this)||(I(this,N(this)),this.b-=6);this.b-=5},function(){Wc(this,N(this));this.b-=10},function(){var a=M(this);Yc(this)||
I(this,a);this.b-=10},function(){var a=L(this);Jb(this.w,a,this.i,this.P+-2&65535);this.b-=10},function(){var a=M(this);Yc(this)||(P(this,this.P),I(this,a),this.b-=6);this.b-=11},function(){P(this,Vc(this));this.b-=11},function(){this.i=K(this,L(this));this.b-=7},function(){P(this,this.P);I(this,16);this.b-=11},function(){Yc(this)&&(I(this,N(this)),this.b-=6);this.b-=5},Ld,function(){var a=M(this);Yc(this)&&I(this,a);this.b-=10},function(){var a=L(this);this.i=Eb(this.w,a,this.P+-2&65535)&255;this.b-=
10},function(){var a=M(this);Yc(this)&&(P(this,this.P),I(this,a),this.b-=6);this.b-=11},Md,function(){this.i=jd(this,L(this));this.b-=7},function(){P(this,this.P);I(this,24);this.b-=11},function(){$c(this)||(I(this,N(this)),this.b-=6);this.b-=5},function(){Xc(this,N(this));this.b-=10},function(){var a=M(this);$c(this)||I(this,a);this.b-=10},function(){var a=N(this);P(this,J(this));Xc(this,a);this.b-=18},function(){var a=M(this);$c(this)||(P(this,this.P),I(this,a),this.b-=6);this.b-=11},function(){P(this,
J(this));this.b-=11},function(){this.i=fd(this,L(this));this.b-=7},function(){P(this,this.P);I(this,32);this.b-=11},function(){$c(this)&&(I(this,N(this)),this.b-=6);this.b-=5},function(){I(this,J(this));this.b-=5},function(){var a=M(this);$c(this)&&I(this,a);this.b-=10},function(){var a=J(this);Xc(this,Vc(this));Wc(this,a);this.b-=5},function(){var a=M(this);$c(this)&&(P(this,this.P),I(this,a),this.b-=6);this.b-=11},Md,function(){this.i=kd(this,L(this));this.b-=7},function(){P(this,this.P);I(this,
40);this.b-=11},function(){cd(this)||(I(this,N(this)),this.b-=6);this.b-=5},function(){var a=N(this);Pc(this,a&255|this.ta&-256);this.i=a>>8;this.b-=10},function(){var a=M(this);cd(this)||I(this,a);this.b-=10},function(){this.ta&=-513;this.b-=4},function(){var a=M(this);cd(this)||(P(this,this.P),I(this,a),this.b-=6);this.b-=11},function(){P(this,Rc(this)&255|this.i<<8);this.b-=11},function(){this.i=id(this,L(this));this.b-=7},function(){P(this,this.P);I(this,48);this.b-=11},function(){cd(this)&&(I(this,
N(this)),this.b-=6);this.b-=5},function(){this.oa=J(this)&65535;this.b-=5},function(){var a=M(this);cd(this)&&I(this,a);this.b-=10},function(){this.ta|=512;this.b-=4;ld(this)},function(){var a=M(this);cd(this)&&(P(this,this.P),I(this,a),this.b-=6);this.b-=11},Md,function(){K(this,L(this));this.b-=7},function(){P(this,this.P);I(this,56);this.b-=11}];
function R(a){x.call(this,"ChipSet",a,R,32768);var b=a.model;b&&!Nd[b]&&Ta("Unrecognized ChipSet model: "+b);this.u=Nd[b]||{};a.sound&&(this.ga=null,window&&(this.ga=window.AudioContext||window.webkitAudioContext),this.ga&&new this.ga);F(this)}A(R);
var S={Da:1978.1,Ad:{Ea:0,Ve:1,Ze:16,ff:32,qf:64,pf:128,qb:14},Ya:{Ea:1,Pc:1,sd:2,od:4,pd:16,qd:32,rd:64,qb:8},Bd:{Ea:2,Ue:3,yf:4,We:8,kf:16,lf:32,mf:64,Xe:128,qb:0},uf:{Ea:3},sf:{Ea:2,gf:7},wf:{Ea:3,zf:1,vf:2,nf:4,df:8,Ye:16,pe:32},tf:{Ea:4},xf:{Ea:5,$e:1,af:2,bf:4,cf:8,Af:16}},T={Da:100,La:{Ea:66,rc:1,gc:2,ld:4,jf:8,hf:16,ic:32,hc:64,cc:128},Nc:{Ea:66,INIT:0},Ua:{Ea:194,se:0,ac:16,ud:32,nc:48,Xc:0,Yc:32},Fb:{Ea:162,rf:0,$c:0,Wc:0,Zc:0,Vc:0},Ma:{ef:{Ea:98},Ta:{Kc:0,Jc:1,xd:2,Gd:4,Qc:5,vd:6,yd:7},
Gb:16383}},Nd={SI1978:S,VT100:T};R.prototype.pa=function(){return!1};R.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.H=d;this.A=a;this.I=rb(a,"Keyboard");this.J=rb(a,"SerialPort");this.video=rb(a,"Video");Db(b,this,this.u.Kb);Ib(b,this,this.u.Lb);if(d){var e=this;Od(d,16384,function(){for(var a="",b=0;b<e.F.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=v(e.F[b]);e.H.g(a)})}};R.prototype.Ga=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};
R.prototype.Ka=function(a){return a?this.save():!0};S.INIT=[[S.Ad.qb,S.Ya.qb,S.Bd.qb,0,0,0,0]];
T.INIT=[[T.Nc.INIT,T.La.gc|T.La.ld],[T.Ua.Xc,T.Ua.Yc],[T.Fb.$c,T.Fb.Wc,T.Fb.Zc,T.Fb.Vc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];l=R.prototype;l.reset=function(){this.u.INIT&&!this.restore(this.u.INIT)&&this.ja("reset error")};
l.save=function(){var a=new Sc(this);switch(this.u.Da){case S.Da:a.set(0,[this.Ca,this.D,this.Ha,this.aa,this.ea,this.ma,this.va]);break;case T.Da:a.set(0,[this.ia,this.K]),a.set(1,[this.L,this.N]),a.set(2,[this.B,this.ba,this.la,this.ka]),a.set(3,[this.X,this.j,this.O,this.da,this.F])}return a.data()};
l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.u.Da){case S.Da:return this.Ca=b[0],this.D=b[1],this.Ha=b[2],this.aa=b[3],this.ea=b[4],this.ma=b[5],this.va=b[6],!0;case T.Da:return this.ia=b[0],this.K=b[1],b=a[1],this.L=b[0],this.N=b[1],b=a[2],this.B=b[0],this.ba=b[1],this.la=b[2],this.ka=b[3],b=a[3],this.X=b[0],this.j=b[1],this.O=b[2],this.da=b[3],this.F=b[4],!0}return!1};l.start=function(){};l.stop=function(){};l.Vd=function(a,b){var c=this.Ca;E(this,a,null,b,"STATUS0",c,!0);return c};
l.Wd=function(a,b){var c=this.D;E(this,a,null,b,"STATUS1",c,!0);return c};l.Xd=function(a,b){var c=this.Ha;E(this,a,null,b,"STATUS2",c,!0);return c};l.Ud=function(a,b){var c=this.aa>>8-this.ea&255;E(this,a,null,b,"SHIFT.RESULT",c,!0);return c};l.ee=function(a,b,c){E(this,a,b,c,"SHIFT.COUNT",null,!0);this.ea=b};l.ge=function(a,b,c){E(this,a,b,c,"SOUND1",null,!0);this.ma=b};l.fe=function(a,b,c){E(this,a,b,c,"SHIFT.DATA",null,!0);this.aa=b<<8|this.aa>>8};
l.he=function(a,b,c){E(this,a,b,c,"SOUND2",null,!0);this.va=b};l.ie=function(a,b,c){E(this,a,b,c,"WATCHDOG",null,!0)};function Pd(a){var b=0,c=0,d=~a.X;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
l.Yd=function(a,b){var c=this.K,c=c&~T.La.hc;if((Dc(this.b)&64)<<1&&(c|=T.La.hc,c!=this.K)){var d,e;d=this.O&1;e=this.O>>1&7;switch(e){case T.Ma.Ta.yd:break;case T.Ma.Ta.Jc:this.X=this.X<<1|d;break;case T.Ma.Ta.Qc:d=Pd(this);this.F[d]=T.Ma.Gb;fb(this,"doNVRCommand(): erase data at addr "+v(d));break;case T.Ma.Ta.Kc:this.j=this.j<<1|d;break;case T.Ma.Ta.Gd:d=Pd(this);e=this.j&T.Ma.Gb;this.F[d]=e;fb(this,"doNVRCommand(): write data "+v(e)+" to addr "+v(d));break;case T.Ma.Ta.vd:d=Pd(this);e=this.F[d];
null==e&&(e=T.Ma.Gb);this.j=e;fb(this,"doNVRCommand(): read data "+v(e)+" from addr "+v(d));break;case T.Ma.Ta.xd:this.j<<=1;this.da=this.j&T.Ma.Gb+1;break;default:fb(this,"doNVRCommand(): unrecognized command "+ca(e))}}c&=~T.La.ic;this.da&&(c|=T.La.ic);c&=~T.La.cc;if(d=this.I){d=this.I;if(e=d.D)e=d.b,e=Dc(d.b)>=d.L+e.X*e.Ra/1E3*1.2731488;e&&(d.D=!1);d=!d.D}d&&(c|=T.La.cc);c&=~T.La.rc;this.J&&this.J.wa&1&&(c|=T.La.rc);this.K=c;E(this,a,null,b,"FLAGS",c);return c};
l.je=function(a,b,c){E(this,a,b,c,"BRIGHTNESS");this.ia=b};l.me=function(a,b,c){E(this,a,b,c,"NVR.LATCH");this.O=b};l.le=function(a,b,c){E(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.B=this.B&-4|a;break;case 1:this.B=this.B&-13|a<<2;this.video&&(b=this.video,a=this.B,fb(b,"updateScrollOffset("+a+")"),b.hb!==a&&((b.hb=a)?Kc(b,!0):b.sb=!0));break;case 2:switch(a){case 0:this.ba=~this.ba;break;case 2:case 3:this.la=3-a}break;case 3:this.ka=a}};
l.ke=function(a,b,c){E(this,a,b,c,"DC011");b&T.Ua.ud?(b&=T.Ua.nc,this.N!=b&&(this.N=b,this.video&&(a=this.video,b=this.N==T.Ua.nc?50:60,fb(a,"updateRate("+b+")"),a.vc=b))):(b&=T.Ua.ac,this.L!=b&&(this.L=b,this.video&&(a=this.L==T.Ua.ac?132:80,b=this.video,fb(b,"updateDimensions("+a+","+(80<a&&this.K&T.La.gc?14:24)+")"),b.ba=a,b.ra=b.kc,80<a&&b.ra--,Qd(b)&&Rd(b))))};S.Kb={0:R.prototype.Vd,1:R.prototype.Wd,2:R.prototype.Xd,3:R.prototype.Ud};
S.Lb={2:R.prototype.ee,3:R.prototype.ge,4:R.prototype.fe,5:R.prototype.he,6:R.prototype.ie};T.Kb={66:R.prototype.Yd};T.Lb={66:R.prototype.je,98:R.prototype.me,162:R.prototype.le,194:R.prototype.ke};Qa(function(){for(var a=D(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new R(d);db(d,c)}});
function Sd(a){x.call(this,"ROM",a,Sd);this.A=null;this.B=a.addr;this.j=a.size;this.F=a.alias;this.u=a.file;this.D=da(this.u);if(this.u){a=this.u;var b=fa(this.D);"json"!=b&&"hex"!=b&&(a=ia()+"/api/v1/dump?file="+this.u+"&format=bytes&decimal=true");var c=this;ta(a,null,!0,function(a,b,f){Td(c,a,b,f)})}}A(Sd);Sd.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.H=d;Ud(this)};
Sd.prototype.Ga=function(){if(this.Fa){if(this.H){var a=this.H,b=this.id,c=this.B,d=this.j,e=this.Fa,f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var k=h.o,m=h.a;if(void 0!==k){var p=f,k=[k>>>0,g],q=pa(p,k,a.zc);0>q&&p.splice(-(q+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.D.push({Mf:b,G:c,$d:d,Fa:e,yc:f})}delete this.Fa}return!0};Sd.prototype.Ka=function(){return!0};
function Td(a,b,c,d){if(d)a.ja("Unable to load system ROM (error "+d+": "+b+")");else{Za(a.gb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.A=f;else if(g)for(a.A=Array(4*g.length),d=c=0;c<g.length;c++)a.A[d++]=g[c]&255,a.A[d++]=g[c]>>8&255,a.A[d++]=g[c]>>16&255,a.A[d++]=g[c]>>24&255;else a.A=e;a.Fa=e.symbols;if(!a.A.length){w("Empty ROM: "+b);return}if(1==a.A.length){w(a.A[0]);return}}catch(h){a.ja("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.A=Array(b.length),e=0;e<b.length;e++)a.A[e]=aa(b[e],16);Ud(a)}}
function Ud(a){if(!jb(a))if(!a.u)F(a);else if(a.A&&a.w){a.j||(a.j=a.A.length);if(a.A.length!=a.j)kb(a,"ROM size ("+t(a.A.length,8,!0)+") does not match specified size ("+t(a.j,8,!0)+")");else{var b;b=a.B;if(vb(a.w,b,a.j,Zb)){var c;for(c=0;c<a.A.length;c++)Ab(a.w,b+c,a.A[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.F?b.push(a.F):null!=a.F&&a.F.length&&(b=a.F);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.w,g=d.j,h=[],k=d.B>>>f.ha;0<g&&k<f.W.length;)h.push(f.W[k++]),g-=f.Ja;f=d.w;d=d.j;g=0;for(e>>>=
f.ha;0<d&&e<f.W.length;){k=h[g++];if(!k)break;f.W[e++]=k;d-=f.Ja}}delete a.A}}F(a)}}Qa(function(){for(var a=D(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Sd(d);db(d,c)}});
function Vd(a){x.call(this,"RAM",a,Vd);this.Fa=this.j=null;this.F=a.addr;this.B=a.size;this.$a=a.load;this.Sa=a.exec;this.u=!1;this.A=a.file;this.D=da(this.A);if(this.A){a=this.A;var b=fa(this.D);"json"!=b&&"hex"!=b&&(a=ia()+"/api/v1/dump?file="+this.A+"&format=bytes&decimal=true");var c=this;ta(a,null,!0,function(a,b,f){f?c.ja("Unable to load RAM resource (error "+f+": "+a+")"):(Za(c.gb,a,b),(a=ua(a,b))?(c.j=a.Ba,c.Fa=a.Fa,null==c.$a&&(c.$a=a.$a),null==c.Sa&&(c.Sa=a.Sa)):c.A=null,Wd(c))})}}A(Vd);
var Xd=[0,5];Vd.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.H=d;Wd(this)};Vd.prototype.Ga=function(){return!0};Vd.prototype.Ka=function(){return!0};
function Wd(a){!a.u&&a.B&&vb(a.w,a.F,a.B,1)&&(a.u=!0);if(!jb(a)){if(!a.u)w("No RAM allocated");else if(a.A){if(!a.j||!a.w)return;var b=a.F;null!==a.$a&&(b=a.$a);for(var c=0;c<a.j.length;c++)Ab(a.w,b+c,a.j[c]);if(null!==a.Sa){if(256==a.Sa){for(c=0;c<Xd.length;c++)Ab(a.w,Xd[c],118);Oc(a.b,function(a){return function(b){if(0<=Xd.indexOf(b)){var c=!1,d=a.b,e=a.H;if(5==b)switch(c=!0,d.S){case 2:Yd(a,String.fromCharCode(d.U));break;case 9:for(var k=Vc(d),m="",p=255;p--;){var q=a.b.Z(k++);if(36==q)break;
m+=String.fromCharCode(q)}Yd(a,m);break;default:c=!1}c?Ld.call(d):e&&(a.g("\nCP/M vector "+v(b)),I(d,b),e.qa());b=!0}else b=!1;return b}}(a))}Qc(a.b,a.Sa)}delete a.j}F(a)}}Vd.prototype.reset=function(){};function Yd(a,b){b=b.replace(/\r/g,"");a.Ia&&(a.Ia.value+=b,a.Ia.scrollTop=a.Ia.scrollHeight)}Qa(function(){for(var a=D(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Vd(d);db(d,c)}});
function Zd(a){x.call(this,"Keyboard",a,Zd,65536);(a=a.model)&&!$d[a]&&Ta("Unrecognized Keyboard8080 model: "+a);this.w=$d[a]||{};this.reset();F(this)}A(Zd);var ae={};ae[n.Eb]=37;ae[n.bc]=39;ae[n.dc]=32;
var be={Da:1978.1,Nb:{},$b:ae,tb:{},ib:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},V={},W={Da:100,Nb:(V[8]=3,V[n.nd]=5,V[n.md]=6,V[n.Id]=7,V[n.Cd]=8,V[n.Fd]=9,V[n.Q]=10,V[39]=16,V[221]=20,V[219]=21,V[n.Uc]=22,V[n.Dd]=23,V[n.td]=24,V[n.E]=25,V[49]=26,V[37]=32,V[40]=34,V[117]=35,V[19]=35,V[192]=36,V[189]=37,V[57]=38,V[55]=39,V[52]=40,V[51]=41,V[27]=42,V[38]=48,V[114]=49,V[112]=50,V[46]=51,V[187]=52,V[48]=53,V[56]=54,V[54]=55,V[53]=56,V[50]=57,V[9]=58,V[103]=64,V[115]=65,V[113]=66,V[96]=67,V[118]=
68,V[220]=69,V[n.dc]=70,V[n.bd]=71,V[n.Sc]=72,V[n.Rc]=73,V[n.Eb]=74,V[104]=80,V[2013]=81,V[98]=82,V[97]=83,V[222]=85,V[186]=86,V[n.ad]=87,V[n.Tc]=88,V[n.bc]=89,V[n.wd]=90,V[110]=96,V[116]=97,V[101]=98,V[100]=99,V[13]=100,V[190]=101,V[188]=102,V[n.kd]=103,V[n.Mc]=104,V[n.Hd]=105,V[119]=106,V[105]=112,V[99]=113,V[102]=114,V[109]=115,V[191]=117,V[n.jd]=118,V[n[" "]]=119,V[n.Ed]=120,V[n.Oc]=121,V[n.Pb]=122,V[120]=123,V[17]=124,V[16]=125,V[20]=126,V),$b:{},tb:{},ib:{"num-comma":116,"break":117,"line-feed":118,
"no-scroll":119,setup:120},Lc:{Ea:130,INIT:127},Na:{Ea:130,gd:1,fd:2,ed:4,dd:8,hd:16,fc:32,ec:63,zd:64,re:128,INIT:0},cd:127};W.tb={l4:W.Na.gd,l3:W.Na.fd,l2:W.Na.ed,l1:W.Na.dd,locked:W.Na.hd,local:W.Na.fc,online:~W.Na.fc,"caps-lock":512};var $d={SI1978:be,VT100:W};
Zd.prototype.pa=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.M[e]){if("led"==a&&this.w.tb[b])return this.M[e]=c,!0;switch(b){case "kbd":case "screen":return c.onkeydown=function(a){return ce(d,a,!0)},c.onkeyup=function(a){return ce(d,a,!1)},c.onkeypress=function(a){a=a.keyCode;a>=n.Eb&&a<=n.Pb?d.u&515||(d.u|=512,de(d,20,!0),ee(d)):a>=n.Jd&&a<=n.z&&d.u&512&&(d.u&=-513,de(d,20,!1),ee(d));return!0},c.onpaste=function(a){a:{if(d.J&&d.J.eb&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&
a.preventDefault(),a=a.clipboardData||window.clipboardData)){fe(d.J,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.w.ib&&void 0!==this.w.ib[b])return this.M[e]=c,c.onclick=function(a,b){return function(c){c.preventDefault&&c.preventDefault();de(a,b,!0,!0)}}(this,this.w.ib[b]),!0}}return!1};Zd.prototype.Qa=function(a,b,c,d){this.A=a;this.b=c;this.H=d;var e=this;this.O=Hc(this.b,function(){ge(e)});this.F=rb(a,"ChipSet");this.J=rb(a,"SerialPort");Db(b,this,this.w.Kb);Ib(b,this,this.w.Lb)};
Zd.prototype.Ga=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};Zd.prototype.Ka=function(a){return a?this.save():!0};W.INIT=[[W.Na.INIT,W.Lc.INIT,!1,0,-1]];l=Zd.prototype;l.reset=function(){this.j=[];this.u=0;this.w.INIT&&!this.restore(this.w.INIT)&&this.ja("reset error")};l.save=function(){var a=new Sc(this);switch(this.w.Da){case W.Da:a.set(0,[this.K,this.I,this.D,this.L,-1])}return a.data()};
l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.Da){case be.Da:return!0;case W.Da:return this.K=b[0],ee(this,this.K&W.Na.ec),this.I=b[1],this.D=b[2],this.L=b[3],this.B=b[4],!0}return!1};function ee(a,b){var c;null!=b?a.N=b:b=a.N;for(var d in a.w.tb)if(c="led-"+d,c=a.M[c]){var e=a.w.tb[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+t(16711680,6):"#000000"}if(c=a.M["led-caps-lock"])c.style.backgroundColor=a.u&512?"#"+t(65280,6):"#000000"}
function ce(a,b,c){var d=!0,e=b.keyCode,f=2==b.location,g=0;switch(e){case 16:g=f?1:2;break;case 17:g=f?4:8;break;case 18:g=f?16:32;break;case 91:g=f?64:128;break;case 20:g=512}g&&(a.u=c?a.u|g:a.u&~g);var h;a:if(e=a.w.$b[e]||e,a.w.Nb[e])h=e;else{for(h in a.w.ib)if(a.w.ib[h]===e)break a;h=null}h&&!b.metaKey&&(d=!1,a.u&4144&&(13==h?(h=118,d=!0):8==h&&(h=46,d=!0),d&&(a.u=c?a.u|4096:a.u&-4097)),d=de(a,h,c),(!(h>=n.Eb&&h<=n.Pb)||a.u|12)&&b.preventDefault&&b.preventDefault());return d}
function de(a,b,c,d){var e;a:{for(e=0;e<a.j.length;e++)if(a.j[e].Xb==b)break a;e=-1}if(c)0>e?a.j.push({Xb:b,Ub:Date.now(),Hb:d||!1}):(a.j[e].Ub=Date.now(),a.j[e].Hb=d||!1),d&&ge(a);else if(0<=e){if(!a.j[e].Hb&&(d=a.j[e].Ub)&&50>Date.now()-d)return a.j[e].Hb=!0,ge(a),!0;a.j.splice(e,1)}if(a.F){d=0;switch(b){case "1p":d=S.Ya.od;break;case "2p":d=S.Ya.sd;break;case "coin":d=S.Ya.Pc;break;case "left":d=S.Ya.qd;break;case "right":d=S.Ya.rd;break;case "fire":d=S.Ya.pd}d&&(a=a.F,b=d,a.D&=~b,c&&(a.D|=b))}return!0}
function ge(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].Hb){var d=a.j[b].Xb,e=50-(Date.now()-a.j[b].Ub);if(0<e){if(0>c||c>e)c=e}else{de(a,d,!1);b=0;continue}}b++}0<=c&&Ic(a.b,a.O,c)}l.Zd=function(a,b){var c=this.I;0<=this.B&&(this.B<this.j.length?(c=this.j[this.B],this.B++,c=W.Nb[c.Xb],c&128&&(c&=127)):(this.B=-1,c=W.cd),this.I=c,Gd(this.b,1));E(this,a,null,b,"KBDUART.ADDRESS",c);return c};
l.ne=function(a,b,c){E(this,a,b,c,"KBDUART.STATUS");this.K=b;this.D=!0;this.L=Dc(this.b);ee(this,b&W.Na.ec);b&W.Na.zd&&(this.B=0,Gd(this.b,1))};W.Kb={130:Zd.prototype.Zd};W.Lb={130:Zd.prototype.ne};Qa(function(){for(var a=D(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Zd(d);db(d,c)}});
function he(a,b,c,d,e){var f=this;this.pc=Da("Gecko/");var g=["","moz","ms","webkit"];x.call(this,"Video",a,he,262144);this.X=a.screenWidth;this.N=a.screenHeight;this.Va=a.bufferAddr;this.Md=a.bufferRAM;var h=a.bufferFormat;this.ma=h&&ie[h.toUpperCase()]||je;this.ba=a.bufferCols;this.va=a.bufferRows;this.kc=this.ra=a.cellWidth||1;this.na=a.cellHeight||1;this.Ca=null;this.oc=!1;this.Wa=a.bufferBits||1;this.Od=a.bufferLeft||0;if(this.u=a.bufferRotate)this.u=this.u%360,0<this.u&&(this.u-=360),-90!=this.u&&
(this.ja("unsupported buffer rotation: "+this.u),this.u=0);this.Xa=a.interruptRate;this.wc=a.refreshRate||60;this.L=b;this.F=c;this.ka=(this.Rd=d)||b||null;this.Ic=this.X;this.Ld=this.N;this.lc=this.X/this.ba|0;this.mc=this.N/this.va|0;1<this.na&&(this.va++,this.hb=0,this.sb=!1);b=a.smoothing;(c=Ea("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.F[d]){this.F[d]=b;break}if(this.B=a.screenRotate)this.B=this.B%
360,0<this.B&&(this.B-=360),-90!=this.B?(this.ja("unsupported screen rotation: "+this.B),this.B=0):(this.F.translate(0,this.N),this.F.rotate(this.B*Math.PI/180),this.F.scale(this.N/this.X,this.X/this.N));if(this.j=e)if(this.j.kb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.j.kb){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){ke(f,!!(document.fullscreenElement||document.msFullscreenElement||
document.mozFullScreenElement||document.webkitFullscreenElement))},!1);break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){ke(f,null)},!1);break}}if(this.da=a.fontROM)"json"!=fa(this.da)&&(this.da=ia()+"/api/v1/dump?file="+this.da+"&format=bytes"),ta(this.da,null,!0,function(a,b,c){le(f,a,b,c)});this.Ob={}}A(he);var je=0,ie={SI1978:1,VT100:2};
function Qd(a){a.J=a.ba*a.ra;a.aa=a.va*a.na;var b=a.J,c=a.aa;a.u&&(b=a.aa,c=a.J);a.O=0;if(!a.Md&&(a.O=(a.J*a.Wa>>3)*a.aa,!vb(a.w,a.Va,a.O,3)))return!1;a.O?(a.qc=a.F.createImageData(b,c),a.tc=16/a.Wa|0,me(a,a.O>>1)):me(a,(a.ba+1)*a.va);a.K=document.createElement("canvas");a.K.width=b;a.K.height=c;a.rb=a.K.getContext("2d");a.ea={};a.la=1<<a.Wa;a.ga=Array(a.la+2);a.ga[0]=[0,0,0,255];a.ga[1]=[255,255,255,255];1==a.ma&&(a.ga[a.la+0]=[255,255,0,255],a.ga[a.la+1]=[0,255,0,255]);2==a.ma&&(a.vc=60,a.ub=!1,
a.Ha=Array(a.ba));return!0}he.prototype.Qa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.H=d;Qd(this);if(this.I=rb(a,"Keyboard")){for(var e in this.Ob)this.I.pa("led",e,this.Ob[e]);this.L&&this.I.pa(this.Rd?"textarea":"canvas","screen",this.ka)}var f=this;this.xc=Hc(this.b,function(){Kc(f)});Ic(this.b,this.xc,1E3/Math.max(this.wc,this.Xa));this.uc=0;this.da||F(this)};
function le(a,b,c,d){if(d)a.ja("Unable to load font ROM (error "+d+": "+b+")");else{Za(a.gb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){w("Empty font ROM: "+b);return}if(1==f.length){w(f[0]);return}if(2048==f.length)a.Ca=f,Rd(a);else{a.ja("Unrecognized font data length ("+f.length+")");return}}catch(g){a.ja("Font ROM data error: "+g.message);return}(a.F||a.H)&&F(a)}}
function Rd(a){a.Ca&&(a.oc=2==a.ma,a.ea[96]=[ne(a,a.ra,a.na),ne(a,a.ra,a.na,a.ub)],a.ea[64]=[ne(a,2*a.ra,a.na),ne(a,2*a.ra,a.na,a.ub)],a.ea[32]=a.ea[0]=[ne(a,2*a.ra,2*a.na),ne(a,2*a.ra,2*a.na,a.ub)])}
function ne(a,b,c,d){var e=8>=a.kc?8:16,f=8<e?15:0,g=a.Ca.length/e,h=!1===d,k={ra:b,na:c};k.canvas=document.createElement("canvas");k.canvas.width=16*b;k.canvas.height=g/16*c;k.context=k.canvas.getContext("2d");for(var m=k.context.createImageData(b,c),p=0;p<g;p++){for(var q=0,y=q;q<a.na;q++)for(var u=p*e+(f+q&e-1),u=d&&8==q?255:a.Ca[u],r=0;r<c/a.na;r++){for(var z=0,H=0,ha=H;H<a.ra;H++){for(var C=u&128>>(7<H?7:H),z=a.oc&&!C&&z?z:C,U=0;U<b/a.ra;U++)h&&(z=!z),oe(a,m,ha,y,z?1:0),ha++;z=C}y++}k.context.putImageData(m,
(p&15)*b,(p>>4)*c)}return k}he.prototype.Ga=function(){return!0};he.prototype.pa=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Ob[b]=c,!0;switch(b){case "fullScreen":return this.M[b]=c,this.j&&this.j.kb?c.onclick=function(){d.kb()}:c.parentNode.removeChild(c),!0}return!1};
he.prototype.kb=function(){var a=!1;if(this.j){if(this.j.kb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.X/this.N;b>c&&(a=Math.round(c/b*100)+"%")}this.pc?(this.L.style.width=a,this.L.style.width=a,this.L.style.display="block",this.L.style.margin="auto"):(this.j.style.width=a,this.j.style.height="auto");this.j.style.backgroundColor="black";this.j.kb();a=!0}this.ka&&this.ka.focus()}return a};
function ke(a,b){!b&&a.j&&(a.pc?a.L.style.width=a.L.style.height="":a.j.style.width=a.j.style.height="");fb(a,"notifyFullScreen("+b+")")}function me(a,b){a.sc=b;a.ia=!1;if(void 0===a.D||a.D.length!=a.sc)a.D=Array(a.sc)}function oe(a,b,c,d,e){d=a.u?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.ma&&(208<=c&&236>c?e=a.la+0:28<=c&&72>c&&(e=a.la+1));a=a.ga[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function Kc(a,b){var c=!0;if(!b){a.Xa&&(120==a.Xa?a.uc&1?(Gd(a.b,2),c=!1):Gd(a.b,1):Gd(a.b,4));if(c&&a.ia&&a.O){for(var d=a.w,e=a.O,f=!0,g=a.Va>>>d.ha;0<e&&g<d.W.length;)d.W[g].Oa&&(d.W[g].Oa=f=!1,d.W[g].Cc=!0),e-=d.Ja,g++;f&&(c=!1)}Ic(a.b,a.xc,1E3/Math.max(a.wc,a.Xa));a.uc++}if(c)if(1<a.ra)switch(a.ma){case 2:for(var c=a.Va,d=-1,e=0,f=60==a.vc?2:5,h=g=0,k=-1;e<a.va;){var m=0,p=c,q=d,y=a.ba;for(96!=q&&(y>>=1);;){var u=yb(a.w,p++);if(127==(u&127)){var r=yb(a.w,p++),d=r&96,c=(r&15)<<8|yb(a.w,p),c=c+
(r&16?8192:16384);break}if(m<y)a.Ha[m++]=u;else break}if(f)f--;else{for(;m<a.Ha.length;)a.Ha[m++]=0;if(0<=q)for(p=a.ia&&a.D[g]==y,a.D[g++]=y,y=0;y<m;y++){u=a.Ha[y];if(!p||u!==a.D[g]){a.D[k=g]=u;var r=a,z=a.rb,H=u&127;if(u=r.ea[q][u&128?1:0]){var ha=(H&15)*u.ra,H=(H>>4)*u.na,C,U,ea,Y,va=u.ra,Gb=u.na;z?(C=y*r.ra,U=e*r.na,ea=r.ra,Y=r.na):(C=y*r.lc,U=e*r.mc,ea=r.lc,Y=r.mc);u.ra>r.ra&&(C*=2,ea*=2);u.na>r.na&&(q||(H+=r.na),Gb=r.na);z?z.drawImage(u.canvas,ha,H,va,Gb,C,U,ea,Y):(C+=0,U+=0,r.F.drawImage(u.canvas,
ha,H,va,Gb,C,U,ea,Y))}h++}g++}e++}}a.ia=!0;!b&&a.sb&&1==h&&(a.D[k]=-1,h=0);a.sb=!1;(h||b)&&a.rb&&a.F.drawImage(a.K,0,a.hb,a.J,a.aa-a.na,0,0,a.Ic,a.Ld)}else{e=a.Va;f=e+a.O;k=h=g=0;b=a.J;m=0;c=a.aa;q=d=0;p=a.Wa;y=(1<<p)-1;a.Od&&(p=-p,q=16+p);for(;e<f;){r=zb(a.w,e);if(a.ia&&r===a.D[g])h+=a.tc;else{a.D[g]=r;(z=q)&&(r=r>>8|(r&255)<<8);h<b&&(b=h);for(u=a.tc;u--;)ha=r>>z&y,oe(a,a.qc,h++,k,ha),z+=p;h>m&&(m=h);k<c&&(c=k);k>=d&&(d=k+1)}e+=2;g++;if(h>=a.J&&(h=0,k++,k>a.aa))break}a.ia=!0;b<a.J&&(e=m-b,d-=c,a.u&&
(f=b,g=e,b=c,e=d,c=a.J-(f+g),d=g),a.rb.putImageData(a.qc,0,0,b,c,e,d),a.F.drawImage(a.K,0,0,a.K.width,a.K.height,0,0,a.X,a.N))}}
Qa(function(){for(var a=D(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=B(c),e=document.createElement("canvas");if(!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<=xa().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||Ea("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");Da("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var g=e.getContext("2d"),d=new he(d,e,g,f,c);db(d,c)}});
function pe(a){this.ea=+a.adapter;switch(this.ea){case 0:this.ga=0;this.ka=2;break;default:w("Unrecognized serial adapter #"+this.ea);return}this.u=this.B=null;this.ia=a.tabSize;this.da=a.charBOL;this.D=0;this.aa=!1;this.L=!0;x.call(this,"SerialPort",a,pe,8388608);var b=a.binding;if("console"==b)this.B="";else{var c;a=qe;b&&(void 0===c&&(c="Panel"),(c=cb(c,this.id))&&(b=c.M[b])&&this.pa(null,a,b))}this.I="";this.j=this.eb=this.Aa=null;this.exports={connect:this.Ec,receiveData:this.Wb,receiveStatus:this.oe}}
A(pe);var re=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],se=[!1,0,0,133,142,39,238],qe="buffer";l=pe.prototype;
l.pa=function(a,b,c,d){var e=this;switch(b){case qe:return this.M[b]=this.u=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),te(e,b);return!0},c.onkeypress=function(a){a=a||window.event;te(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.M[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.Wb(d);return!0},
!0}return!1};l.Qa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.H=d;var e=this;this.la=Hc(this.b,function(){e.Wb()});this.ma=Hc(this.b,function(){fe(e)});this.F=rb(a,"ChipSet");Db(b,this,ue,this.ga);Ib(b,this,ve,this.ga);F(this)};
l.Ec=function(a){if(!this.j){var b=lc(this.A,"connection");if(b){var c=b.split("->");if(2==c.length){var d=na(c[0]);if(d!=this.fb)return;c=na(c[1]);if(this.j=bb(c)){var e=this.j.exports;if(e){var f=e.connect;f&&f.call(this.j,this.L);if(this.eb=e.receiveData){this.L=a;this.Aa=e.receiveStatus;this.status(this.gb+"."+d+" connected to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
l.Ga=function(a,b){if(!b)if(this.Ec(this.L),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.Ka=function(a){return a?this.save():!0};l.reset=function(){we(this)};l.save=function(){var a=new Sc(this),b=0,c=[];c[b++]=this.N;c[b++]=this.X;c[b++]=this.ba;c[b++]=this.wa;c[b++]=this.J;c[b++]=this.K;c[b]=this.O;a.set(0,c);return a.data()};l.restore=function(a){return we(this,a[0])};
function we(a,b){var c=0;b||(b=se);a.N=b[c++];a.X=b[c++];a.ba=b[c++];a.wa=b[c++];a.J=b[c++];a.K=b[c++];a.O=b[c];return!0}function xe(a,b){var c=a.O&b;b&15||(c>>=4);b=re[c];c=((a.J&12)>>2)+6;a.J&16&&c++;c+=((a.J&192)>>6)+1>>1;return 1E3/Math.round(b/c)}function te(a,b){fb(a,"receiveByte("+ca(b)+"), status="+ca(a.wa));return a.aa||a.wa&2?!1:(a.X=b,a.wa|=2,Gd(a.b,a.ka),!0)}
l.Wb=function(a){null!=a&&(this.I="number"!=typeof a?a:this.I+String.fromCharCode(a));this.I&&(te(this,this.I.charCodeAt(0))&&(this.I=this.I.substr(1)),this.I&&this.b&&Ic(this.b,this.la,xe(this,15)));return!0};l.oe=function(a){this.wa&=-129;a&64&&(this.wa|=128)};function fe(a,b){a.wa|=5;b&&a.eb&&a.eb.call(a.j,b)}l.Td=function(a,b){var c=this.X;E(this,a,null,b,"DATA",c);this.wa&=-3;return c};l.Sd=function(a,b){var c=this.wa;E(this,a,null,b,"STATUS",c);return c};
l.de=function(a,b,c){E(this,a,b,c,"DATA");this.ba=b;this.wa&=-6;fb(this,"transmitByte("+ca(b)+")");if(19==b)this.aa=!0;else if(17==b)this.aa=!1;else if(this.eb&&this.eb.call(this.j,b),this.u)8==b?(this.u.value=this.u.value.slice(0,-1),0<this.D&&this.D--):(a=(a=13!=b&&10!=b?oa[b]:null)?"<"+a+">":String.fromCharCode(b),c=a.length,9==b?(b=this.ia||8,c=b-this.D%b,this.ia&&(a=ma("",c))):13==b&&(this.D=c=0,a="\n"),this.da&&!this.D&&c&&(a=String.fromCharCode(this.da)+a),this.u.value+=a,this.u.scrollTop=
this.u.scrollHeight,this.D+=c);else if(null!=this.B){if(10==b||1024<=this.B.length)this.g(this.B),this.B="";10!=b&&(this.B+=String.fromCharCode(b))}this.b&&Ic(this.b,this.ma,xe(this,240))};l.ce=function(a,b,c){E(this,a,b,c,"CONTROL");this.N?(this.Aa&&(b^this.K)&34&&(a=0,a=this.L?a|(b&32?32:0)|(b&2?320:0):a|(b&32?16:0)|(b&2?1048576:0),this.Aa.call(this.j,a)),this.K=b,this.K&64&&(this.N=!1)):(this.J=b,this.N=!0)};l.be=function(a,b,c){E(this,a,b,c,"BAUDRATES");this.O=b};
var ue={0:pe.prototype.Td,1:pe.prototype.Sd},ve={0:pe.prototype.de,1:pe.prototype.ce,2:pe.prototype.be};Qa(function(){for(var a=D(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new pe(d);db(d,c)}});function ye(a){x.call(this,"Debugger",a,ye);this.Wa=a.base||16;this.aa=this.ma=this.J=0;this.O=!1;this.j=-1;this.u=[];this.da={}}A(ye);var ze={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
ye.prototype.Sb=function(){return-1};ye.prototype.Tb=function(){};ye.prototype.Jb=function(a,b,c){if(b)if(a){0>this.j&&this.u.length&&(this.j=0);if(0>this.j||a!=this.u[this.j])this.u.splice(0,0,a),this.j=0;this.j--}else this.O?a="end":a=this.u[this.j+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(na(a.substring(d,f))),d=f+1}}return b};
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;
var rb="undefined"!==typeof ArrayBuffer,sb=[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],tb={cpu:1,bus:64,mem:128,port:256,nvr:16384,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function ub(a){x.call(this,"Panel",a)}ba(ub,x);
ub.prototype.ca=function(a,b,c,d){return this.S&&this.S.ca(a,b,c,d)||this.u&&this.u.ca(a,b,c,d)||this.B&&this.B.ca(a,b,c,d)||this.K&&this.K.ca(a,b,c,d)?!0:x.prototype.ca.call(this,a,b,c,d)};ub.prototype.Ea=function(a,b,c,d){this.S=a;this.H=b;this.u=c;this.K=d;this.B=vb(a,"Keyboard")};ub.prototype.ua=function(a,b){b||wb();return!0};ub.prototype.wa=function(){return!0};
function wb(){for(var a=!1,b=gb(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=eb(d),f=cb(e.id);f||(a=!0,f=new ub(e));fb(f,d);a&&kb(f)}}Na(wb);
function xb(a,b,c){x.call(this,"Bus",a);this.u=b;this.K=c;this.M=a.busWidth||16;this.N=Math.pow(2,this.M);this.C=this.N-1|0;this.g=(this.M>>1)+2;10>this.g&&(this.g=10);15<this.g&&(this.g=15);this.w=1<<this.g;this.O=this.w>>2;this.j=this.w-1;this.L=this.N/this.w|0;this.I=this.L-1;this.A=[];this.B=[];this.D=this.F=!1;this.R=[];this.T=[];a=new z;yb(a,this.K);this.b=Array(this.L);for(b=0;b<this.L;b++)this.b[b]=a;kb(this)}ba(xb,x);xb.prototype.reset=function(){};
xb.prototype.ua=function(a,b){b||this.reset();return!0};function zb(a,b,c,d){for(var e=b,f=c,g=e>>>a.g;0<f&&g<a.b.length;){var h=a.b[g],l=g*a.w,p=a.w-(e-l);p>f&&(p=f);if(h&&h.size){if(h.type==d){if(e+f<=h.J)return h.mb+=h.J-e,h.J=e,!0;if(e>=h.J+h.mb){p=h.size-(e-l);p>f&&(p=f);h.mb=e-h.J+p;e=l+a.w;f-=p;g++;continue}}return Ab(Bb,e,f)}e=new z(e,p,a.w,d);yb(e,a.K,h);a.b[g++]=e;e=l+a.w;f-=p}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Cb[d]+" at "+q(b)),!0):Ab(Db,b,c)}
function Eb(a,b){return a.b[(b&a.C)>>>a.g].lb(b&a.j,b)}function Fb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].kc(c,b):a.b[d++].Xa(c,b)|a.b[d&a.I].Xa(0,b+1)<<8}function Gb(a,b){var c=b&a.j,d=(b&a.C)>>>a.g;return c!=a.j?a.b[d].Jb(c,b):a.b[d++].lb(c,b)|a.b[d&a.I].lb(0,b+1)<<8}function Hb(a,b,c){a.b[(b&a.C)>>>a.g].nb(b&a.j,c&255,b)}function Ib(a,b,c){var d=b&a.j,e=(b&a.C)>>>a.g;d!=a.j?a.b[e].nc(d,c&65535,b):(a.b[e++].Ya(d,c&255,b),a.b[e&a.I].Ya(0,c>>8&255,b+1))}
function Jb(a){for(var b=0,c=[],d=0;d<a.L;d++){var e=a.b[d];if(e.Ca||e.gc){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var p=e[g],r=g+1;r<e.length&&e[r]===p;)r++;l[h++]=r-g;l[h++]=p;g=r}l.length<e.length&&(e=l)}c[f]=e}}return c}function Kb(a,b){if(void 0===b)return a.D=!a.D,a.D;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}
function Nb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var l=+e+d;l<=g;l++)void 0!==f.A[l]?v("Input port "+q(l)+" already registered"):f.A[l]=[h,!1]}}function Ob(a,b,c){for(var d=1,e=0,f=0;0<d;){var g=a.A[b],h=a.R[b]||1,l=1==h?255:2==h?65535:-1,p=l;void 0!==g?(g[0]&&(p=g[0](b,c),void 0===p?p=l:p&=l),a.K&&a.D!=g[1]&&Pb(a.K,b,p)):a.K&&(pb(a.K,a,b,null,c),a.D&&Pb(a.K,b,p));e|=p<<f;f+=h<<3;b+=h;d-=h}return e}
function Qb(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 Rb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var l=+e+d;l<=g;l++)void 0!==f.B[l]?v("Output port "+q(l)+" already registered"):f.B[l]=[h,!1]}}
function Sb(a,b,c,d){for(var e=1,f=0;0<e;){var g=a.B[b],h=a.T[b]||1,l=1==h?255:2==h?65535:-1,l=(c>>>=f)&l;if(void 0!==g){if(g[0])g[0](b,l,d);a.K&&a.F!=g[1]&&Tb(a.K,b,l)}else a.K&&(pb(a.K,a,b,l,d),a.F&&Tb(a.K,b,l));f+=h<<3;b+=h;e-=h}}function Ab(a,b,c){v("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Bb=1,Db=2,Ub;if(rb){var Vb=new ArrayBuffer(2);(new DataView(Vb)).setUint16(0,256,!0);Ub=256===(new Uint16Array(Vb))[0]}else Ub=!1;var Wb=Ub;
function z(a,b,c,d){this.id=Xb+=2;this.b=null;this.J=a;this.mb=b;this.size=c||0;this.type=d||Yb;this.u=d==Zb;yb(this);this.Ca=this.gc=!1;if(c)if(rb)this.j=new ArrayBuffer(c),this.w=new DataView(this.j,0,c),this.g=new Uint8Array(this.j,0,c),this.A=new Uint16Array(this.j,0,c>>1),this.b=new Int32Array(this.j,0,c>>2),$b(this,Wb?ac:bc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;$b(this,cc)}else $b(this)}k=z.prototype;
k.save=function(){var a,b;if(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.w.getInt32(b<<2,!0);else a=this.b;return a};k.restore=function(a){if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.w.setInt32(b<<2,a[b],!0);else this.b=a;return this.Ca=!0}return!1};function $b(a,b){b||(b=ec);fc(a,b,void 0);gc(a,b,void 0)}function fc(a,b,c){c&&a.H||(a.Xa=b[0]||a.jc,a.kc=b[2]||a.lc);if(c||void 0===c)a.lb=b[0]||a.jc,a.Jb=b[2]||a.lc}
function gc(a,b,c){c&&a.P||(a.Ya=!a.u&&b[1]||a.ob,a.nc=!a.u&&b[3]||a.Nb);if(c||void 0===c)a.nb=b[1]||a.ob,a.Ob=b[3]||a.Nb}k.Pa=function(a,b){b?this.P++||gc(this,hc,!1):this.H++||fc(this,hc,!1)};function rc(a,b){b?--a.P||(a.Ya=a.u?a.ob:a.nb,a.nc=a.u?a.Nb:a.Ob):--a.H||(a.Xa=a.lb,a.kc=a.Jb)}function yb(a,b,c){a.K=b;a.H=a.P=0;c&&((a.H=c.H)&&fc(a,hc,!1),(a.P=c.P)&&gc(a,hc,!1))}k.jc=function(){this.K&&nb(this.K,129)&&this.K.message("attempt to read invalid block %"+n(this.J),!0);return 255};
k.ob=function(a,b){this.K&&nb(this.K,129)&&this.K.message("attempt to write "+q(b)+" to invalid block %"+n(this.J),!0)};k.lc=function(a,b){return this.Xa(a++,b++)|this.Xa(a,b)<<8};k.Nb=function(a,b,c){this.Ya(a++,b&255,c++);this.Ya(a,b>>8,c)};k.Xd=function(a){return this.b[a>>2]>>>((a&3)<<3)&255};k.ae=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};k.fe=function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<<a)|b<<a;this.Ca=!0};
k.je=function(a,b){var c=a>>2;a=(a&3)<<3;24>a?this.b[c]=this.b[c]&~(65535<<a)|b<<a:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.Ca=!0};k.Vd=function(a,b){if(this.K&&null!=this.J){var c=this.K;sc(c,this.J+a,1,c.I)&&c.da(!0)}return this.lb(a,b)};k.Zd=function(a,b){if(this.K&&null!=this.J){var c=this.K;sc(c,this.J+a,2,c.I)&&c.da(!0)}return this.Jb(a,b)};
k.de=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;sc(d,this.J+a,1,d.w)&&d.da(!0)}this.u?this.ob(0,b):this.nb(a,b,c)};k.he=function(a,b,c){if(this.K&&null!=this.J){var d=this.K;sc(d,this.J+a,2,d.w)&&d.da(!0)}this.u?this.ob(0,b):this.Ob(a,b,c)};k.Ud=function(a){return this.g[a]};k.Wd=function(a){return this.g[a]};k.Yd=function(a){return this.w.getUint16(a,!0)};k.$d=function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.A[a>>1]};k.ce=function(a,b){this.g[a]=b;this.Ca=!0};
k.ee=function(a,b){this.g[a]=b;this.Ca=!0};k.ge=function(a,b){this.w.setUint16(a,b,!0);this.Ca=!0};k.ie=function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.A[a>>1]=b;this.Ca=!0};var Yb=0,Zb=2,Cb=["NONE","RAM","ROM","VID","H/W"],Xb=0,ec=[],cc=[z.prototype.Xd,z.prototype.fe,z.prototype.ae,z.prototype.je],hc=[z.prototype.Vd,z.prototype.de,z.prototype.Zd,z.prototype.he];if(rb)var bc=[z.prototype.Ud,z.prototype.ce,z.prototype.Yd,z.prototype.ge],ac=[z.prototype.Wd,z.prototype.ee,z.prototype.$d,z.prototype.ie];
function tc(a,b){x.call(this,"CPU",a,0,1);var c=a.multiplier||1;this.Fa=a.cycles||b;this.U=c;this.Sa=Math.round(this.Fa/1E4)/100;this.Z=this.Sa*this.U;this.G.ka=!1;this.G.Mb=!1;this.G.ib=a.autoStart;this.G.ec=!1;this.G.Va=!1;this.ya=this.oa=0;this.za=a.csStart;this.na=a.csInterval;this.sa=a.csStop;this.T=[];this.zb=this.qb.bind(this);kb(this)}ba(tc,x);k=tc.prototype;
k.Ea=function(a,b,c,d){this.S=a;this.H=b;this.K=d;for(b=0;b<uc.length;b++)(c=this.P[uc[b]])&&this.S.ca(null,uc[b],c);this.W=vb(a,"ChipSet");a=vc(a,"autoStart");null!=a&&(this.G.ib="true"==a?!0:"false"==a?!1:!!a);kb(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
k.ua=function(a,b){if(!b){if(a&&this.restore){wc(this);if(!this.restore(a))return!1;xc(this)}else this.reset();this.K?(a=this.K,a.i("Type ? for help with PC8080 Debugger commands"),yc(a),a.ea&&(b=a.ea,a.ea=null,zc(a,b))):this.i("No debugger detected")}Ac(this);return!0};k.wa=function(a){return a?this.save():!0};k.ib=function(){return this.G.ib||!this.K&&void 0===this.P.run?(this.qb(),!0):!1};k.hc=function(){return 0};
function xc(a){void 0===a.za&&(a.za=0);void 0===a.na&&(a.na=-1);void 0===a.sa&&(a.sa=-1);a.G.Va=0<=a.za&&0<a.na;a.G.Va&&(a.ya=0,a.oa=a.za-a.la)}function Bc(a,b){if(a.G.Va){var c=!1;a.ya=a.ya+a.hc()|0;a.oa-=b;0>=a.oa&&(a.oa+=a.na,c=!0);0<=a.sa&&a.sa<=Cc(a)&&(a.na=a.sa=-1,xc(a),a.da(),c=!0);c&&a.i(Cc(a)+" cycles: checksum="+n(a.ya))}}
k.ca=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.P[b]=c;a=!0;break;case "run":this.P[b]=c;c.onclick=function(){var a;if(a=d.S)if(a=d.S,a.G.ja)a=!0;else{var b=null,c,h=bb(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.G.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.G.ja);c++);c==h.length&&(b=a);v("The "+b.type+" component ("+b.id+") is not "+(b.G.ready?"powered yet":"ready yet"+(b.vb?" (waiting for notification)":""))+".");a=!1}a&&(d.G.ka?d.da():d.qb())};
a=!0;break;case "speed":this.P[b]=c;a=!0;break;case "setSpeed":this.P[b]=c,c.onclick=function(){Dc(d,d.U<<1,!0)},c.textContent=this.Z.toFixed(2)+"Mhz",a=!0}return a};function Ec(a,b,c){a.la+=b;c&&(a.ga=a.b=0)}function Fc(a,b){var c=1;b&&1<a.U&&a.Y&&(c=a.Y/a.Sa);a.gb=Math.round(1E3/Gc);a.Na=Math.floor(a.Fa/Gc*c);b||(a.va=a.Na);a.Ua=0}function Cc(a){return a.la+a.X+a.ga-a.b}function wc(a){a.Y=0;a.hb=0;a.la=a.X=a.ga=a.b=0;xc(a);Dc(a,1)}
function Dc(a,b,c){var d=!1;if(void 0!==b){.8>a.Y/a.Z?b=1:d=!0;a.U=b;b=a.Sa*a.U;if(a.Z!=b){a.Z=b;b=a.Z.toFixed(2)+"Mhz";var e=a.P.setSpeed;e&&(e.textContent=b);a.i("target speed: "+b)}c&&a.S&&Hc(a.S)}Ec(a,a.X);a.X=0;a.V=ra();a.ea=0;Fc(a);return d}function Ic(a,b){var c=a.T.length;a.T.push([-1,b]);return c}function Jc(a,b,c){0<=b&&b<a.T.length&&0>a.T[b][0]&&(c*=a.Fa*a.U/1E3,a.T[b][0]=c+Kc(a))}function Kc(a,b){var c=a.ga-=a.b;a.b=0;b&&(a.ga=0);return c}
k.qb=function(a){if(mb(this,!0)){if(!this.G.ka){Dc(this);this.S&&this.S.start(this.V,Cc(this));this.G.ka=!0;this.G.Mb=!0;this.W&&this.W.start();var b=this.P.run;b&&(b.textContent="Halt");this.S&&(Lc(this.S,!0),a&&Hc(this.S,!0))}this.Ua>=this.Fa&&Fc(this,!0);this.Ha=0;this.Ma=ra();this.ea&&(a=this.Ma-this.ea,a>this.gb&&(this.V+=a,this.V>this.Ma&&(this.V=this.Ma)));try{do{for(var c,d=this.G.Va?1:this.Na,e=this.T.length-1;0<=e;e--){var f=this.T[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.Ab(c);c=Kc(this,!0);
this.Ha+=c;this.X+=c;Bc(this,c);a=c;for(var g=this.T.length-1;0<=g;g--){var h=this.T[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.va-=c;if(0>=this.va){this.va+=this.Na;++this.hb>=Mc&&(this.S&&Lc(this.S),this.hb=0);break}}while(this.G.ka)}catch(l){this.da();Ac(this);this.S&&this.S.stop(ra(),Cc(this));mb(this,!1);hb(this,l.stack||l.message);return}c=setTimeout;d=this.zb;this.ea=ra();e=this.gb;this.Ha&&(e=Math.round(e*this.Ha/this.Na));e-=this.ea-this.Ma;if(f=this.ea-this.V)this.Y=Math.round(this.X/
(10*f))/100,864E5<=f&&(this.la=0,Dc(this));if(0>e||this.Y<this.Z)-1E3>e&&(this.V-=e),e=0;this.Ua+=this.Ha;this.ea+=e;c(d,e)}else Ac(this),this.S&&this.S.stop(ra(),Cc(this))};k.Ab=function(){return 0};k.da=function(a){lb(this,!0);Kc(this);Ec(this,this.X);this.X=0;if(this.G.ka){this.G.ka=!1;this.W&&this.W.stop();var b=this.P.run;b&&(b.textContent="Run")}this.G.complete=a};function Ac(a,b){if(a.S){for(var c=a.S,d=0;d<c.A.length;d++)Nc(c.A[d],b);Lc(a.S,b)}}var Gc=30,Mc=15,uc=["power","reset"];
function Oc(a){var b=+a.model||8080;tc.call(this,a,1E6);this.tb=b;this.cb=Pc;wc(this);this.G.complete=this.G.vd=!1;this.fb=0;this.La=[];this.eb=0;Qc(this)}ba(Oc,tc);function Rc(a,b){a.La.push(b)}k=Oc.prototype;k.reset=function(){this.G.ka&&this.da();Qc(this);wc(this);this.G.error=!1;tc.prototype.reset.call(this)};function Qc(a){a.g=0;a.w=0;a.A=0;a.B=0;a.C=0;a.D=0;a.F=0;a.M=0;C(a,a.eb);Sc(a,0);a.R=0}function Tc(a,b){a.eb=b;C(a,b)}
k.hc=function(){var a=this.g+this.w+this.A+this.B+this.C+this.D+this.F|0;return a=a+this.M+this.j+Uc(this)|0};k.save=function(){var a=new Vc(this);a.set(0,[this.g,this.w,this.A,this.B,this.C,this.D,this.F,this.M,this.j,Uc(this)]);a.set(1,[this.R,this.la,this.U]);a.set(2,Jb(this.H));return a.data()};
k.restore=function(a){var b=a[0];this.g=b[0];this.w=b[1];this.A=b[2];this.B=b[3];this.C=b[4];this.D=b[5];this.F=b[6];this.M=b[7]&65535;C(this,b[8]);Sc(this,b[9]);b=a[1];this.R=b[0];this.la=b[1];Dc(this,b[3]);a:{b=this.H;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.O){for(var f=0,g=Array(b.O),h=0;h<e.length-1;)for(var l=e[h++],p=e[h++];l--;)g[f++]=p;e=g}f=b.b[d];if(!f||!f.restore(e)){v("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
k.ca=function(a,b,c){switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.P[b]=c;this.fb++;a=!0;break;default:a=tc.prototype.ca.call(this,a,b,c)}return a};function Wc(a){return a.w<<8|a.A}function id(a,b){a.w=b>>8&255;a.A=b&255}function jd(a){return a.B<<8|a.C}function kd(a,b){a.B=b>>8&255;a.C=b&255}function D(a){return a.D<<8|a.F}
function ld(a,b){a.D=b>>8&255;a.F=b&255}function C(a,b){a.j=b&65535}function md(a){return a.I&256?1:0}function nd(a,b){a.I=a.I&255|b}function od(a){return sb[a.L&255]?4:0}function pd(a){return(a.L^a.O)&16?16:0}function qd(a){return a.I&255?0:64}function rd(a){return a.L&128?128:0}function Uc(a){return a.N&-214|rd(a)|qd(a)|pd(a)|od(a)|md(a)}function Sc(a,b){a.I=a.L=a.O=0;b&1&&(a.I|=256);b&4||(a.L|=1);b&16&&(a.O|=16);b&64||(a.I|=255);b&128&&(a.L^=192);a.N=a.N&-726|b&512|2}
function sd(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b)&255}function td(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?1:0))&255}function ud(a,b){a.I=a.L=a.O=a.g&b;(a.g|b)&8&&(a.O^=16);return a.I}function vd(a,b){a.O=b^255;b=a.L=b+255&255;a.I=a.I&-256|b;return b}function wd(a,b){a.O=b;b=a.L=b+1&255;a.I=a.I&-256|b;return b}function xd(a,b){return a.L=a.I=a.O=a.g|b}function E(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+1^256)&255}
function yd(a,b){b^=255;a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?0:1)^256)&255}function zd(a,b){return a.L=a.I=a.O=a.g^b}function F(a,b){a=a.H;return a.b[(b&a.C)>>>a.g].Xa(b&a.j,b)}function Ad(a,b,c){a=a.H;a.b[(b&a.C)>>>a.g].Ya(b&a.j,c&255,b)}function G(a){var b=F(a,a.j);C(a,a.j+1);return b}function H(a){var b=Fb(a.H,a.j);C(a,a.j+2);return b}function Bd(a){var b=Fb(a.H,a.M);a.M=a.M+2&65535;return b}function I(a,b){a.M=a.M-2&65535;Ib(a.H,a.M,b)}
function Cd(a){if(a.b&&a.R&255&&a.N&512){for(var b=0;8>b&&!(a.R&1<<b);b++);a.R&=~(0>b?255:1<<b);a.N&=-513;a.R&=-257;a.cb[199|b<<3].call(a)}return a.R&256?(Kc(a),!1):!0}function Dd(a,b){a.R|=1<<b;a.N&512&&Kc(a)}function J(a,b,c,d){d=d||2;a.P[b]&&(void 0===c&&(hb(a,"Value for "+b+" is invalid"),a.da()),c=!a.G.ka||a.G.ec?n(c,d):"--------".substr(0,d),a.P[b].textContent!=c&&(a.P[b].textContent=c))}
k.Ab=function(a){this.G.complete=!0;var b=this.G.vd=this.K&&Ed(this.K),c=a?this.G.Mb?0:1:-1;this.G.Mb=!1;this.ga=this.b=a;if(Cd(this)){do{if(b){if(Fd(this.K,this.j,c)){this.da();break}c=1}this.cb[G(this)].call(this)}while(0<this.b)}return this.G.complete?this.ga-this.b:void 0===this.G.complete?0:-1};Na(function(){for(var a=gb(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=eb(c),d=new Oc(d);fb(d,c)}});function Gd(){this.b-=4}function Hd(){C(this,H(this));this.b-=10}
function Id(){C(this,Bd(this));this.b-=10}function Jd(){var a=H(this);I(this,this.j);C(this,a);this.b-=17}
var Pc=[Gd,function(){id(this,H(this));this.b-=10},function(){Ad(this,Wc(this),this.g);this.b-=7},function(){id(this,Wc(this)+1);this.b-=5},function(){this.w=wd(this,this.w);this.b-=5},function(){this.w=vd(this,this.w);this.b-=5},function(){this.w=G(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|a>>8;nd(this,a&256);this.b-=4},Gd,function(){var a;ld(this,a=D(this)+Wc(this));nd(this,a>>8&256);this.b-=10},function(){this.g=F(this,Wc(this));this.b-=7},function(){id(this,Wc(this)-1);this.b-=
5},function(){this.A=wd(this,this.A);this.b-=5},function(){this.A=vd(this,this.A);this.b-=5},function(){this.A=G(this);this.b-=7},function(){var a=this.g<<8&256;this.g=(a|this.g)>>1;nd(this,a);this.b-=4},Gd,function(){kd(this,H(this));this.b-=10},function(){Ad(this,jd(this),this.g);this.b-=7},function(){kd(this,jd(this)+1);this.b-=5},function(){this.B=wd(this,this.B);this.b-=5},function(){this.B=vd(this,this.B);this.b-=5},function(){this.B=G(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|
md(this);nd(this,a&256);this.b-=4},Gd,function(){var a;ld(this,a=D(this)+jd(this));nd(this,a>>8&256);this.b-=10},function(){this.g=F(this,jd(this));this.b-=7},function(){kd(this,jd(this)-1);this.b-=5},function(){this.C=wd(this,this.C);this.b-=5},function(){this.C=vd(this,this.C);this.b-=5},function(){this.C=G(this);this.b-=7},function(){var a=this.g<<8;this.g=(md(this)<<8|this.g)>>1;nd(this,a&256);this.b-=4},Gd,function(){ld(this,H(this));this.b-=10},function(){var a=H(this);Ib(this.H,a,D(this));
this.b-=16},function(){ld(this,D(this)+1);this.b-=5},function(){this.D=wd(this,this.D);this.b-=5},function(){this.D=vd(this,this.D);this.b-=5},function(){this.D=G(this);this.b-=7},function(){var a=0,b=md(this);if(pd(this)||9<(this.g&15))a|=6;if(b||154<=this.g)a|=96,b=1;this.g=sd(this,a);nd(this,b?256:0);this.b-=4},Gd,function(){var a;ld(this,a=D(this)+D(this));nd(this,a>>8&256);this.b-=10},function(){var a;a=H(this);a=Fb(this.H,a);ld(this,a);this.b-=16},function(){ld(this,D(this)-1);this.b-=5},function(){this.F=
wd(this,this.F);this.b-=5},function(){this.F=vd(this,this.F);this.b-=5},function(){this.F=G(this);this.b-=7},function(){this.g=~this.g&255;this.b-=4},Gd,function(){this.M=H(this)&65535;this.b-=10},function(){Ad(this,H(this),this.g);this.b-=13},function(){this.M=this.M+1&65535;this.b-=5},function(){var a=D(this);Ad(this,a,wd(this,F(this,a)));this.b-=10},function(){var a=D(this);Ad(this,a,vd(this,F(this,a)));this.b-=10},function(){Ad(this,D(this),G(this));this.b-=10},function(){this.I|=256;this.b-=
4},Gd,function(){var a;ld(this,a=D(this)+this.M);nd(this,a>>8&256);this.b-=10},function(){this.g=F(this,H(this));this.b-=13},function(){this.M=this.M-1&65535;this.b-=5},function(){this.g=wd(this,this.g);this.b-=5},function(){this.g=vd(this,this.g);this.b-=5},function(){this.g=G(this);this.b-=7},function(){nd(this,md(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.w=this.A;this.b-=5},function(){this.w=this.B;this.b-=5},function(){this.w=this.C;this.b-=5},function(){this.w=this.D;this.b-=
5},function(){this.w=this.F;this.b-=5},function(){this.w=F(this,D(this));this.b-=7},function(){this.w=this.g;this.b-=5},function(){this.A=this.w;this.b-=5},function(){this.b-=5},function(){this.A=this.B;this.b-=5},function(){this.A=this.C;this.b-=5},function(){this.A=this.D;this.b-=5},function(){this.A=this.F;this.b-=5},function(){this.A=F(this,D(this));this.b-=7},function(){this.A=this.g;this.b-=5},function(){this.B=this.w;this.b-=5},function(){this.B=this.A;this.b-=5},function(){this.b-=5},function(){this.B=
this.C;this.b-=5},function(){this.B=this.D;this.b-=5},function(){this.B=this.F;this.b-=5},function(){this.B=F(this,D(this));this.b-=7},function(){this.B=this.g;this.b-=5},function(){this.C=this.w;this.b-=5},function(){this.C=this.A;this.b-=5},function(){this.C=this.B;this.b-=5},function(){this.b-=5},function(){this.C=this.D;this.b-=5},function(){this.C=this.F;this.b-=5},function(){this.C=F(this,D(this));this.b-=7},function(){this.C=this.g;this.b-=5},function(){this.D=this.w;this.b-=5},function(){this.D=
this.A;this.b-=5},function(){this.D=this.B;this.b-=5},function(){this.D=this.C;this.b-=5},function(){this.b-=5},function(){this.D=this.F;this.b-=5},function(){this.D=F(this,D(this));this.b-=7},function(){this.D=this.g;this.b-=5},function(){this.F=this.w;this.b-=5},function(){this.F=this.A;this.b-=5},function(){this.F=this.B;this.b-=5},function(){this.F=this.C;this.b-=5},function(){this.F=this.D;this.b-=5},function(){this.b-=5},function(){this.F=F(this,D(this));this.b-=7},function(){this.F=this.g;
this.b-=5},function(){Ad(this,D(this),this.w);this.b-=7},function(){Ad(this,D(this),this.A);this.b-=7},function(){Ad(this,D(this),this.B);this.b-=7},function(){Ad(this,D(this),this.C);this.b-=7},function(){Ad(this,D(this),this.D);this.b-=7},function(){Ad(this,D(this),this.F);this.b-=7},function(){var a=this.j-1;if(this.La.length)for(var b=0;b<this.La.length;b++)if(this.La[b](a))return;this.b-=7;this.R|=256;Kc(this);this.K&&nb(this,-2147483648)?(C(this,a),this.K.da()):this.N&512||(this.K&&C(this,a),
this.da())},function(){Ad(this,D(this),this.g);this.b-=7},function(){this.g=this.w;this.b-=5},function(){this.g=this.A;this.b-=5},function(){this.g=this.B;this.b-=5},function(){this.g=this.C;this.b-=5},function(){this.g=this.D;this.b-=5},function(){this.g=this.F;this.b-=5},function(){this.g=F(this,D(this));this.b-=7},function(){this.b-=5},function(){this.g=sd(this,this.w);this.b-=4},function(){this.g=sd(this,this.A);this.b-=4},function(){this.g=sd(this,this.B);this.b-=4},function(){this.g=sd(this,
this.C);this.b-=4},function(){this.g=sd(this,this.D);this.b-=4},function(){this.g=sd(this,this.F);this.b-=4},function(){this.g=sd(this,F(this,D(this)));this.b-=7},function(){this.g=sd(this,this.g);this.b-=4},function(){this.g=td(this,this.w);this.b-=4},function(){this.g=td(this,this.A);this.b-=4},function(){this.g=td(this,this.B);this.b-=4},function(){this.g=td(this,this.C);this.b-=4},function(){this.g=td(this,this.D);this.b-=4},function(){this.g=td(this,this.F);this.b-=4},function(){this.g=td(this,
F(this,D(this)));this.b-=7},function(){this.g=td(this,this.g);this.b-=4},function(){this.g=E(this,this.w);this.b-=4},function(){this.g=E(this,this.A);this.b-=4},function(){this.g=E(this,this.B);this.b-=4},function(){this.g=E(this,this.C);this.b-=4},function(){this.g=E(this,this.D);this.b-=4},function(){this.g=E(this,this.F);this.b-=4},function(){this.g=E(this,F(this,D(this)));this.b-=7},function(){this.g=E(this,this.g);this.b-=4},function(){this.g=yd(this,this.w);this.b-=4},function(){this.g=yd(this,
this.A);this.b-=4},function(){this.g=yd(this,this.B);this.b-=4},function(){this.g=yd(this,this.C);this.b-=4},function(){this.g=yd(this,this.D);this.b-=4},function(){this.g=yd(this,this.F);this.b-=4},function(){this.g=yd(this,F(this,D(this)));this.b-=7},function(){this.g=yd(this,this.g);this.b-=4},function(){this.g=ud(this,this.w);this.b-=4},function(){this.g=ud(this,this.A);this.b-=4},function(){this.g=ud(this,this.B);this.b-=4},function(){this.g=ud(this,this.C);this.b-=4},function(){this.g=ud(this,
this.D);this.b-=4},function(){this.g=ud(this,this.F);this.b-=4},function(){this.g=ud(this,F(this,D(this)));this.b-=7},function(){this.g=ud(this,this.g);this.b-=4},function(){this.g=zd(this,this.w);this.b-=4},function(){this.g=zd(this,this.A);this.b-=4},function(){this.g=zd(this,this.B);this.b-=4},function(){this.g=zd(this,this.C);this.b-=4},function(){this.g=zd(this,this.D);this.b-=4},function(){this.g=zd(this,this.F);this.b-=4},function(){this.g=zd(this,F(this,D(this)));this.b-=7},function(){this.g=
zd(this,this.g);this.b-=4},function(){this.g=xd(this,this.w);this.b-=4},function(){this.g=xd(this,this.A);this.b-=4},function(){this.g=xd(this,this.B);this.b-=4},function(){this.g=xd(this,this.C);this.b-=4},function(){this.g=xd(this,this.D);this.b-=4},function(){this.g=xd(this,this.F);this.b-=4},function(){this.g=xd(this,F(this,D(this)));this.b-=7},function(){this.g=xd(this,this.g);this.b-=4},function(){E(this,this.w);this.b-=4},function(){E(this,this.A);this.b-=4},function(){E(this,this.B);this.b-=
4},function(){E(this,this.C);this.b-=4},function(){E(this,this.D);this.b-=4},function(){E(this,this.F);this.b-=4},function(){E(this,F(this,D(this)));this.b-=7},function(){E(this,this.g);this.b-=4},function(){qd(this)||(C(this,Bd(this)),this.b-=6);this.b-=5},function(){id(this,Bd(this));this.b-=10},function(){var a=H(this);qd(this)||C(this,a);this.b-=10},Hd,function(){var a=H(this);qd(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=11},function(){I(this,Wc(this));this.b-=11},function(){this.g=
sd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,0);this.b-=11},function(){qd(this)&&(C(this,Bd(this)),this.b-=6);this.b-=5},Id,function(){var a=H(this);qd(this)&&C(this,a);this.b-=10},Hd,function(){var a=H(this);qd(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Jd,function(){this.g=td(this,G(this));this.b-=7},function(){I(this,this.j);C(this,8);this.b-=11},function(){md(this)||(C(this,Bd(this)),this.b-=6);this.b-=5},function(){kd(this,Bd(this));this.b-=10},function(){var a=H(this);
md(this)||C(this,a);this.b-=10},function(){var a=G(this);Sb(this.H,a,this.g,this.j+-2&65535);this.b-=10},function(){var a=H(this);md(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=11},function(){I(this,jd(this));this.b-=11},function(){this.g=E(this,G(this));this.b-=7},function(){I(this,this.j);C(this,16);this.b-=11},function(){md(this)&&(C(this,Bd(this)),this.b-=6);this.b-=5},Id,function(){var a=H(this);md(this)&&C(this,a);this.b-=10},function(){var a=G(this);this.g=Ob(this.H,a,this.j+-2&65535)&
255;this.b-=10},function(){var a=H(this);md(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Jd,function(){this.g=yd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,24);this.b-=11},function(){od(this)||(C(this,Bd(this)),this.b-=6);this.b-=5},function(){ld(this,Bd(this));this.b-=10},function(){var a=H(this);od(this)||C(this,a);this.b-=10},function(){var a=Bd(this);I(this,D(this));ld(this,a);this.b-=18},function(){var a=H(this);od(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=
11},function(){I(this,D(this));this.b-=11},function(){this.g=ud(this,G(this));this.b-=7},function(){I(this,this.j);C(this,32);this.b-=11},function(){od(this)&&(C(this,Bd(this)),this.b-=6);this.b-=5},function(){C(this,D(this));this.b-=5},function(){var a=H(this);od(this)&&C(this,a);this.b-=10},function(){var a=D(this);ld(this,jd(this));kd(this,a);this.b-=5},function(){var a=H(this);od(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Jd,function(){this.g=zd(this,G(this));this.b-=7},function(){I(this,
this.j);C(this,40);this.b-=11},function(){rd(this)||(C(this,Bd(this)),this.b-=6);this.b-=5},function(){var a=Bd(this);Sc(this,a&255|this.N&-256);this.g=a>>8;this.b-=10},function(){var a=H(this);rd(this)||C(this,a);this.b-=10},function(){this.N&=-513;this.b-=4},function(){var a=H(this);rd(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=11},function(){I(this,Uc(this)&255|this.g<<8);this.b-=11},function(){this.g=xd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,48);this.b-=11},function(){rd(this)&&
(C(this,Bd(this)),this.b-=6);this.b-=5},function(){this.M=D(this)&65535;this.b-=5},function(){var a=H(this);rd(this)&&C(this,a);this.b-=10},function(){this.N|=512;this.b-=4;Cd(this)},function(){var a=H(this);rd(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Jd,function(){E(this,G(this));this.b-=7},function(){I(this,this.j);C(this,56);this.b-=11}];
function Kd(a){x.call(this,"ChipSet",a,0,32768);var b=a.model;b&&!Ld[b]&&Ra("Unrecognized ChipSet model: "+b);this.g=Ld[b]||{};a.sound&&(this.U=null,window&&(this.U=window.AudioContext||window.webkitAudioContext),this.U&&new this.U);kb(this)}ba(Kd,x);k=Kd.prototype;k.ca=function(){return!1};
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;this.S=a;this.B=vb(a,"Keyboard");this.C=vb(a,"SerialPort");this.video=vb(a,"Video");Nb(b,this,this.g.xb);Rb(b,this,this.g.yb);if(d){var e=this;Md(d,16384,function(){for(var a="",b=0;b<e.j.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=q(e.j[b]);e.K.i(a)})}};k.ua=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.wa=function(a){return a?this.save():!0};k.reset=function(){this.g.INIT&&!this.restore(this.g.INIT)&&this.aa("reset error")};
k.save=function(){var a=new Vc(this);switch(this.g.pa){case Nd.pa:a.set(0,[this.ea,this.A,this.ga,this.N,this.T,this.Y,this.Z]);break;case L.pa:a.set(0,[this.W,this.D]),a.set(1,[this.F,this.I]),a.set(2,[this.w,this.O,this.X,this.V]),a.set(3,[this.M,this.b,this.L,this.R,this.j])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.g.pa){case Nd.pa:return this.ea=b[0],this.A=b[1],this.ga=b[2],this.N=b[3],this.T=b[4],this.Y=b[5],this.Z=b[6],!0;case L.pa:return this.W=b[0],this.D=b[1],b=a[1],this.F=b[0],this.I=b[1],b=a[2],this.w=b[0],this.O=b[1],this.X=b[2],this.V=b[3],b=a[3],this.M=b[0],this.b=b[1],this.L=b[2],this.R=b[3],this.j=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.Bd=function(a,b){var c=this.ea;y(this,a,null,b,"STATUS0",c,!0);return c};
k.Cd=function(a,b){var c=this.A;y(this,a,null,b,"STATUS1",c,!0);return c};k.Dd=function(a,b){var c=this.ga;y(this,a,null,b,"STATUS2",c,!0);return c};k.Ad=function(a,b){var c=this.N>>8-this.T&255;y(this,a,null,b,"SHIFT.RESULT",c,!0);return c};k.Kd=function(a,b,c){y(this,a,b,c,"SHIFT.COUNT",null,!0);this.T=b};k.Md=function(a,b,c){y(this,a,b,c,"SOUND1",null,!0);this.Y=b};k.Ld=function(a,b,c){y(this,a,b,c,"SHIFT.DATA",null,!0);this.N=b<<8|this.N>>8};
k.Nd=function(a,b,c){y(this,a,b,c,"SOUND2",null,!0);this.Z=b};k.Od=function(a,b,c){y(this,a,b,c,"WATCHDOG",null,!0)};function Od(a){var b=0,c=0,d=~a.M;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
k.Ed=function(a,b){var c=this.D,c=c&~L.xa.Yb;if((Cc(this.u)&64)<<1&&(c|=L.xa.Yb,c!=this.D)){var d,e;d=this.L&1;e=this.L>>1&7;switch(e){case L.Aa.Ja.dd:break;case L.Aa.Ja.oc:this.M=this.M<<1|d;break;case L.Aa.Ja.wc:d=Od(this);this.j[d]=L.Aa.sb;ob(this,"doNVRCommand(): erase data at addr "+q(d));break;case L.Aa.Ja.pc:this.b=this.b<<1|d;break;case L.Aa.Ja.md:d=Od(this);e=this.b&L.Aa.sb;this.j[d]=e;ob(this,"doNVRCommand(): write data "+q(e)+" to addr "+q(d));break;case L.Aa.Ja.ad:d=Od(this);e=this.j[d];
null==e&&(e=L.Aa.sb);this.b=e;ob(this,"doNVRCommand(): read data "+q(e)+" from addr "+q(d));break;case L.Aa.Ja.cd:this.b<<=1;this.R=this.b&L.Aa.sb+1;break;default:ob(this,"doNVRCommand(): unrecognized command "+ea(e))}}c&=~L.xa.Zb;this.R&&(c|=L.xa.Zb);c&=~L.xa.Tb;if(d=this.B){d=this.B;if(e=d.A)e=d.u,e=Cc(d.u)>=d.F+e.Fa*e.U/1E3*1.2731488;e&&(d.A=!1);d=!d.A}d&&(c|=L.xa.Tb);c&=~L.xa.ac;this.C&&this.C.ia&Pd&&(c|=L.xa.ac);this.D=c;y(this,a,null,b,"FLAGS",c);return c};
k.Pd=function(a,b,c){y(this,a,b,c,"BRIGHTNESS");this.W=b};k.Sd=function(a,b,c){y(this,a,b,c,"NVR.LATCH");this.L=b};k.Rd=function(a,b,c){y(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.w=this.w&-4|a;break;case 1:this.w=this.w&-13|a<<2;this.video&&(b=this.video,a=this.w,ob(b,"updateScrollOffset("+a+")"),b.sa!==a&&((b.sa=a)?Nc(b,!0):b.ya=!0));break;case 2:switch(a){case 0:this.O=~this.O;break;case 2:case 3:this.X=3-a}break;case 3:this.V=a}};
k.Qd=function(a,b,c){y(this,a,b,c,"DC011");b&L.Ka.$c?(b&=L.Ka.$b,this.I!=b&&(this.I=b,this.video&&(a=this.video,b=this.I==L.Ka.$b?50:60,ob(a,"updateRate("+b+")"),a.gb=b))):(b&=L.Ka.Qb,this.F!=b&&(this.F=b,this.video&&(a=this.F==L.Ka.Qb?132:80,b=this.video,ob(b,"updateDimensions("+a+","+(80<a&&this.D&L.xa.Xb?14:24)+")"),b.O=a,b.fa=b.Ha,80<a&&b.fa--,Qd(b)&&Rd(b))))};
var Nd={pa:1978.1,fd:{qa:0,Qe:1,Ue:16,af:32,kf:64,jf:128,Za:14},Oa:{qa:1,uc:1,Yc:2,Uc:4,Vc:16,Wc:32,Xc:64,Za:8},gd:{qa:2,Pe:3,tf:4,Re:8,ef:16,ff:32,gf:64,Se:128,Za:0},pf:{qa:3},mf:{qa:2,bf:7},rf:{qa:3,uf:1,qf:2,hf:4,Ze:8,Te:16,ke:32},nf:{qa:4},sf:{qa:5,Ve:1,We:2,Xe:4,Ye:8,vf:16}},L={pa:100,xa:{qa:66,ac:1,Xb:2,Rc:4,df:8,cf:16,Zb:32,Yb:64,Tb:128},sc:{qa:66,INIT:0},Ka:{qa:194,ne:0,Qb:16,$c:32,$b:48,Dc:0,Ec:32},rb:{qa:162,lf:0,Gc:0,Cc:0,Fc:0,Bc:0},Aa:{$e:{qa:98},Ja:{pc:0,oc:1,cd:2,md:4,wc:5,ad:6,dd:7},
sb:16383}},Ld={SI1978:Nd,VT100:L};Nd.INIT=[[Nd.fd.Za,Nd.Oa.Za,Nd.gd.Za,0,0,0,0]];
L.INIT=[[L.sc.INIT,L.xa.Xb|L.xa.Rc],[L.Ka.Dc,L.Ka.Ec],[L.rb.Gc,L.rb.Cc,L.rb.Fc,L.rb.Bc],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];Nd.xb={0:Kd.prototype.Bd,1:Kd.prototype.Cd,2:Kd.prototype.Dd,3:Kd.prototype.Ad};
Nd.yb={2:Kd.prototype.Kd,3:Kd.prototype.Md,4:Kd.prototype.Ld,5:Kd.prototype.Nd,6:Kd.prototype.Od};L.xb={66:Kd.prototype.Ed};L.yb={66:Kd.prototype.Pd,98:Kd.prototype.Sd,162:Kd.prototype.Rd,194:Kd.prototype.Qd};Na(function(){for(var a=gb(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=eb(c),d=new Kd(d);fb(d,c)}});
function Sd(a){x.call(this,"ROM",a);this.b=null;this.A=a.addr;this.g=a.size;this.w=a.alias;this.j=a.file;this.B=fa(this.j);if(this.j){a=this.j;var b=ga(this.B);"json"!=b&&"hex"!=b&&(a=ja()+"/api/v1/dump?file="+this.j+"&format=bytes&decimal=true");var c=this;va(a,null,!0,function(a,b,f){Td(c,a,b,f)})}}ba(Sd,x);Sd.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Ud(this)};
Sd.prototype.ua=function(){if(this.ra){if(this.K){var a=this.K,b=this.id,c=this.A,d=this.g,e=this.ra,f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var l=h.o,p=h.a;if(void 0!==l){var r=f,l=[l>>>0,g],t=qa(r,l,a.dc);0>t&&r.splice(-(t+1),0,l)}p&&(h.a=p.replace(/''/g,'"'))}a.A.push({Hf:b,J:c,Gd:d,ra:e,cc:f})}delete this.ra}return!0};Sd.prototype.wa=function(){return!0};
function Td(a,b,c,d){if(d)a.aa("Unable to load system ROM (error "+d+": "+b+")");else{$a(a.ab,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.b=f;else if(g)for(a.b=Array(4*g.length),d=c=0;c<g.length;c++)a.b[d++]=g[c]&255,a.b[d++]=g[c]>>8&255,a.b[d++]=g[c]>>16&255,a.b[d++]=g[c]>>24&255;else a.b=e;a.ra=e.symbols;if(!a.b.length){v("Empty ROM: "+b);return}if(1==a.b.length){v(a.b[0]);return}}catch(h){a.aa("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=ca(b[e],16);Ud(a)}}
function Ud(a){if(!ib(a))if(!a.j)kb(a);else if(a.b&&a.H){a.g||(a.g=a.b.length);if(a.b.length!=a.g)hb(a,"ROM size ("+n(a.b.length,8,!0)+") does not match specified size ("+n(a.g,8,!0)+")");else{var b;b=a.A;if(zb(a.H,b,a.g,Zb)){var c;for(c=0;c<a.b.length;c++)Hb(a.H,b+c,a.b[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.w?b.push(a.w):null!=a.w&&a.w.length&&(b=a.w);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.H,g=d.g,h=[],l=d.A>>>f.g;0<g&&l<f.b.length;)h.push(f.b[l++]),g-=f.w;f=d.H;d=d.g;g=0;for(e>>>=
f.g;0<d&&e<f.b.length;){l=h[g++];if(!l)break;f.b[e++]=l;d-=f.w}}delete a.b}}kb(a)}}Na(function(){for(var a=gb(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=eb(c),d=new Sd(d);fb(d,c)}});
function Vd(a){x.call(this,"RAM",a);this.ra=this.g=null;this.w=a.addr;this.A=a.size;this.Qa=a.load;this.Ia=a.exec;this.j=!1;this.b=a.file;this.B=fa(this.b);if(this.b){a=this.b;var b=ga(this.B);"json"!=b&&"hex"!=b&&(a=ja()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;va(a,null,!0,function(a,b,f){f?c.aa("Unable to load RAM resource (error "+f+": "+a+")"):($a(c.ab,a,b),(a=wa(a,b))?(c.g=a.ma,c.ra=a.ra,null==c.Qa&&(c.Qa=a.Qa),null==c.Ia&&(c.Ia=a.Ia)):c.b=null,Wd(c))})}}ba(Vd,x);
Vd.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Wd(this)};Vd.prototype.ua=function(){return!0};Vd.prototype.wa=function(){return!0};
function Wd(a){!a.j&&a.A&&zb(a.H,a.w,a.A,1)&&(a.j=!0);if(!ib(a)){if(!a.j)v("No RAM allocated");else if(a.b){if(!a.g||!a.H)return;var b=a.w;null!==a.Qa&&(b=a.Qa);for(var c=0;c<a.g.length;c++)Hb(a.H,b+c,a.g[c]);if(null!==a.Ia){if(a.Ia==Xd){for(c=0;c<Yd.length;c++)Hb(a.H,Yd[c],118);Rc(a.u,function(a){return function(b){if(0<=Yd.indexOf(b)){var c=!1,d=a.u,e=a.K;if(b==Zd)switch(c=!0,d.A){case $d:ae(a,String.fromCharCode(d.C));break;case be:for(var l=jd(d),p="",r=255;r--;){var t=F(a.u,l++);if(36==t)break;
p+=String.fromCharCode(t)}ae(a,p);break;default:c=!1}c?Id.call(d):e&&(a.i("\nCP/M vector "+q(b)),C(d,b),e.da());b=!0}else b=!1;return b}}(a))}Tc(a.u,a.Ia)}delete a.g}kb(a)}}Vd.prototype.reset=function(){};function ae(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}var Zd=5,$d=2,be=9,Xd=256,Yd=[0,Zd];Na(function(){for(var a=gb(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=eb(c),d=new Vd(d);fb(d,c)}});
function ce(a){x.call(this,"Keyboard",a,0,65536);(a=a.model)&&!de[a]&&Ra("Unrecognized Keyboard8080 model: "+a);this.b=de[a]||{};this.reset();kb(this)}ba(ce,x);k=ce.prototype;
k.ca=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.P[e]){if("led"==a&&this.b.bb[b])return this.P[e]=c,!0;switch(b){case "kbd":case "screen":return c.onkeydown=function(a){return ee(d,a,!0)},c.onkeyup=function(a){return ee(d,a,!1)},c.onkeypress=function(a){a=a.keyCode;a>=m.pb&&a<=m.Db?d.j&(fe|ge)||(d.j|=ge,he(d,20,!0),De(d)):a>=m.pd&&a<=m.z&&d.j&ge&&(d.j&=~ge,he(d,20,!1),De(d));return!0},c.onpaste=function(a){a:{if(d.C&&d.C.Ra&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),
a=a.clipboardData||window.clipboardData)){Ee(d.C,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.b.Ta&&void 0!==this.b.Ta[b])return this.P[e]=c,c.onclick=function(a,b){return function(c){c.preventDefault&&c.preventDefault();he(a,b,!0,!0)}}(this,this.b.Ta[b]),!0}}return!1};k.Ea=function(a,b,c,d){this.S=a;this.u=c;this.K=d;var e=this;this.L=Ic(this.u,function(){Fe(e)});this.W=vb(a,"ChipSet");this.C=vb(a,"SerialPort");Nb(b,this,this.b.xb);Rb(b,this,this.b.yb)};
k.ua=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.wa=function(a){return a?this.save():!0};k.reset=function(){this.g=[];this.j=0;this.b.INIT&&!this.restore(this.b.INIT)&&this.aa("reset error")};k.save=function(){var a=new Vc(this);switch(this.b.pa){case M.pa:a.set(0,[this.D,this.B,this.A,this.F,-1])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.pa){case Ge.pa:return!0;case M.pa:return this.D=b[0],De(this,this.D&M.Ba.Vb),this.B=b[1],this.A=b[2],this.F=b[3],this.w=b[4],!0}return!1};function De(a,b){var c;null!=b?a.I=b:b=a.I;for(var d in a.b.bb)if(c="led-"+d,c=a.P[c]){var e=a.b.bb[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+n(16711680,6):"#000000"}if(c=a.P["led-caps-lock"])c.style.backgroundColor=a.j&ge?"#"+n(65280,6):"#000000"}
function ee(a,b,c){var d=!0,e=b.keyCode,f=2==b.location,g=0;switch(e){case 16:g=f?He:Ie;break;case 17:g=f?Je:Ke;break;case 18:g=f?Le:Me;break;case 91:g=f?Ne:Oe;break;case 20:g=ge}g&&(a.j=c?a.j|g:a.j&~g);var h;a:if(e=a.b.Pb[e]||e,a.b.Cb[e])h=e;else{for(h in a.b.Ta)if(a.b.Ta[h]===e)break a;h=null}h&&!b.metaKey&&(d=!1,a.j&(Pe|Qe)&&(13==h?(h=118,d=!0):8==h&&(h=46,d=!0),d&&(a.j=c?a.j|Qe:a.j&~Qe)),d=he(a,h,c),(!(h>=m.pb&&h<=m.Db)||a.j|Re)&&b.preventDefault&&b.preventDefault());return d}
function he(a,b,c,d){var e;a:{for(e=0;e<a.g.length;e++)if(a.g[e].Lb==b)break a;e=-1}if(c)0>e?a.g.push({Lb:b,Ib:Date.now(),ub:d||!1}):(a.g[e].Ib=Date.now(),a.g[e].ub=d||!1),d&&Fe(a);else if(0<=e){if(!a.g[e].ub&&(d=a.g[e].Ib)&&Date.now()-d<Se)return a.g[e].ub=!0,Fe(a),!0;a.g.splice(e,1)}if(a.W){d=0;switch(b){case "1p":d=Nd.Oa.Uc;break;case "2p":d=Nd.Oa.Yc;break;case "coin":d=Nd.Oa.uc;break;case "left":d=Nd.Oa.Wc;break;case "right":d=Nd.Oa.Xc;break;case "fire":d=Nd.Oa.Vc}d&&(a=a.W,b=d,a.A&=~b,c&&(a.A|=
b))}return!0}function Fe(a){for(var b=0,c=-1;b<a.g.length;){if(a.g[b].ub){var d=a.g[b].Lb,e=Se-(Date.now()-a.g[b].Ib);if(0<e){if(0>c||c>e)c=e}else{he(a,d,!1);b=0;continue}}b++}0<=c&&Jc(a.u,a.L,c)}k.Fd=function(a,b){var c=this.B;0<=this.w&&(this.w<this.g.length?(c=this.g[this.w],this.w++,c=M.Cb[c.Lb],c&128&&(c&=127)):(this.w=-1,c=M.Jc),this.B=c,Dd(this.u,1));y(this,a,null,b,"KBDUART.ADDRESS",c);return c};
k.Td=function(a,b,c){y(this,a,b,c,"KBDUART.STATUS");this.D=b;this.A=!0;this.F=Cc(this.u);De(this,b&M.Ba.Vb);b&M.Ba.ed&&(this.w=0,Dd(this.u,1))};var He=1,Ie=2,fe=3,Je=4,Ke=8,Re=12,Le=16,Me=32,Pe=48,Ne=64,Oe=128,ge=512,Qe=4096,Se=50,Te={};Te[m.pb]=37;Te[m.Rb]=39;Te[m.Ub]=32;
var Ge={pa:1978.1,Cb:{},Pb:Te,bb:{},Ta:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},N={},M={pa:100,Cb:(N[8]=3,N[m.Tc]=5,N[m.Sc]=6,N[m.od]=7,N[m.hd]=8,N[m.ld]=9,N[m.Q]=10,N[39]=16,N[221]=20,N[219]=21,N[m.Ac]=22,N[m.jd]=23,N[m.Zc]=24,N[m.E]=25,N[49]=26,N[37]=32,N[40]=34,N[117]=35,N[19]=35,N[192]=36,N[189]=37,N[57]=38,N[55]=39,N[52]=40,N[51]=41,N[27]=42,N[38]=48,N[114]=49,N[112]=50,N[46]=51,N[187]=52,N[48]=53,N[56]=54,N[54]=55,N[53]=56,N[50]=57,N[9]=58,N[103]=64,N[115]=65,N[113]=66,N[96]=67,N[118]=
68,N[220]=69,N[m.Ub]=70,N[m.Ic]=71,N[m.yc]=72,N[m.xc]=73,N[m.pb]=74,N[104]=80,N[2013]=81,N[98]=82,N[97]=83,N[222]=85,N[186]=86,N[m.Hc]=87,N[m.zc]=88,N[m.Rb]=89,N[m.bd]=90,N[110]=96,N[116]=97,N[101]=98,N[100]=99,N[13]=100,N[190]=101,N[188]=102,N[m.Qc]=103,N[m.rc]=104,N[m.nd]=105,N[119]=106,N[105]=112,N[99]=113,N[102]=114,N[109]=115,N[191]=117,N[m.Pc]=118,N[m[" "]]=119,N[m.kd]=120,N[m.tc]=121,N[m.Db]=122,N[120]=123,N[17]=124,N[16]=125,N[20]=126,N),Pb:{},bb:{},Ta:{"num-comma":116,"break":117,"line-feed":118,
"no-scroll":119,setup:120},qc:{qa:130,INIT:127},Ba:{qa:130,Nc:1,Mc:2,Lc:4,Kc:8,Oc:16,Wb:32,Vb:63,ed:64,me:128,INIT:0},Jc:127};M.bb={l4:M.Ba.Nc,l3:M.Ba.Mc,l2:M.Ba.Lc,l1:M.Ba.Kc,locked:M.Ba.Oc,local:M.Ba.Wb,online:~M.Ba.Wb,"caps-lock":ge};var de={SI1978:Ge,VT100:M};M.INIT=[[M.Ba.INIT,M.qc.INIT,!1,0,-1]];M.xb={130:ce.prototype.Fd};M.yb={130:ce.prototype.Td};Na(function(){for(var a=gb(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=eb(c),d=new ce(d);fb(d,c)}});
function Ue(a,b,c,d,e){x.call(this,"Video",a,0,262144);var f=this;this.Sa=Fa("Gecko/");var g=["","moz","ms","webkit"];this.M=a.screenWidth;this.I=a.screenHeight;this.la=a.bufferAddr;this.sd=a.bufferRAM;var h=a.bufferFormat;this.Y=h&&Ve[h.toUpperCase()]||We;this.O=a.bufferCols;this.Z=a.bufferRows;this.Ha=this.fa=a.cellWidth||1;this.ba=a.cellHeight||1;this.ea=null;this.Na=!1;this.na=a.bufferBits||1;this.ud=a.bufferLeft||0;if(this.g=a.bufferRotate)this.g=this.g%360,0<this.g&&(this.g-=360),-90!=this.g&&
(this.aa("unsupported buffer rotation: "+this.g),this.g=0);this.oa=a.interruptRate;this.hb=a.refreshRate||60;this.F=b;this.j=c;this.V=(this.xd=d)||b||null;this.zb=this.M;this.rd=this.I;this.La=this.M/this.O|0;this.Ma=this.I/this.Z|0;1<this.ba&&(this.Z++,this.sa=0,this.ya=!1);b=a.smoothing;(c=Ga("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.j[d]){this.j[d]=b;break}if(this.w=a.screenRotate)this.w=this.w%360,
0<this.w&&(this.w-=360),-90!=this.w?(this.aa("unsupported screen rotation: "+this.w),this.w=0):(this.j.translate(0,this.I),this.j.rotate(this.w*Math.PI/180),this.j.scale(this.I/this.M,this.M/this.I));if(this.b=e)if(this.b.Wa=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.Wa){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){Xe(f,!!(document.fullscreenElement||document.msFullscreenElement||
document.mozFullScreenElement||document.webkitFullscreenElement))},!1);break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){Xe(f,null)},!1);break}}if(this.R=a.fontROM)"json"!=ga(this.R)&&(this.R=ja()+"/api/v1/dump?file="+this.R+"&format=bytes"),va(this.R,null,!0,function(a,b,c){Ye(f,a,b,c)});this.Fa={}}ba(Ue,x);
function Qd(a){a.C=a.O*a.fa;a.N=a.Z*a.ba;var b=a.C,c=a.N;a.g&&(b=a.N,c=a.C);a.L=0;if(!a.sd&&(a.L=(a.C*a.na>>3)*a.N,!zb(a.H,a.la,a.L,3)))return!1;a.L?(a.Ua=a.j.createImageData(b,c),a.eb=16/a.na|0,Ze(a,a.L>>1)):Ze(a,(a.O+1)*a.Z);a.D=document.createElement("canvas");a.D.width=b;a.D.height=c;a.va=a.D.getContext("2d");a.T={};a.X=1<<a.na;a.U=Array(a.X+$e);a.U[0]=[0,0,0,255];a.U[1]=[255,255,255,255];a.Y==af&&(a.U[a.X+bf]=[255,255,0,255],a.U[a.X+cf]=[0,255,0,255]);a.Y==df&&(a.gb=60,a.za=!1,a.ga=Array(a.O));
return!0}Ue.prototype.Ea=function(a,b,c,d){this.S=a;this.H=b;this.u=c;this.K=d;Qd(this);if(this.B=vb(a,"Keyboard")){for(var e in this.Fa)this.B.ca("led",e,this.Fa[e]);this.F&&this.B.ca(this.xd?"textarea":"canvas","screen",this.V)}var f=this;this.tb=Ic(this.u,function(){Nc(f)});Jc(this.u,this.tb,1E3/Math.max(this.hb,this.oa));this.fb=0;this.R||kb(this)};
function Ye(a,b,c,d){if(d)a.aa("Unable to load font ROM (error "+d+": "+b+")");else{$a(a.ab,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){v("Empty font ROM: "+b);return}if(1==f.length){v(f[0]);return}if(2048==f.length)a.ea=f,Rd(a);else{a.aa("Unrecognized font data length ("+f.length+")");return}}catch(g){a.aa("Font ROM data error: "+g.message);return}(a.j||a.K)&&kb(a)}}
function Rd(a){a.ea&&(a.Na=a.Y==df,a.T[ef]=[ff(a,a.fa,a.ba),ff(a,a.fa,a.ba,a.za)],a.T[gf]=[ff(a,2*a.fa,a.ba),ff(a,2*a.fa,a.ba,a.za)],a.T[hf]=a.T[jf]=[ff(a,2*a.fa,2*a.ba),ff(a,2*a.fa,2*a.ba,a.za)])}
function ff(a,b,c,d){var e=8>=a.Ha?8:16,f=8<e?15:0,g=a.ea.length/e,h=!1===d,l={fa:b,ba:c};l.canvas=document.createElement("canvas");l.canvas.width=16*b;l.canvas.height=g/16*c;l.context=l.canvas.getContext("2d");for(var p=l.context.createImageData(b,c),r=0;r<g;r++){for(var t=0,A=t;t<a.ba;t++)for(var w=r*e+(f+t&e-1),w=d&&8==t?255:a.ea[w],u=0;u<c/a.ba;u++){for(var B=0,S=0,ya=S;S<a.fa;S++){for(var K=w&128>>(7<S?7:S),B=a.Na&&!K&&B?B:K,ia=0;ia<b/a.fa;ia++)h&&(B=!B),kf(a,p,ya,A,B?1:0),ya++;B=K}A++}l.context.putImageData(p,
(r&15)*b,(r>>4)*c)}return l}Ue.prototype.ua=function(){return!0};Ue.prototype.ca=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Fa[b]=c,!0;switch(b){case "fullScreen":return this.P[b]=c,this.b&&this.b.Wa?c.onclick=function(){d.Wa()}:c.parentNode.removeChild(c),!0}return!1};
Ue.prototype.Wa=function(){var a=!1;if(this.b){if(this.b.Wa){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.M/this.I;b>c&&(a=Math.round(c/b*100)+"%")}this.Sa?(this.F.style.width=a,this.F.style.width=a,this.F.style.display="block",this.F.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.Wa();a=!0}this.V&&this.V.focus()}return a};
function Xe(a,b){!b&&a.b&&(a.Sa?a.F.style.width=a.F.style.height="":a.b.style.width=a.b.style.height="");ob(a,"notifyFullScreen("+b+")")}function Ze(a,b){a.cb=b;a.W=!1;if(void 0===a.A||a.A.length!=a.cb)a.A=Array(a.cb)}function kf(a,b,c,d,e){d=a.g?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.Y==af&&(208<=c&&236>c?e=a.X+bf:28<=c&&72>c&&(e=a.X+cf));a=a.U[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function Nc(a,b){var c=!0;if(!b){a.oa&&(120==a.oa?a.fb&1?(Dd(a.u,2),c=!1):Dd(a.u,1):Dd(a.u,4));if(c&&a.W&&a.L){for(var d=a.H,e=a.L,f=!0,g=a.la>>>d.g;0<e&&g<d.b.length;)d.b[g].Ca&&(d.b[g].Ca=f=!1,d.b[g].gc=!0),e-=d.w,g++;f&&(c=!1)}Jc(a.u,a.tb,1E3/Math.max(a.hb,a.oa));a.fb++}if(c)if(1<a.fa)switch(a.Y){case df:for(var c=a.la,d=-1,e=0,f=60==a.gb?2:5,h=g=0,l=-1;e<a.Z;){var p=0,r=c,t=d,A=a.O;for(t!=ef&&(A>>=1);;){var w=Eb(a.H,r++);if((w&lf)==lf){var u=Eb(a.H,r++),d=u&mf,c=(u&nf)<<8|Eb(a.H,r),c=c+(u&of?
pf:qf);break}if(p<A)a.ga[p++]=w;else break}if(f)f--;else{for(;p<a.ga.length;)a.ga[p++]=0;if(0<=t)for(r=a.W&&a.A[g]==A,a.A[g++]=A,A=0;A<p;A++){w=a.ga[A];if(!r||w!==a.A[g]){a.A[l=g]=w;var u=a,B=a.va,S=w&127;if(w=u.T[t][w&128?1:0]){var ya=(S&15)*w.fa,S=(S>>4)*w.ba,K,ia,ta,ma,La=w.fa,dc=w.ba;B?(K=A*u.fa,ia=e*u.ba,ta=u.fa,ma=u.ba):(K=A*u.La,ia=e*u.Ma,ta=u.La,ma=u.Ma);w.fa>u.fa&&(K*=2,ta*=2);w.ba>u.ba&&(t==jf&&(S+=u.ba),dc=u.ba);B?B.drawImage(w.canvas,ya,S,La,dc,K,ia,ta,ma):(K+=0,ia+=0,u.j.drawImage(w.canvas,
ya,S,La,dc,K,ia,ta,ma))}h++}g++}e++}}a.W=!0;!b&&a.ya&&1==h&&(a.A[l]=-1,h=0);a.ya=!1;(h||b)&&a.va&&a.j.drawImage(a.D,0,a.sa,a.C,a.N-a.ba,0,0,a.zb,a.rd)}else{e=a.la;f=e+a.L;l=h=g=0;b=a.C;p=0;c=a.N;t=d=0;r=a.na;A=(1<<r)-1;a.ud&&(r=-r,t=16+r);for(;e<f;){u=Gb(a.H,e);if(a.W&&u===a.A[g])h+=a.eb;else{a.A[g]=u;(B=t)&&(u=u>>8|(u&255)<<8);h<b&&(b=h);for(w=a.eb;w--;)ya=u>>B&A,kf(a,a.Ua,h++,l,ya),B+=r;h>p&&(p=h);l<c&&(c=l);l>=d&&(d=l+1)}e+=2;g++;if(h>=a.C&&(h=0,l++,l>a.N))break}a.W=!0;b<a.C&&(e=p-b,d-=c,a.g&&
(f=b,g=e,b=c,e=d,c=a.C-(f+g),d=g),a.va.putImageData(a.Ua,0,0,b,c,e,d),a.j.drawImage(a.D,0,0,a.D.width,a.D.height,0,0,a.M,a.I))}}var bf=0,cf=1,$e=2,We=0,af=1,df=2,Ve={SI1978:af,VT100:df},ef=96,gf=64,hf=32,jf=0,lf=127,nf=15,of=16,mf=96,pf=8192,qf=16384;
Na(function(){for(var a=gb(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=eb(c),e=document.createElement("canvas");if(!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<=xa().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||Ga("aspect"));f&&.3<=f&&3.33>=f&&(Ka("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");Fa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var g=e.getContext("2d"),d=new Ue(d,e,g,f,c);fb(d,c)}});
function rf(a){x.call(this,"SerialPort",a,0,8388608);this.T=+a.adapter;switch(this.T){case 0:this.U=0;this.X=2;break;default:v("Unrecognized serial adapter #"+this.T);return}this.g=this.j=null;this.V=a.tabSize;this.R=a.charBOL;this.w=0;this.N=!1;this.D=!0;var b=a.binding;if("console"==b)this.j="";else{var c;a=sf;b&&(void 0===c&&(c="Panel"),(c=db(c,this.id))&&(b=c.P[b])&&this.ca(null,a,b))}this.A="";this.b=this.Ra=this.I=null;this.exports={connect:this.ic,receiveData:this.Kb,receiveStatus:this.be}}
ba(rf,x);k=rf.prototype;
k.ca=function(a,b,c,d){var e=this;switch(b){case sf:return this.P[b]=this.g=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),tf(e,b);return!0},c.onkeypress=function(a){a=a||window.event;tf(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.P[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.Kb(d);return!0},
!0}return!1};k.Ea=function(a,b,c,d){this.S=a;this.H=b;this.u=c;this.K=d;var e=this;this.Y=Ic(this.u,function(){e.Kb()});this.Z=Ic(this.u,function(){Ee(e)});this.W=vb(a,"ChipSet");Nb(b,this,uf,this.U);Rb(b,this,vf,this.U);kb(this)};
k.ic=function(a){if(!this.b){var b=vc(this.S,"connection");if(b){var c=b.split("->");if(2==c.length){var d=oa(c[0]);if(d!=this.$a)return;c=oa(c[1]);if(this.b=cb(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.D);if(this.Ra=e.receiveData){this.D=a;this.I=e.receiveStatus;this.status(this.ab+"."+d+" connected to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
k.ua=function(a,b){if(!b)if(this.ic(this.D),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.wa=function(a){return a?this.save():!0};k.reset=function(){wf(this)};k.save=function(){var a=new Vc(this),b=0,c=[];c[b++]=this.F;c[b++]=this.M;c[b++]=this.O;c[b++]=this.ia;c[b++]=this.B;c[b++]=this.C;c[b]=this.L;a.set(0,c);return a.data()};k.restore=function(a){return wf(this,a[0])};
function wf(a,b){var c=0;b||(b=xf);a.F=b[c++];a.M=b[c++];a.O=b[c++];a.ia=b[c++];a.B=b[c++];a.C=b[c++];a.L=b[c];return!0}function yf(a,b){var c=a.L&b;b&15||(c>>=4);b=zf[c];c=((a.B&Af)>>2)+6;a.B&Bf&&c++;c+=((a.B&Cf)>>6)+1>>1;return 1E3/Math.round(b/c)}function tf(a,b){ob(a,"receiveByte("+ea(b)+"), status="+ea(a.ia));return a.N||a.ia&Df?!1:(a.M=b,a.ia|=Df,Dd(a.u,a.X),!0)}
k.Kb=function(a){null!=a&&(this.A="number"!=typeof a?a:this.A+String.fromCharCode(a));this.A&&(tf(this,this.A.charCodeAt(0))&&(this.A=this.A.substr(1)),this.A&&this.u&&Jc(this.u,this.Y,yf(this,Ef)));return!0};k.be=function(a){this.ia&=~Ff;a&64&&(this.ia|=Ff)};function Ee(a,b){a.ia=a.ia|Pd|Gf;b&&a.Ra&&a.Ra.call(a.b,b)}k.zd=function(a,b){var c=this.M;y(this,a,null,b,"DATA",c);this.ia&=~Df;return c};k.yd=function(a,b){var c=this.ia;y(this,a,null,b,"STATUS",c);return c};
k.Jd=function(a,b,c){y(this,a,b,c,"DATA");this.O=b;this.ia&=~(Pd|Gf);ob(this,"transmitByte("+ea(b)+")");if(19==b)this.N=!0;else if(17==b)this.N=!1;else if(this.Ra&&this.Ra.call(this.b,b),this.g)if(8==b)this.g.value=this.g.value.slice(0,-1),0<this.w&&this.w--;else{var d;13!=b&&10!=b&&(d=pa[b]);a=d=d?"<"+d+">":String.fromCharCode(b);c=a.length;9==b?(b=this.V||8,c=b-this.w%b,this.V&&(a=na("",c))):13==b&&(this.w=c=0,a="\n");this.R&&!this.w&&c&&(a=String.fromCharCode(this.R)+a);this.g.value+=a;this.g.scrollTop=
this.g.scrollHeight;this.w+=c}else if(null!=this.j){if(10==b||1024<=this.j.length)this.i(this.j),this.j="";10!=b&&(this.j+=String.fromCharCode(b))}this.u&&Jc(this.u,this.Z,yf(this,Hf))};k.Id=function(a,b,c){y(this,a,b,c,"CONTROL");this.F?(this.I&&(b^this.C)&(If|Jf)&&(a=0,this.D?(a|=b&If?32:0,a|=b&Jf?320:0):(a|=b&If?16:0,a|=b&Jf?1048576:0),this.I.call(this.b,a)),this.C=b,this.C&Kf&&(this.F=!1)):(this.B=b,this.F=!0)};k.Hd=function(a,b,c){y(this,a,b,c,"BAUDRATES");this.L=b};
var Af=12,Bf=16,Cf=192,Jf=2,If=32,Kf=64,Pd=1,Df=2,Gf=4,Ff=128,Ef=15,Hf=240,zf=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],xf=[!1,0,0,133,142,39,238],sf="buffer",uf={0:rf.prototype.zd,1:rf.prototype.yd},vf={0:rf.prototype.Jd,1:rf.prototype.Id,2:rf.prototype.Hd};Na(function(){for(var a=gb(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=eb(c),d=new rf(d);fb(d,c)}});
function Lf(a){x.call(this,"Debugger",a);this.na=a.base||16;this.N=this.Y=this.C=0;this.L=!1;this.b=-1;this.g=[];this.R={}}ba(Lf,x);Lf.prototype.Gb=function(){return-1};Lf.prototype.Hb=function(){};
Lf.prototype.wb=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+1];b=[];if(a){a=a.replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(oa(a.substring(d,f))),d=f+1}}return b};
function Mf(a,b,c){for(c=c||-1;c--&&b.length;){var d=b.pop();if(2>a.length)return!1;var e=a.pop(),f=a.pop();switch(d){case "*":d=f*e;break;case "/":if(!e)return!1;d=f/e;break;case "%":if(!e)return!1;d=f%e;break;case "+":d=f+e;break;case "-":d=f-e;break;case "<<":d=f<<e;break;case ">>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f<e?1:0;break;case "<=":d=f<=e?1:0;break;case ">":d=f>e?1:0;break;case ">=":d=f>=e?1:0;break;case "==":d=f==e?1:0;break;case "!=":d=f!=e?1:0;break;case "&":d=f&e;break;
case "^":d=f^e;break;case "|":d=f|e;break;case "&&":d=f&&e?1:0;break;case "||":d=f||e?1:0;break;default:return!1}a.push(d|0)}return!0}
function Be(a,b,c){var d;if(b){b=Ce(a,b);for(var e=0,f=!1,g=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<m.length;){var p=m[e++],q=p.length,p=na(p);if(!p){f=!0;break}p=De(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++],y=p.length;k.length&&ze[p]<ze[k[k.length-1]]&&Ae(h,k,1);k.push(p);b=b.substr(q+y)}Ae(h,k)&&1==h.length||(f=!0);f?c&&a.g("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&Ee(a,null,
d))}return d}function Ce(a,b){for(var c,d=/\{(.*?)\}/;(c=b.match(d))&&!(0<=c[1].indexOf("{"));){var e=Be(a,c[1]);b=b.replace("{"+c[1]+"}",null!=e?Fe(a,e):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)b=b.replace("["+c[1]+"]","unimplemented");for(;c=b.match(/\$([a-z]+)/i);){d=null;switch(c[1].toLowerCase()){case "ops":d=a.aa-a.ma}if(null==d)break;b=b.replace(c[0],d.toString())}return b}
function De(a,b,c,d){var e;null!=b?(e=a.Sb(b),0<=e?e=a.Tb(e):(e=a.da[b],null==e&&(e=aa(b,a.Wa))),null!=e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
function Ee(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++){g&&(g=","+g);var k=d&255,m=void 0,p=8,q="";p?32<p&&(p=32):p=32;for(var y=null==k||isNaN(k),u=m=m||p;0<p--;)u||(q=","+q,u=m),q=(y?"?":k&1?"1":"0")+q,k>>=1,u--;g=q+g;d>>=8}d=t(c,0,!0)+" "+c+". "+ba(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.g((null!=b?b+": ":"")+d);return e}
function Ge(a,b){if(b)return Ee(a,b,a.da[b]);var c=0;for(b in a.da)Ee(a,b,a.da[b]),c++;return 0<c}function Fe(a,b){switch(a.Wa){case 8:a=ba(b,NaN);break;case 10:a=b.toString();break;default:a=t(b,NaN)}return a}
function He(a){ye.call(this,a);this.style=Ie;this.L=X();this.Va=X();this.ba=X();this.D=[];this.F=this.N=this.B=[];Je(this);this.ia=0;Ke(this);this.va={};Le(this,a.messages);this.Ca=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return oc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return oc(b,a)})}A(He,ye);
var Me={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},
Ie=8080,Ne="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(" "),Oe="NONE ADC ADC ADD ADD AND AND CALL CALLC CALLS CALLNC CALLNZ CALLNS CALLP CALLNP CALLZ NOT CMC CMP CMP DAA ADD DEC DEC CLI STI HLT IN INC INC JMP JC JS JNC JNZ JNS JP JNP JZ MOV MOV MOV MOV MOV MOV NOP OR OR OUT JMP POP PUSH RCL RCR RET RETC RETS RETNC RETNZ RETNS RETP RETNP RETZ ROL ROR RST SBB SBB MOV MOV MOV MOV STC SUB SUB XCHG XOR XOR XCHG".split(" "),
Pe="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),Qe=[[45],[42,2067,32],[71,2131,18193],[29,2067],[28,17],[22,17],[44,17,32],[63],[45,32768],[21,18963,2067],[40,18193,2131],[23,2067],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2323,32],[71,2387,18193],[29,2323],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,18963,2323],[40,18193,2387],[23,2323],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2579,32],[68,115,18963],[29,2579],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,18963,
2579],[41,18963,115],[23,2579],[28,1297],[22,1297],[44,1297,32],[16,18193],[45,32768],[42,2835,32],[70,115,18193],[29,2835],[28,1617],[22,1617],[44,1617,32],[72],[45,32768],[21,18963,2835],[39,18193,115],[23,2835],[28,1809],[22,1809],[44,1809,32],[17],[43,17,17],[43,17,273],[43,17,529],[43,17,785],[43,17,1041],[43,17,1297],[43,17,1617],[43,17,1809],[43,273,17],[43,273,273],[43,273,529],[43,273,785],[43,273,1041],[43,273,1297],[43,273,1617],[43,273,1809],[43,529,17],[43,529,273],[43,529,529],[43,529,
785],[43,529,1041],[43,529,1297],[43,529,1617],[43,529,1809],[43,785,17],[43,785,273],[43,785,529],[43,785,785],[43,785,1041],[43,785,1297],[43,785,1617],[43,785,1809],[43,1041,17],[43,1041,273],[43,1041,529],[43,1041,785],[43,1041,1041],[43,1041,1297],[43,1041,1617],[43,1041,1809],[43,1297,17],[43,1297,273],[43,1297,529],[43,1297,785],[43,1297,1041],[43,1297,1297],[43,1297,1617],[43,1297,1809],[43,1617,17],[43,1617,273],[43,1617,529],[43,1617,785],[43,1617,1041],[43,1617,1297],[26],[43,1617,1809],
[43,1809,17],[43,1809,273],[43,1809,529],[43,1809,785],[43,1809,1041],[43,1809,1297],[43,1809,1617],[43,1809,1809],[3,18193,17],[3,18193,273],[3,18193,529],[3,18193,785],[3,18193,1041],[3,18193,1297],[3,18193,1617],[3,18193,1809],[2,18193,17],[2,18193,273],[2,18193,529],[2,18193,785],[2,18193,1041],[2,18193,1297],[2,18193,1617],[2,18193,1809],[73,18193,17],[73,18193,273],[73,18193,529],[73,18193,785],[73,18193,1041],[73,18193,1297],[73,18193,1617],[73,18193,1809],[66,18193,17],[66,18193,273],[66,
18193,529],[66,18193,785],[66,18193,1041],[66,18193,1297],[66,18193,1617],[66,18193,1809],[5,18193,17],[5,18193,273],[5,18193,529],[5,18193,785],[5,18193,1041],[5,18193,1297],[5,18193,1617],[5,18193,1809],[76,18193,17],[76,18193,273],[76,18193,529],[76,18193,785],[76,18193,1041],[76,18193,1297],[76,18193,1617],[76,18193,1809],[46,18193,17],[46,18193,273],[46,18193,529],[46,18193,785],[46,18193,1041],[46,18193,1297],[46,18193,1617],[46,18193,1809],[18,18193,17],[18,18193,273],[18,18193,529],[18,18193,
785],[18,18193,1041],[18,18193,1297],[18,18193,1617],[18,18193,1809],[58],[50,2067],[34,51],[30,51],[11,51],[51,2067],[4,18193,33],[65,128],[62],[54],[38,51],[30,32819],[15,51],[7,51],[1,18193,33],[65,128],[57],[50,2323],[33,51],[48,33,18193],[10,51],[51,2323],[74,18193,33],[65,128],[55],[54,32768],[31,51],[27,18193,33],[8,51],[7,32819],[67,18193,33],[65,128],[61],[50,2579],[37,51],[78,19283,18963],[14,51],[51,2579],[6,18193,33],[65,128],[60],[49,2579],[36,51],[75,18963,18707],[13,51],[7,32819],[77,
18193,33],[65,128],[59],[50,3603],[35,51],[24],[12,51],[51,3603],[47,18193,33],[65,128],[56],[69,19219,18963],[32,51],[25],[9,51],[7,32819],[19,18193,33],[65,128]];l=He.prototype;
l.Qa=function(a,b,c,d){this.w=b;this.b=c;this.A=a;(a=lc(a,"messages"))&&Le(this,a);this.Ha=Qe;Od(this,64,function(a){a:{var b=d.w.W,c=a[0],e=a=0,k=b.length;if(c){a=Re(Se(d,c));if(-1===a){d.g("invalid address: "+c);break a}e=a>>>d.w.ha;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,m=0;k--;){var p=b[e];p.type==c?m++||d.g("..."):(c=p.type,m=xb[c],p&&d.g(t(p.id)+" %"+t(e<<d.w.ha)+" %%"+t(p.G)+" "+v(p.Cb)+" "+
v(p.size)+" "+m),c!=Yb&&(c=-1),m=0);a+=d.w.Ja;e++}}});F(this)};
l.pa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ga=this.M[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?(b=null,d.j<d.u.length-1&&(b=d.u[++d.j])):40==a.keyCode&&(0<d.j?b=d.u[--d.j]:(b="",d.j=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.M[b]=c,Ka(c,function(){if(d.ga){var a=d.ga.value;
d.ga.value="";oc(d,a,!0);return!0}return!1}),!0;case "step":return this.M[b]=c,Ka(c,function(a){var b=!1;ib(d,!0)||(hb(d,!0),b=d.ob(a?1:0),hb(d,!1));return b}),!0}return!1};l.Bb=function(){this.ga&&this.ga.focus()};function Re(a){a=a&&a.G;null==a&&(a=-1);return a}l.Z=function(a,b){var c=255,d=Re(a);-1!==d&&(c=yb(this.w,d),b&&Te(a,b));return c};l.ab=function(a,b){var c=65535,d=Re(a);-1!==d&&(c=zb(this.w,d),b&&Te(a,b));return c};
l.ua=function(a,b,c){var d=Re(a);-1!==d&&(Ab(this.w,d,b),c&&Te(a,c),pc(this.b,!0))};l.Mb=function(a,b,c){var d=Re(a);if(-1!==d){var e=this.w,f=d&e.w,g=(d&e.u)>>>e.ha;f!=e.w?e.W[g].Zb(f,b&65535,d):(e.W[g++].Db(f,b&255,d),e.W[g&e.D].Db(0,b>>8&255,d+1));c&&Te(a,c);pc(this.b,!0)}};function X(a){return{G:a,Pa:!1}}function Ue(a){return[a.G,a.Pa]}function uf(a){return{G:a[0],Pa:a[1]}}
function Se(a,b,c){var d;c=(c?a.L:a.Va).G;if(void 0!==b){d=b=Ce(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.D.length;c++){var f=a.D[c].Fa[d];if(void 0!==f){d=f.o;void 0!==d&&(e=X(d));break}}if(d=e)return d;c=Be(a,b,void 0)}null!=c&&(d=X(c));return d}function vf(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Kd=a.Jb(b.Gc=c[2]))}function Te(a,b){null!=a.G&&(a.G+=b||1)}function Z(a){return t(a,4)}
function wf(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.Z(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Le(a,b){a.H=a;a.sa=a.Nd=536870912;a.ka=null;a.la=[];b=a.Jb(b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in nb)0<=sa(b,c)&&(a.sa|=nb[c],a.g(c+" messages enabled"))}function Od(a,b,c){for(var d in nb)if(b==nb[d]){a.va[d]=c;break}}
l.Sb=function(a,b){var c;a=a.toUpperCase();null==b?c=sa(Pe,a):(c=sa(Pe,a.substr(b,2)),0>c&&(c=sa(Pe,a.substr(b,1))));return c};function xf(a,b){var c=0;a=a.Tb(b);if(void 0!==a)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 6:c=2;break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:c=4}return c?t(a,c):"??"}
l.Tb=function(a){var b;if(0<=a){var c=this.b;switch(a){case 7:b=c.i;break;case 0:b=c.R;break;case 1:b=c.S;break;case 8:b=Tc(c);break;case 2:b=c.T;break;case 3:b=c.U;break;case 9:b=Vc(c);break;case 4:b=c.V;break;case 5:b=c.Y;break;case 10:b=J(c);break;case 6:b=c.Z(J(c));break;case 11:b=c.oa;break;case 12:b=c.P;break;case 13:b=Rc(c);break;case 14:b=Rc(c)&255|c.i<<8}}return b};
function yf(a,b){b=Ce(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Sb(b,c+1),0<=e&&(b=b.substr(0,c)+xf(a,e)+b.substr(c+1+Pe[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=aa(e,16),null!=d&&32<=d&&128>d?(d=e+" '"+String.fromCharCode(d)+"'",b=b.replace("#"+e,d),c+=d.length):c++;for(c=0;0<=(c=b.indexOf("$",c));)e=b.substr(c+1,9),(d=Se(a,e))?(d=e+' "'+wf(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=Se(a,e))?(Te(d),d=e+
' "'+wf(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}l.message=function(a,b){b&&(a+=" at "+Z(X(this.b.P).G));this.sa&1073741824?this.la.push(a):this.ka&&a==this.ka||(this.ka=a,this.sa&-2147483648&&(this.qa(),a+=" (cpu halted)"),this.g(a),this.b&&(a=this.b,Jc(a),a.O=0,pc(a)))};
function eb(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.sa&h)!=h||a.message(b.fb+"."+(null!=d?"outPort":"inPort")+"("+v(c)+","+(f?f:"unknown")+(null!=d?","+ca(d):"")+")"+(null!=g?": "+ca(g):"")+(null!=e?" at "+Z(e):""))}
function Ke(a){var b;if(Hd(a)){if(!a.K||!a.K.length){a.K=Array(1E3);for(b=0;b<a.K.length;b++)a.K[b]=X();a.ea=0;a.g("instruction history buffer allocated")}if(!a.I||!a.I.length)for(a.I=Array(256),b=0;b<a.I.length;b++)a.I[b]=[b,0]}else a.K&&a.K.length&&a.g("instruction history buffer freed"),a.ea=0,a.K=[],a.I=[]}l.cb=function(a){if(!zf(this))return!1;this.b.cb(a);return!0};
l.ob=function(a,b,c){if(!zf(this))return!1;this.J=0;a||Hd(this)&&Id(this,this.b.P,0);try{var d=this.b.ob(a);0<d&&(this.J+=d,Fc(this.b,d,!0),qc(this.b,d),this.aa++)}catch(e){"number"!=typeof e&&(this.J=0,kb(this.b,e.stack||e.message))}!1!==c&&pc(this.b);this.Aa(b||!1);return 0<this.J};l.qa=function(a){this.b&&this.b.qa(a)};l.Aa=function(a){void 0===a&&(a=!0);this.L=X(this.b.P);a&&1!=this.X?Af(this):Bf(this)};
function zf(a){var b;if(b=a.b&&jb(a.b))b=a.b,b.C.xa?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!ib(a.b)?(a=a.b,a.C.error?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}l.Ga=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};l.Ka=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){Ke(this);this.aa=this.ma=0;this.ka=null;this.J=0;this.L=X(this.b.P);this.C.za=!1;Cf(this);a||this.Aa()};
l.save=function(){var a=new Sc(this);a.set(0,Ue(this.L));a.set(1,Ue(this.ba));a.set(2,[this.u,this.O,this.sa]);a.set(3,this.D);return a.data()};l.restore=function(a){var b=0;void 0!==a[2]&&(this.L=uf(a[b++]),this.ba=uf(a[b++]),this.u=a[b][0],"string"==typeof this.u&&(this.u=[this.u]),this.O=a[b][1],this.sa|=a[b][2]);a[3]&&(this.D=a[3]);return!0};l.start=function(a,b){this.X||this.g("running");this.C.za=!0;this.rb=a;this.sb=b};
l.stop=function(a,b){if(this.C.za){this.C.za=!1;this.J=b-this.sb;if(!this.X){b="stopped";if(this.J){a-=this.rb;var c=0<a?Math.round(1E3*this.J/a):0;b+=" (";Hd(this)&&(b+=this.aa+" opcodes, ",this.ma-=this.aa,this.aa=0);b+=this.J+" cycles, "+a+" ms, "+c+" hz)"}else gb(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.g(b)}this.Aa(!0);this.Bb();Cf(this,this.b.P)}};function Hd(a){return 1<a.F.length||!!a.ia}
function Id(a,b,c){var d=a.b;if(0<c&&(a.ia&&!--a.ia||gc(a,b,1,a.F)))return!0;0<=c&&a.I.length&&(a.aa++,b=yb(a.w,b),null!=b&&(a.I[b][1]++,b=a.K[a.ea],b.G=d.P,b.Pa=!1,++a.ea==a.K.length&&(a.ea=0)));return!1}function Fb(a,b,c){a.g("break on input from port "+v(b)+": "+t(c));a.qa(!0)}function Tb(a,b,c){a.g("break on output to port "+v(b)+": "+t(c));a.qa(!0)}
function Je(a){var b,c;a.F=["bp"];if(a.N)for(b=1;b<a.N.length;b++){c=a.N[b];var d=a.w;hc(d.W[Re(c)>>>d.ha],!1)}a.N=["br"];if(a.B)for(b=1;b<a.B.length;b++)c=a.B[b],d=a.w,hc(d.W[Re(c)>>>d.ha],!0);a.B=["bw"];a.Xa=0}l.Za=function(a,b,c){var d=!0;c||Df(this,a,b,!1,!0);if(a!=this.F){var e=Re(b);if(-1===e)this.g("invalid address: "+Z(b.G)),d=!1;else{var f=this.w;f.W[e>>>f.ha].Za(e&f.w,a==this.B)}}d&&(a.push(b),c?b.Pa=!0:(Ef(this,a,a.length-1,"set"),Ke(this)));return d};
function Df(a,b,c,d,e){var f=!1;c=Re(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==Re(h)&&(!d||h.Pa)){f=!0;h.Pa||e||Ef(a,b,g,"cleared");b.splice(g,1);b!=a.F&&(d=a.w,hc(d.W[c>>>d.ha],b==a.B));h.Pa||Ke(a);break}}return f}function Ff(a,b){for(var c=1;c<b.length;c++)Ef(a,b,c);return b.length-1}function Ef(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.G)+(d?" "+d:c.Gc?' "'+c.Gc+'"':""))}
function Cf(a,b){if(void 0!==b)gc(a,b,1,a.F,!0),a.X=0;else for(b=1;b<a.F.length;b++){var c=a.F[b];if(c.Pa){if(!Df(a,a.F,c,!0))break;b=0}}}
function gc(a,b,c,d,e){var f=!1;if(!a.Xa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.Pa)for(var k=Re(h),m=0;m<c;m++)if(b+m==k){var p,f=!0;h.Pa&&(Df(a,d,h,!0),e=!0);if(p=h.Kd){for(var f=!1,q=0;q<p.length;q++)if(!Gf(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var y=q+1;y<p.length&&p[y].indexOf("else");y++)q++;if(y==p.length){f=!0;break}}a.b.C.za||(f=!0)}if(f){e||Ef(a,d,g,"hit");break}}}a.Xa--;return f}
function Hf(a,b,c,d){for(var e=X(b.G),f=a.Z(b,1),g=a.Ha[f],h="",k=(8086!=a.style?Ne:Oe)[g[0]],m=g.length-1,p=0,q,y=1;y<=m;y++){var u="";q=g[y];if(void 0!==q&&!(q&16384&&a.style==Ie)){var r=q&240;if(r){var z=q&15;z?p=z:q|=p;q&61440||(q|=1==y?8192:4096);if(r&32)a:{u=a;r=q;z=b;switch(r&15){case 1:z=t(u.Z(z,1),2);break;case 2:z=t(u.Z(z,1)<<24>>24,4);break;case 3:z=t(u.ab(z,2),4);break;default:u="imm("+v(r)+")";break a}8086==u.style&&r&64?z="["+z+"]":r&16||(z=(u.style==Ie?"$":"0x")+z);u=z}else r&16?(u=
(q&3840)>>8,r=Pe[u],8086==a.style&&q&64&&(6==u&&(r="HL"),r="["+r+"]"),u=r):r&128&&(u=(f>>3&7).toString());if(!u||!u.length){h="INVALID";break}0<h.length&&(h+=",");h+=u||"???"}}}f="";g=Z(e.G)+" ";if(-1!==e.G&&-1!==b.G){do if(f+=t(a.Z(e,1),2),null==e.G)break;while(e.G!=b.G)}g+=ma(f,10);g=g+(q&32768?"*":" ")+ma(k,7);h&&(g+=" "+h);c&&(g=ma(g,40)+";"+c,g=a.b.C.jb?g+("cycles="+Dc(a.b).toString()+" cs="+t(a.b.xb)):g+(null!=d?"="+d.toString():""));return g}
function If(a,b){switch(b){case "IF":a=a.b.ta&512;break;case "SF":a=cd(a.b);break;case "ZF":a=bd(a.b);break;case "AF":a=ad(a.b);break;case "PF":a=$c(a.b);break;case "CF":a=Yc(a.b);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Jf(a,b){return Pe[b]+"="+xf(a,b)+" "}function Kf(a){return Jf(a,7)+Jf(a,8)+Jf(a,9)+Jf(a,10)+Jf(a,11)+If(a,"IF")+If(a,"SF")+If(a,"ZF")+If(a,"AF")+If(a,"PF")+If(a,"CF")}l.zc=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Lf(a,b,c){var d=[],e=Re(b)>>>0;for(b=0;b<a.D.length;b++){var f=a.D[b],g=f.G>>>0,h=f.$d;if(e>=g&&e<g+h){e=pa(f.yc,[e-g],a.zc);0<=e?Mf(a,b,e,d):c&&(e=~e,Mf(a,b,e-1,d),Mf(a,b,e,d));break}}return d}function Mf(a,b,c,d){var e={},f=a.D[b].yc,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.D[b].Fa[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
function Nf(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c=0;if(a.I)if("clear"==b){for(b=0;b<a.I.length;b++)a.I[b]=[b,0];a.g("frequency data cleared");c++}else if(void 0!==b)a.g("unknown frequency command: "+b),c++;else{var d=a.I.slice();d.sort(function(a,b){return b[1]-a[1]});var e=8086!=a.style?Ne:Oe;for(b=0;b<d.length;b++){var f=d[b][0],g=d[b][1];g&&(a.g((e[a.Ha[f][0]]+" ").substr(0,5)+" ("+ca(f)+"): "+g+" times"),c++)}}c||a.g("no frequency data available")}}
function Of(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ge(a)||a.g("no variables"),!0;if(!c[2])return Ge(a,c[1]);if(!c[3])return delete a.da[c[1]],!0;b=Be(a,c[3]);return void 0!==b?(a.da[c[1]]=b,!0):!1}a.g("invalid assignment:"+b);return!1}
function Pf(a,b,c){var d=null;if(b=Se(a,b,!0)){var e=Lf(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.G-e[1])&&(g=" + "+v(f)),f=e[0]+" ("+Z(e[1])+")"+g,c&&a.g(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.G)&&(g=" - "+v(f)),f=e[4]+" ("+Z(e[5])+")"+g,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
function Qf(a,b){switch(b[1]){case "8080":a.style=Ie;break;case "8086":a.style=8086;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.b.lb=c;break;case "start":a.b.yb=c;break;case "stop":a.b.mb=c;break;default:a.g("unknown cs option");return}void 0!==c&&nc(a.b);a.g("checksums "+(a.b.C.jb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Ec(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.bb.toFixed(2)+"Mhz")+" ("+
a.b.Ra+"x)");return;case "?":a.g("debugger options:");a.g("\t8080\t\tselect 8080-style mnemonics");a.g("\t8086\t\tselect 8086-style mnemonics");a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.g("unknown option: "+b[1]);return}}a.g(a.style+"-style mnemonics enabled")}
function Af(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.b;null==c&&(c=!0);if(b&&1<b.length){var e=b[1],f=e.indexOf("=");if(0<f)b=e.substr(f+1),e=e.substr(0,f);else if(2<b.length)b=b[2];else{a.g("missing value for "+b[1]);return}f=Be(a,b);if(void 0===f)return;switch(e.toUpperCase()){case "A":d.i=f&255;break;case "B":d.R=f&255;break;case "BC":d.R=f>>8&255;case "C":d.S=f&255;break;case "D":d.T=f&255;break;
case "DE":d.T=f>>8&255;case "E":d.U=f&255;break;case "H":d.V=f&255;break;case "HL":d.V=f>>8&255;case "L":d.Y=f&255;break;case "SP":d.oa=f&65535;break;case "PC":I(d,f);a.L=X(d.P);break;case "PS":Pc(d,f);break;case "PSW":Pc(d,f&255|d.ta&-256);d.i=f>>8;break;case "CF":d.ca=f?d.ca|256:d.ca&255;break;case "PF":f?$c(d)||(d.fa^=1):$c(d)&&(d.fa^=1);break;case "AF":d.ya=f?~d.fa&16|d.ya&-17:d.fa&16|d.ya&-17;break;case "ZF":d.ca=f?d.ca&-256:d.ca|255;break;case "SF":f?cd(d)||(d.fa^=192):cd(d)&&(d.fa^=192);break;
case "IF":d.ta=f?d.ta|512:d.ta&-513;break;default:a.g("unknown register: "+e);return}pc(d);a.g("updated registers:")}a.g(Kf(a));c&&(a.L=X(d.P),Bf(a,Z(a.L.G)))}}function Rf(a,b){b=na(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(yf(a,c[2])):Be(a,b,!0)}function Sf(a,b,c){var d="t"!=b;c=De(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ga(c,function(){return hb(a,!0)&&a.ob(e,d,!1)},function(){pc(a.b);hb(a,!1)})}
function Bf(a,b,c,d){if(b=Se(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=Se(a,c,!0);if(!d||d.G<b.G)return;e=d.G-b.G;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=ib(a,!1)||a.X?a.J:null;var g=null!=f?"cycles":null,h=Lf(a,b),k=b.G;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.g(m)}h[3]&&(g=h[3],f=null);f=Hf(a,b,g,f);a.g(f);a.L=b;e-=b.G-k;c++}}}
l.Jb=function(a,b,c){if(b)if(a){0>this.j&&this.u.length&&(this.j=0);if(0>this.j||a!=this.u[this.j])this.u.splice(0,0,a),this.j=0;this.j--}else this.O?a="end":a=this.u[this.j+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(na(a.substring(d,f))),d=f+1}}return b};
function Gf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.O&&(a.g("ended assemble at "+Z(a.ba.G)),a.L=a.ba,a.O=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ka=null;if(jb(a)&&0<b.length){a.O&&(b="a "+Z(a.ba.G)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var g=f[0],h=g.charAt(0),k=1;k<g.length;k++){var m=g.charAt(k);if("?"==h||"r"==h||"a">m||"z"<m){f[0]=g.substr(k);f.unshift(g.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var p=Se(a,f[1],!0);if(p)if(a.ba=
p,void 0===f[2])a.g("begin assemble at "+Z(p.G)),a.O=!0,pc(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var y=0;y<q.length;y++)a.ua(p,q[y],1);a.g(Hf(a,a.ba))}}break;case "b":a:{var u=f[0],r=f[1],z=b;if("?"==r)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 H=u.charAt(1);if("l"==H){var ha;ha=0+Ff(a,a.F);ha+=Ff(a,a.N);(ha+=Ff(a,a.B))||a.g("no breakpoints")}else if("n"==H)a.ia=De(a,r),a.g("break after "+a.ia+" instruction(s)");else if(void 0===r)a.g("missing breakpoint address");else{var C=X();if("*"!=r&&(C=Se(a,r,!0),!C))break a;r=v(C.G);"c"==H?null==C.G?(Je(a),a.g("all breakpoints cleared")):Df(a,a.F,C)||Df(a,a.N,C)||Df(a,a.B,C)||a.g("breakpoint missing: "+Z(C.G)):
"i"==H?a.g("breakpoint "+(Cb(a.w,C.G)?"enabled":"cleared")+": port "+r+" (input)"):"o"==H?a.g("breakpoint "+(Hb(a.w,C.G)?"enabled":"cleared")+": port "+r+" (output)"):null!=C.G&&(vf(a,C,z),"p"==H?a.Za(a.F,C):"r"==H?a.Za(a.N,C):"w"==H?a.Za(a.B,C):a.g("unknown breakpoint command: "+H))}}}break;case "c":a.Ia&&(a.Ia.value="");break;case "d":a:{var U,ea=f[0],Y=f[1],va=f[2],Gb=f[3];if("?"==Y){var pb="";for(U in nb)a.va[U]&&(pb&&(pb+=","),pb+=U);pb+=",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");pb.length&&a.g("dump extension commands:\n\t"+pb)}else if("state"==Y){var Ve=Tf(a.A,!0);"console"==va?console.log(Ve):(a.Ia&&(a.Ia.value=""),a.g(Ve))}else if("symbols"==Y)for(var md=0;md<a.D.length;md++){var nd=a.D[md],qb;for(qb in nd.Fa)if("."!=qb.charAt(0)){var We=nd.Fa[qb].o;if(void 0!==We){var Xe=nd.Fa[qb].l;Xe&&(qb=Xe);a.g(Z(We)+" "+qb)}}}else{if("d"==
ea){for(U in nb)if(f[1]==U){var Ye=a.va[U];Ye?(f.shift(),f.shift(),Ye(f)):a.g("no dump registered for "+Y);break a}Y||(ea=a.ub||"db")}else a.ub=ea;if("dh"==ea){var Ze=Y,$e=va,af="",bf=0,wa=a.ea,Ha=a.K;if(Ha.length){var ja=+Ze||a.hb,Kb=+$e||10;isNaN(ja)?ja=Kb:af="more ";ja>Ha.length&&(a.g("note: only "+Ha.length+" available"),ja=Ha.length);wa-=ja;0>wa&&(null==Ha[Ha.length-1].G?(ja=wa+ja,wa=0):wa+=Ha.length);var od=[];"call"==$e&&(Kb=1E5,od=["CALL"]);for(void 0!==Ze&&a.g(ja+" instructions earlier:");0<
Kb&&wa!=a.ea;){var cf=Ha[wa++];if(null==cf.G)break;var Lb=X(cf.G),kg=ja--,df=Hf(a,Lb,"history",kg);(!od.length||0<=df.indexOf(od[0]))&&a.g(df);Lb.Rb&&(wa+=Lb.Rb,Kb-=Lb.Rb,ja-=Lb.Rb);wa>=Ha.length&&(wa=0);a.hb=ja;bf++;Kb--}}bf||(a.g("no "+af+"history available"),a.hb=void 0)}else{var rc=Se(a,Y);if(rc){var sc=0;va&&("l"==va.charAt(0)&&(va=va.substr(1)||Gb),sc=De(a,va)>>>0,65536<sc&&(sc=65536));for(var Mb="",tc="dd"==ea?4:"dw"==ea?2:1,uc=tc*sc||128,lg=uc+15>>4||1;lg--&&0<uc;){var vc=0,pd=0,Nb,qd="",
ef="",Y=Z(rc.G);for(Nb=16;0<Nb&&0<uc;Nb--){var wc=a.Z(rc,1),vc=vc|wc<<(pd++<<3);pd==tc&&(qd+=t(vc,2*tc),qd+=1==tc?9==Nb?"-":" ":" ",vc=pd=0);ef+=32<=wc&&128>wc?String.fromCharCode(wc):".";uc--}Mb&&(Mb+="\n");Mb+=Y+" "+qd+(Nb?"":" "+ef)}Mb&&a.g(Mb);a.Va=rc}}}}break;case "e":if("else"==f[0])break;var xc=1,ff=255,gf=a.Z,hf=a.ua;"ew"==f[0]&&(xc=2,ff=65535,gf=a.ab,hf=a.Mb);var jf=xc<<1,kf=f[1];if(null==kf)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");
else{var yc=Se(a,kf);if(yc)for(var zc=2;zc<f.length;zc++){var Ob=Be(a,f[zc]);if(void 0===Ob){a.g("unrecognized value: "+f[zc]);break}Ob&~ff&&a.g("warning: "+t(Ob)+" exceeds "+xc+"-byte value");var mg=gf.call(a,yc);a.g("changing "+Z(yc.G)+" from "+t(mg,jf,!0)+" to "+t(Ob,jf,!0));hf.call(a,yc,Ob,xc)}}break;case "f":Nf(a,f[1]);break;case "g":a:{var lf=f[1],ng=b;if(void 0!==lf){var rd=Se(a,lf,!0);if(!rd)break a;vf(a,rd,ng);a.Za(a.F,rd,!0)}a.cb(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var sd;if(a.C.za)sd="halting",a.qa();else{if(ib(a,!0))break a;sd="already halted"}c||a.g(sd)}break;case "i":if("if"==f[0]){var td;var Pb=b.substr(2),Pb=na(Pb);Be(a,Pb)?(c||a.g("true: "+Pb),td=!0):(c||a.g("false: "+Pb),td=!1);td||(d=!1);break}if("int"==f[0]){var Ac;var og=f[1];if(a.b.ta&512){var ud=Be(a,og);null==ud?Ac=!1:(a.g("requesting interrupt level "+ud),Gd(a.b,ud),Ac=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),Ac=!1;Ac||(d=!1);break}var vd=f[1];if(vd&&"?"!=vd){var wd=
De(a,vd);if(void 0!==wd){var pg=Eb(a.w,wd);a.g(v(wd)+": "+ca(pg))}}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 qg=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var xd=0,mf=X(),Qb=X(a.b.oa);for(a.g("stack trace for "+Z(Qb.G));10>xd;){for(var $a=null,rg=256;65536>Qb.G>>>0;){mf.G=a.ab(Qb,2);if(null==Qb.G||!rg--)break;for(var sg=a,Bc=mf,nf=
null,Rb=Bc.G,of=Rb,yd=1;6>=yd&&Rb;yd++){if(2<yd){Bc.G=Rb;var Cc=Hf(sg,Bc);if(0<=Cc.indexOf("CALL")){var pf=Cc.indexOf(" ");if(Rb+(Cc.indexOf(" ",pf+1)-pf-1)/2==of){nf=Cc;break}}}Rb--}Bc.G=of;if($a=nf)break}if(!$a||null==$a)break;var qf=null;if("ks"==qg){var rf=$a.match(/[0-9A-F]+$/);rf&&(qf=Pf(a,rf[0]))}$a=ma($a,50)+" ;"+(qf||"stack="+Z(Qb.G));a.g($a);xd++}xd||a.g("no return addresses found")}break;case "l":"ln"==f[0]&&Pf(a,f[1],!0);break;case "m":a:{var Ia,Ja=null,O=f[1];"?"==O&&(O=void 0);if(void 0!==
O){var Sa=0;if("all"==O)Sa=1878917119,O=null;else if("on"==O)Ja=!0,O=null;else if("off"==O)Ja=!1,O=null;else{"keys"==O&&(O="key");"kbd"==O&&(O="keyboard");for(Ia in nb)if(O==Ia){Sa=nb[Ia];Ja=!!(a.sa&Sa);break}if(!Sa){a.g("unknown message category: "+O);break a}}if(Sa)if("on"==f[2])a.sa|=Sa,Ja=!0;else if("off"==f[2]&&(a.sa&=~Sa,Ja=!1,1073741824==Sa)){for(var zd=0;zd<a.la.length;zd++)a.g(a.la[zd]);a.la=[]}}var tg=0,Sb="";for(Ia in nb)if(!O||O==Ia){var ug=!!(a.sa&nb[Ia]);if(null===Ja||Ja==ug)Sb&&(Sb+=
","),++tg%10||(Sb+="\n\t"),"key"==Ia&&(Ia="keys"),Sb+=Ia}void 0===O&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ja?Ja?"messages on: ":"messages off: ":"message categories:\n\t")+(Sb||"none"));Ke(a)}break;case "o":var Ad=f[1],vg=f[2];if(Ad&&"?"!=Ad){var Bd=De(a,Ad,"port #"),Cd=De(a,vg);void 0!==Bd&&void 0!==Cd&&(Jb(a.w,Bd,Cd),a.g(v(Bd)+": "+ca(Cd)))}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]){Rf(a,b.substr(5));break}var sf="pr"==f[0]?1:0,wg=1+sf;if(a.X)a.g("step in progress");else{var Dd=X(a.b.P);switch(a.Z(Dd)){case 205:a.X=wg,Te(Dd,3)}a.X?(a.Za(a.F,Dd,!0),a.cb()||(a.A&&a.A.Bb(),a.X=0)):Sf(a,sf?"tr":"t")}break;case "r":if("reset"==b){a.A&&a.A.reset();break}Af(a,f);break;case "s":Qf(a,f);break;case "t":Sf(a,f[0],f[1]);break;case "u":Bf(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Of(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.31.1 ("+a.b.ae+",RELEASE"+
(lb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(xa());break;case "?":if(f[1]){Rf(a,b.substr(1));break}var Ed="commands:",Fd;for(Fd in Me)Ed+="\n"+ma(Fd,9)+Me[Fd];Hd(a)||(Ed+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Ed);break;default:a.g("unknown command: "+b),d=!1}}}catch(tf){a.g("debugger error: "+(tf.stack||tf.message)),d=!1}return d}function oc(a,b,c){b=a.Jb(b,c);for(var d in b)if(!Gf(a,b[+d]))return!1;return!0}
Qa(function(){for(var a=D(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new He(d);db(d,c)}});
function Uf(a,b,c){x.call(this,"Computer",a,Uf,67108864);this.C.xa=!1;Vf(this,b);this.N=lc(this,"autoPower",a);this.u=0;this.da=a.busWidth||a.buswidth;this.A=Wf;this.K=null;this.I=this.aa=!1;this.ea=lc(this,"url")||"";(Math.random()+.1).toString(36);this.j=Xf(this);if(this.b=cb("CPU",this.id)){this.H=cb("Debugger",this.id);this.D=[];for(b=null;b=rb(this,"Video",b);)this.D.push(b);this.w=new tb({id:this.gb+".bus",busWidth:this.da},this.b,this.H);var d,e=ab(this.id);if((this.F=cb("Panel",this.id))&&
this.F.Ia)for(b=0;b<e.length;b++)d=e[b],d.ja=this.F.ja,d.g=this.F.g,d.Ia=this.F.Ia;this.g("PC8080 v1.31.1\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Qa&&d.Qa(this,this.w,this.b,this.H);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.A=parseInt(d,10));var f;if(a=lc(this,"state")||(f=!0,a.state))b=this.O=a,f||(this.I=!0,this.A=Wf),this.A&&(this.L=new Sc(this,"1.31.1"),Yf(this.L)?
b=null:delete this.L);!b&&this.A&&(b=Zf(this))&&(this.I=!0);if(b){var g=this;ta(b,null,!0,function(a,b,c){c?(g.J=null,g.I=!1,g.ja("Unable to load machine state from server (error "+c+(b?": "+na(b):"")+")")):(g.K=b,g.aa=!0);F(g)})}else F(this);this.M.power||(this.N=!0);!c&&this.N&&$f(this,this.zb)}else w("Unable to find CPU component")}A(Uf);var Wf=0;function Vf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){w(d.message+" ("+c+")")}}a.ba=b}
function lc(a,b,c){var d=b.toLowerCase(),d=Ea(b)||Ea(d);void 0===d&&a.ba&&(d=a.ba[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function $f(a,b,c){for(var d=ab(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!jb(f)){jb(f,function(){$f(a,b,c)});return}}b.call(a,c)}
function ag(a,b){var c=new Sc(a,"1.31.1","validate");if(Yf(c)&&bg(c)){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.ja("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=Uf.prototype;
l.zb=function(a){void 0===a&&(a=this.A||(this.K?1:Wf));if(!this.u){this.u++;var b=!1,c=!1;this.X=!1;var d=this.L||new Sc(this,"1.31.1");if(-1==a)b=!0;else if(a>Wf){if(Yf(d,this.K)){this.B=new Sc(this,"1.31.1","failsafe");Yf(this.B)&&(cg(this,d),a=2,dg(this.B));this.B.set("timestamp",ra());eg(this.B);var e=this.A&&!this.I;if(1==a||ya("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=bg(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Yf(d,g):("error"==
f&&"no machine state"!=g?(this.ja("Error: "+g),"unable to verify user"==g&&(Ca("user",""),this.j=null)):this.g(f+": "+g),dg(d),Yf(d)?(c=bg(d),e=!0):c=!1))}e&&ag(this,c?d:null)}else 2==a&&d.clear()}else ag(this);delete this.K;delete this.L}e=ab(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.b&&(c=fg(this,g,d,b,c));b=[d,a,c];-1!=a?$f(this,this.Bc,b):this.Bc(b)}};
function fg(a,b,c,d,e){if(!b.C.xa){b.C.xa=!0;if(b.Ga){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.Ga(f,d)&&f&&(w("Unable to restore state for "+b.type),a.O&&!a.aa?(c.clear(),a.A=Wf,window&&window.location.reload()):a.X=!0,b.Ga(null),e=!1)}if(!d&&b.jc)for(a=b.jc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
l.Bc=function(a){var b=a[0],c=0>a[1];a=a[2];this.ga=!0;this.C.xa=!0;var d=this.M.power;d&&(d.textContent="Shutdown");this.b&&(fg(this,this.b,b,c,a),this.b.vb());this.X&&(cg(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.u=0};
function cg(a,b){if(ya("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||"";b=b.toString();var d={app:"PC8080",ver:"1.31.1"};d.url=a.ea;d.user=c;d.type="bug";d.data=b;ta("http://www.pcjs.org/api/v1/report",d,!0)}}
function Tf(a,b,c){var d,e="none";if(a.u)return null;a.u--;var f=new Sc(a,"1.31.1"),g=new Sc(a,"1.31.1","validate"),h=ra();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.31.1");f.set("url",window?window.location.href:null);f.set("browser",xa());a.b&&a.b.Ka&&(c&&a.b.qa(),d=a.b.Ka(b,c),"object"===typeof d&&f.set(a.b.id,d),c&&(a.b.C.xa=!1,!1===d&&(e=null)));for(var h=ab(a.id),k=0;k<h.length;k++){var m=h[k];m.C.xa&&(m.Ka&&(d=m.Ka(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.C.xa=!1,!1===
d&&(e=null)))}e&&(c?(h=d=!1,b?(a.j&&gg(a,a.j,f.toString()),eg(g)&&eg(f)||(e=null,d=h=!0)):a.A&&(d=!0,h=3==a.A),d&&f.clear(h)):e=f.toString());c&&(a.C.xa=!1,b=a.M.power)&&(b.textContent="Power");a.u=0;return e}l.reset=function(){this.w&&this.w.reset&&(fb(this,"Resetting "+this.w.type),this.w.reset());for(var a=ab(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.w&&c.reset&&(fb(this,"Resetting "+c.type),c.reset())}};
l.start=function(a,b){for(var c=ab(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};l.stop=function(a,b){for(var c=ab(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
l.pa=function(a,b,c){var d=this;switch(b){case "power":return this.M[b]=c,c.onclick=function(){d.u||(d.C.xa?Tf(d,!1,!0):$f(d,d.zb))},!0;case "reset":return this.M[b]=c,c.onclick=function(){if(d.C.xa&&!d.u)if(d.A&&!d.J){var a=ya("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Tf(d,a,!0);!a&&d.O?window&&window.location.reload():d.zb(Wf)}else d.reset(),d.b&&d.b.vb()},!0;case "save":if(ga())c.parentNode.removeChild(c);else return this.M[b]=
c,c.onclick=function(){var a=Xf(d,!0);if(a){var b=!!(d.A&&!d.J||d.O),c=Tf(d,b);b?gg(d,a,c):d.ja("Resume disabled, machine state not saved")}},!0}return!1};
function Xf(a,b){var c=a.j;c||((c=Ba("user"),void 0!==c)?!c&&b&&(b=null,window&&(b=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=b)&&((c=hg(a,c))||a.ja("The user ID is invalid.")):b&&a.ja("Browser local storage is not available"));return c}
function hg(a,b){a.j=null;b=ta(ia()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ca("user",b.data),a.j=b.data)}catch(d){w(d.message+" ("+c+")")}return a.j}function Zf(a){var b=null;a.j&&(b=ia()+"/api/v1/user?req=load&user="+a.j+"&state="+ig(a,"1.31.1"));return b}
function gg(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=ig(a,"1.31.1");d.data=c;b=ta(ia()+"/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.ja("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.ja(c),Ca("user",""),a.j=null)}}
function rb(a,b,c){a=ab(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}l.Bb=function(a){if(this.D.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.D[0];d.ka&&d.ka.focus();!a&&window&&window.scrollTo(b,c)}};l.Aa=function(a){this.b&&this.b.Aa(a);this.F&&this.F.Aa(a)};
Qa(function(){for(var a=D(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=B(c),c=D(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=B(f),g=new Uf(g,d,!0);db(g,f);g.N&&$f(g,g.zb)}});La.show.push(function(){for(var a=D(document,"pc8080","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=cb("Computer",c.id))&&c.ga&&!c.C.xa&&c.zb(-1)}});
La.exit.push(function(){for(var a=D(document,"pc8080","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=cb("Computer",c.id))&&c.C.xa&&Tf(c,!(!c.A||c.J),!0)}});function Sc(a,b,c){this.id=a.id;this.key=ig(a,b,c);this.H=a.H;dg(this,a.Qd)}function ig(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}
Sc.prototype={constructor:Sc,set:function(a,b){try{this[this.id][a]=b}catch(c){}},get:function(a){return this[this.id][a]||null},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){dg(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 dg(a,b){a[a.id]={};b&&a.set("parms",b);a.b=!1}function eg(a){var b=!0;if(Aa()){var c=JSON.stringify(a[a.id]);Ca(a.key,c)||(w("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function bg(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){w(c.message||c),b=!1}return b}function Yf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:Aa()&&(b=Ba(a.key))?(a[a.id]=b,a.b=!0):!1}var jg=0;
function xg(a,b,c,d,e,f){e("Loading "+a+"...");ta(a,null,!0,function(g,h,k){k?(h||(h="unable to load "+a+" ("+k+")"),f(h,null)):yg(h,a,b,c,d,e,f)})}
function yg(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(Za(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){f=null,a=p.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?zg(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
function Nf(a,b,c){var d;if(b){b=Of(a,b);for(var e=0,f=!1,g=b,h=[],l=[],p=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<p.length;){var r=p[e++],t=r.length,r=oa(r);if(!r){f=!0;break}r=Pf(a,r,null,!1===c);if(void 0===r){f=!0;c=!1;break}h.push(r);if(e==p.length)break;var r=p[e++],A=r.length;l.length&&Qf[r]<Qf[l[l.length-1]]&&Mf(h,l,1);l.push(r);b=b.substr(t+A)}Mf(h,l)&&1==h.length||(f=!0);f?c&&a.i("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&Rf(a,null,
d))}return d}function Of(a,b){for(var c,d=/\{(.*?)\}/;(c=b.match(d))&&!(0<=c[1].indexOf("{"));){var e=Nf(a,c[1]);b=b.replace("{"+c[1]+"}",null!=e?Sf(a,e):"undefined")}for(;(c=b.match(/\[(.*?)]/))&&!(0<=c[1].indexOf("["));)b=b.replace("["+c[1]+"]","unimplemented");for(;c=b.match(/\$([a-z]+)/i);){d=null;switch(c[1].toLowerCase()){case "ops":d=a.N-a.Y}if(null==d)break;b=b.replace(c[0],d.toString())}return b}
function Pf(a,b,c,d){var e;null!=b?(e=a.Gb(b),0<=e?e=a.Hb(e):(e=a.R[b],null==e&&(e=ca(b,a.na))),null!=e||d||a.i("invalid "+(c?c:"value")+": "+b)):d||a.i("missing "+(c||"value"));return e}
function Rf(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=4,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++){g&&(g=","+g);var l=d&255,p=void 0,r=8,t="";r?32<r&&(r=32):r=32;for(var A=null==l||isNaN(l),w=p=p||r;0<r--;)w||(t=","+t,w=p),t=(A?"?":l&1?"1":"0")+t,l>>=1,w--;g=t+g;d>>=8}d=n(c,0,!0)+" "+c+". "+da(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.i((null!=b?b+": ":"")+d);return e}
function Tf(a,b){if(b)return Rf(a,b,a.R[b]);var c=0;for(b in a.R)Rf(a,b,a.R[b]),c++;return 0<c}function Sf(a,b){switch(a.na){case 8:a=da(b,NaN);break;case 10:a=b.toString();break;default:a=n(b,NaN)}return a}var Qf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function Uf(a){Lf.call(this,a);this.style=Vf;this.F=Wf();this.la=Wf();this.O=Wf();this.A=[];this.j=this.I=this.w=[];Xf(this);this.W=0;Yf(this);this.Z={};Zf(this,a.messages);this.ea=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return zc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return zc(b,a)})}ba(Uf,Lf);k=Uf.prototype;
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.S=a;(a=vc(a,"messages"))&&Zf(this,a);this.ga=$f;Md(this,64,function(a){a:{var b=d.H.b,c=a[0],e=a=0,l=b.length;if(c){a=ag(bg(d,c));if(-1===a){d.i("invalid address: "+c);break a}e=a>>>d.H.g;l=1}d.i("blockid physical blockaddr used size type");d.i("-------- --------- ---------- ------ ------ ----");for(var c=-1,p=0;l--;){var r=b[e];r.type==c?p++||d.i("..."):(c=r.type,p=Cb[c],r&&d.i(n(r.id)+" %"+n(e<<d.H.g)+" %%"+n(r.J)+" "+q(r.mb)+" "+
q(r.size)+" "+p),c!=Yb&&(c=-1),p=0);a+=d.H.w;e++}}});kb(this)};
k.ca=function(a,b,c){var d=this;switch(b){case "debugInput":return this.U=this.P[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",zc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.b<d.g.length-1&&(b=d.g[++d.b])):40==a.keyCode&&(0<d.b?b=d.g[--d.b]:(b="",d.b=-1)),null!=b){var e=b.length;c.value=b;c.setSelectionRange(e,e)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.P[b]=c,Ja(c,function(){if(d.U){var a=d.U.value;d.U.value=
"";zc(d,a,!0);return!0}return!1}),!0;case "step":return this.P[b]=c,Ja(c,function(a){var b=!1;lb(d,!0)||(mb(d,!0),b=cg(d,a?1:0),mb(d,!1));return b}),!0}return!1};function ag(a){a=a&&a.J;null==a&&(a=-1);return a}k.Ga=function(a,b){var c=255,d=ag(a);-1!==d&&(c=Eb(this.H,d),b&&dg(a,b));return c};k.Bb=function(a,b){var c=65535,d=ag(a);-1!==d&&(c=Gb(this.H,d),b&&dg(a,b));return c};k.Sb=function(a,b,c){var d=ag(a);-1!==d&&(Hb(this.H,d,b),c&&dg(a,c),Ac(this.u,!0))};
k.vc=function(a,b,c){var d=ag(a);if(-1!==d){var e=this.H,f=d&e.j,g=(d&e.C)>>>e.g;f!=e.j?e.b[g].Ob(f,b&65535,d):(e.b[g++].nb(f,b&255,d),e.b[g&e.I].nb(0,b>>8&255,d+1));c&&dg(a,c);Ac(this.u,!0)}};function Wf(a){return{J:a,Da:!1}}function eg(a){return[a.J,a.Da]}function fg(a){return{J:a[0],Da:a[1]}}
function bg(a,b,c){var d;c=(c?a.F:a.la).J;if(void 0!==b){d=b=Of(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.A.length;c++){var f=a.A[c].ra[d];if(void 0!==f){d=f.o;void 0!==d&&(e=Wf(d));break}}if(d=e)return d;c=Nf(a,b,void 0)}null!=c&&(d=Wf(c));return d}function gg(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.qd=a.wb(b.mc=c[2]))}function dg(a,b){null!=a.J&&(a.J+=b||1)}function hg(a){return n(a,4)}
function ig(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.Ga(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Zf(a,b){a.K=a;a.ha=a.td=536870912;a.V=null;a.X=[];b=a.wb(b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in tb)0<=ua(b,c)&&(a.ha|=tb[c],a.i(c+" messages enabled"))}function Md(a,b,c){for(var d in tb)if(b==tb[d]){a.Z[d]=c;break}}
k.Gb=function(a,b){var c;a=a.toUpperCase();null==b?c=ua(Gg,a):(c=ua(Gg,a.substr(b,2)),0>c&&(c=ua(Gg,a.substr(b,1))));return c};function Ig(a,b){var c=0;a=a.Hb(b);if(void 0!==a)switch(b){case Jg:case Kg:case Lg:case Mg:case Ng:case Og:case Pg:case Qg:c=2;break;case Rg:case Sg:case Tg:case Ug:case Vg:case Wg:case Xg:c=4}return c?n(a,c):"??"}
k.Hb=function(a){var b;if(0<=a){var c=this.u;switch(a){case Jg:b=c.g;break;case Kg:b=c.w;break;case Lg:b=c.A;break;case Rg:b=Wc(c);break;case Mg:b=c.B;break;case Ng:b=c.C;break;case Sg:b=jd(c);break;case Og:b=c.D;break;case Pg:b=c.F;break;case Tg:b=D(c);break;case Qg:b=F(c,D(c));break;case Ug:b=c.M;break;case Vg:b=c.j;break;case Wg:b=Uc(c);break;case Xg:b=Uc(c)&255|c.g<<8}}return b};
function Yg(a,b){b=Of(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Gb(b,c+1),0<=e&&(b=b.substr(0,c)+Ig(a,e)+b.substr(c+1+Gg[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=ca(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=bg(a,e))?(d=e+' "'+ig(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=bg(a,e))?(dg(d),d=e+
' "'+ig(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}k.message=function(a,b){b&&(a+=" at "+hg(Wf(this.u.j).J));this.ha&1073741824?this.X.push(a):this.V&&a==this.V||(this.V=a,this.ha&-2147483648&&(this.da(),a+=" (cpu halted)"),this.i(a),this.u&&(a=this.u,Kc(a),a.va=0,Ac(a)))};
function pb(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.ha&h)!=h||a.message(b.$a+"."+(null!=d?"outPort":"inPort")+"("+q(c)+","+(f?f:"unknown")+(null!=d?","+ea(d):"")+")"+(null!=g?": "+ea(g):"")+(null!=e?" at "+hg(e):""))}
function Yf(a){var b;if(Ed(a)){if(!a.D||!a.D.length){a.D=Array(Zg);for(b=0;b<a.D.length;b++)a.D[b]=Wf();a.T=0;a.i("instruction history buffer allocated")}if(!a.B||!a.B.length)for(a.B=Array(256),b=0;b<a.B.length;b++)a.B[b]=[b,0]}else a.D&&a.D.length&&a.i("instruction history buffer freed"),a.T=0,a.D=[],a.B=[]}function $g(a,b){if(!ah(a))return!1;a.u.qb(b);return!0}
function cg(a,b,c,d){if(!ah(a))return!1;a.C=0;b||Ed(a)&&Fd(a,a.u.j,0);try{var e=a.u.Ab(b);0<e&&(a.C+=e,Ec(a.u,e,!0),Bc(a.u,e),a.N++)}catch(f){"number"!=typeof f&&(a.C=0,hb(a.u,f.stack||f.message))}!1!==d&&Ac(a.u);yc(a,c||!1);return 0<a.C}k.da=function(a){this.u&&this.u.da(a)};function yc(a,b){void 0===b&&(b=!0);a.F=Wf(a.u.j);b&&1!=a.M?bh(a):ch(a)}
function ah(a){var b;if(b=a.u&&ib(a.u))b=a.u,b.G.ja?b=!0:(b.i(b.toString()+" not powered"),b=!1);b&&!lb(a.u)?(a=a.u,a.G.error?(a.i(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}k.ua=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};k.wa=function(a,b){b&&this.i(a?"suspending":"shutting down");return a?this.save():!0};k.reset=function(a){Yf(this);this.N=this.Y=0;this.V=null;this.C=0;this.F=Wf(this.u.j);this.G.ka=!1;dh(this);a||yc(this)};
k.save=function(){var a=new Vc(this);a.set(0,eg(this.F));a.set(1,eg(this.O));a.set(2,[this.g,this.L,this.ha]);a.set(3,this.A);return a.data()};k.restore=function(a){var b=0;void 0!==a[2]&&(this.F=fg(a[b++]),this.O=fg(a[b++]),this.g=a[b][0],"string"==typeof this.g&&(this.g=[this.g]),this.L=a[b][1],this.ha|=a[b][2]);a[3]&&(this.A=a[3]);return!0};k.start=function(a,b){this.M||this.i("running");this.G.ka=!0;this.va=a;this.ya=b};
k.stop=function(a,b){if(this.G.ka){this.G.ka=!1;this.C=b-this.ya;if(!this.M){b="stopped";if(this.C){a-=this.va;var c=0<a?Math.round(1E3*this.C/a):0;b+=" (";Ed(this)&&(b+=this.N+" opcodes, ",this.Y-=this.N,this.N=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else nb(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.i(b)}yc(this,!0);this.U&&this.U.focus();dh(this,this.u.j)}};function Ed(a){return 1<a.j.length||!!a.W}
function Fd(a,b,c){var d=a.u;if(0<c&&(a.W&&!--a.W||sc(a,b,1,a.j)))return!0;0<=c&&a.B.length&&(a.N++,b=Eb(a.H,b),null!=b&&(a.B[b][1]++,b=a.D[a.T],b.J=d.j,b.Da=!1,++a.T==a.D.length&&(a.T=0)));return!1}function Pb(a,b,c){a.i("break on input from port "+q(b)+": "+n(c));a.da(!0)}function Tb(a,b,c){a.i("break on output to port "+q(b)+": "+n(c));a.da(!0)}
function Xf(a){var b,c;a.j=["bp"];if(a.I)for(b=1;b<a.I.length;b++){c=a.I[b];var d=a.H;rc(d.b[ag(c)>>>d.g],!1)}a.I=["br"];if(a.w)for(b=1;b<a.w.length;b++)c=a.w[b],d=a.H,rc(d.b[ag(c)>>>d.g],!0);a.w=["bw"];a.oa=0}k.Pa=function(a,b,c){var d=!0;c||eh(this,a,b,!1,!0);if(a!=this.j){var e=ag(b);if(-1===e)this.i("invalid address: "+hg(b.J)),d=!1;else{var f=this.H;f.b[e>>>f.g].Pa(e&f.j,a==this.w)}}d&&(a.push(b),c?b.Da=!0:(fh(this,a,a.length-1,"set"),Yf(this)));return d};
function eh(a,b,c,d,e){var f=!1;c=ag(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==ag(h)&&(!d||h.Da)){f=!0;h.Da||e||fh(a,b,g,"cleared");b.splice(g,1);b!=a.j&&(d=a.H,rc(d.b[c>>>d.g],b==a.w));h.Da||Yf(a);break}}return f}function gh(a,b){for(var c=1;c<b.length;c++)fh(a,b,c);return b.length-1}function fh(a,b,c,d){c=b[c];a.i(b[0]+" "+hg(c.J)+(d?" "+d:c.mc?' "'+c.mc+'"':""))}
function dh(a,b){if(void 0!==b)sc(a,b,1,a.j,!0),a.M=0;else for(b=1;b<a.j.length;b++){var c=a.j[b];if(c.Da){if(!eh(a,a.j,c,!0))break;b=0}}}
function sc(a,b,c,d,e){var f=!1;if(!a.oa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.Da)for(var l=ag(h),p=0;p<c;p++)if(b+p==l){var r,f=!0;h.Da&&(eh(a,d,h,!0),e=!0);if(r=h.qd){for(var f=!1,t=0;t<r.length;t++)if(!hh(a,r[t],!0)){if(r[t].indexOf("if")){f=!0;break}for(var A=t+1;A<r.length&&r[A].indexOf("else");A++)t++;if(A==r.length){f=!0;break}}a.u.G.ka||(f=!0)}if(f){e||fh(a,d,g,"hit");break}}}a.oa--;return f}
function ih(a,b,c,d){for(var e=Wf(b.J),f=a.Ga(b,1),g=a.ga[f],h="",l=(a.style!=jh?kh:lh)[g[0]],p=g.length-1,r=mh,t,A=1;A<=p;A++){var w="";t=g[A];if(void 0!==t&&!(t&O&&a.style==Vf)){var u=t&nh;if(u){var B=t&oh;B?r=B:t|=r;t&ph||(t|=1==A?qh:rh);if(u&P)a:{w=a;u=t;B=b;switch(u&oh){case Q:B=n(w.Ga(B,1),2);break;case sh:B=n(w.Ga(B,1)<<24>>24,4);break;case th:B=n(w.Bb(B,2),4);break;default:w="imm("+q(u)+")";break a}w.style==jh&&u&uh?B="["+B+"]":u&vh||(B=(w.style==Vf?"$":"0x")+B);w=B}else u&vh?(w=(t&wh)>>8,
u=Gg[w],a.style==jh&&t&uh&&(w==Qg&&(u="HL"),u="["+u+"]"),w=u):u&xh&&(w=(f>>3&7).toString());if(!w||!w.length){h="INVALID";break}0<h.length&&(h+=",");h+=w||"???"}}}f="";g=hg(e.J)+" ";if(-1!==e.J&&-1!==b.J){do if(f+=n(a.Ga(e,1),2),null==e.J)break;while(e.J!=b.J)}g+=na(f,10);g+=t&yh?"*":" ";g+=na(l,7);h&&(g+=" "+h);c&&(g=na(g,40)+";"+c,g=a.u.G.Va?g+("cycles="+Cc(a.u).toString()+" cs="+n(a.u.ya)):g+(null!=d?"="+d.toString():""));return g}
function zh(a,b){switch(b){case "IF":a=a.u.N&512;break;case "SF":a=rd(a.u);break;case "ZF":a=qd(a.u);break;case "AF":a=pd(a.u);break;case "PF":a=od(a.u);break;case "CF":a=md(a.u);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Ah(a,b){return Gg[b]+"="+Ig(a,b)+" "}function Bh(a){return Ah(a,Jg)+Ah(a,Rg)+Ah(a,Sg)+Ah(a,Tg)+Ah(a,Ug)+zh(a,"IF")+zh(a,"SF")+zh(a,"ZF")+zh(a,"AF")+zh(a,"PF")+zh(a,"CF")}k.dc=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Ch(a,b,c){var d=[],e=ag(b)>>>0;for(b=0;b<a.A.length;b++){var f=a.A[b],g=f.J>>>0,h=f.Gd;if(e>=g&&e<g+h){e=qa(f.cc,[e-g],a.dc);0<=e?Dh(a,b,e,d):c&&(e=~e,Dh(a,b,e-1,d),Dh(a,b,e,d));break}}return d}function Dh(a,b,c,d){var e={},f=a.A[b].cc,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.A[b].ra[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
function Eh(a,b){if("?"==b)a.i("frequency commands:"),a.i("\tclear\tclear all frequency counts");else{var c=0;if(a.B)if("clear"==b){for(b=0;b<a.B.length;b++)a.B[b]=[b,0];a.i("frequency data cleared");c++}else if(void 0!==b)a.i("unknown frequency command: "+b),c++;else{var d=a.B.slice();d.sort(function(a,b){return b[1]-a[1]});var e=a.style!=jh?kh:lh;for(b=0;b<d.length;b++){var f=d[b][0],g=d[b][1];g&&(a.i((e[a.ga[f][0]]+" ").substr(0,5)+" ("+ea(f)+"): "+g+" times"),c++)}}c||a.i("no frequency data available")}}
function Fh(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Tf(a)||a.i("no variables"),!0;if(!c[2])return Tf(a,c[1]);if(!c[3])return delete a.R[c[1]],!0;b=Nf(a,c[3]);return void 0!==b?(a.R[c[1]]=b,!0):!1}a.i("invalid assignment:"+b);return!1}
function Gh(a,b,c){var d=null;if(b=bg(a,b,!0)){var e=Ch(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.J-e[1])&&(g=" + "+q(f)),f=e[0]+" ("+hg(e[1])+")"+g,c&&a.i(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.J)&&(g=" - "+q(f)),f=e[4]+" ("+hg(e[5])+")"+g,c&&a.i(f),d||(d=f))}else c&&a.i("no symbols")}return d}
function Hh(a,b){switch(b[1]){case "8080":a.style=Vf;break;case "8086":a.style=jh;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.u.na=c;break;case "start":a.u.za=c;break;case "stop":a.u.sa=c;break;default:a.i("unknown cs option");return}void 0!==c&&xc(a.u);a.i("checksums "+(a.u.G.Va?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Dc(a.u,+b[2])||a.i("warning: using 1x multiplier, previous target not reached"));a.i("target speed: "+(a.u.Z.toFixed(2)+"Mhz")+" ("+a.u.U+
"x)");return;case "?":a.i("debugger options:");a.i("\t8080\t\tselect 8080-style mnemonics");a.i("\t8086\t\tselect 8086-style mnemonics");a.i("\tcs int #\tset checksum cycle interval to #");a.i("\tcs start #\tset checksum cycle start count to #");a.i("\tcs stop #\tset checksum cycle stop count to #");a.i("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.i("unknown option: "+b[1]);return}}a.i(a.style+"-style mnemonics enabled")}
function bh(a,b){var c;if(b&&"?"==b[1])a.i("register commands:"),a.i("\tr\tdump registers"),a.i("\trx [#]\tset flag or register x to [#]");else{var d=a.u;null==c&&(c=!0);if(b&&1<b.length){var e=b[1],f=e.indexOf("=");if(0<f)b=e.substr(f+1),e=e.substr(0,f);else if(2<b.length)b=b[2];else{a.i("missing value for "+b[1]);return}f=Nf(a,b);if(void 0===f)return;switch(e.toUpperCase()){case "A":d.g=f&255;break;case "B":d.w=f&255;break;case "BC":d.w=f>>8&255;case "C":d.A=f&255;break;case "D":d.B=f&255;break;
case "DE":d.B=f>>8&255;case "E":d.C=f&255;break;case "H":d.D=f&255;break;case "HL":d.D=f>>8&255;case "L":d.F=f&255;break;case "SP":d.M=f&65535;break;case "PC":C(d,f);a.F=Wf(d.j);break;case "PS":Sc(d,f);break;case "PSW":Sc(d,f&255|d.N&-256);d.g=f>>8;break;case "CF":d.I=f?d.I|256:d.I&255;break;case "PF":f?od(d)||(d.L^=1):od(d)&&(d.L^=1);break;case "AF":d.O=f?~d.L&16|d.O&-17:d.L&16|d.O&-17;break;case "ZF":d.I=f?d.I&-256:d.I|255;break;case "SF":f?rd(d)||(d.L^=192):rd(d)&&(d.L^=192);break;case "IF":d.N=
f?d.N|512:d.N&-513;break;default:a.i("unknown register: "+e);return}Ac(d);a.i("updated registers:")}a.i(Bh(a));c&&(a.F=Wf(d.j),ch(a,hg(a.F.J)))}}function Ih(a,b){b=oa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.i(Yg(a,c[2])):Nf(a,b,!0)}function Jh(a,b,c){var d="t"!=b;c=Pf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ia(c,function(){return mb(a,!0)&&cg(a,e,d,!1)},function(){Ac(a.u);mb(a,!1)})}
function ch(a,b,c,d){if(b=bg(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=bg(a,c,!0);if(!d||d.J<b.J)return;e=d.J-b.J;if(256<e){a.i("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=lb(a,!1)||a.M?a.C:null;var g=null!=f?"cycles":null,h=Ch(a,b),l=b.J;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var p=h[0]+":";h[2]&&(p+=" "+h[2]);a.i(p)}h[3]&&(g=h[3],f=null);f=ih(a,b,g,f);a.i(f);a.F=b;e-=b.J-l;c++}}}
k.wb=function(a,b,c){if(b)if(a){0>this.b&&this.g.length&&(this.b=0);if(0>this.b||a!=this.g[this.b])this.g.splice(0,0,a),this.b=0;this.b--}else this.L?a="end":a=this.g[this.b+1];b=[];if(a){a=a.toLowerCase().replace(/""/g,"'");var d=0,e=null;c=c||";";for(var f=0;f<=a.length;f++){var g=a.charAt(f);if('"'==g||"'"==g)e?g==e&&(e=null):e=g;else if(g==c&&!e||!g)b.push(oa(a.substring(d,f))),d=f+1}}return b};
function hh(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.i(">> "+b):(a.L&&(a.i("ended assemble at "+hg(a.O.J)),a.F=a.O,a.L=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.V=null;if(ib(a)&&0<b.length){a.L&&(b="a "+hg(a.O.J)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var g=f[0],h=g.charAt(0),l=1;l<g.length;l++){var p=g.charAt(l);if("?"==h||"r"==h||"a">p||"z"<p){f[0]=g.substr(l);f.unshift(g.substr(0,l));break}}switch(f[0].charAt(0)){case "a":var r=bg(a,f[1],!0);if(r)if(a.O=
r,void 0===f[2])a.i("begin assemble at "+hg(r.J)),a.L=!0,Ac(a.u);else{var t;a.i("not supported yet");t=[];if(t.length){for(var A=0;A<t.length;A++)a.Sb(r,t[A],1);a.i(ih(a,a.O))}}break;case "b":a:{var w=f[0],u=f[1],B=b;if("?"==u)a.i("breakpoint commands:"),a.i("\tbi [p]\ttoggle break on input port [p]"),a.i("\tbo [p]\ttoggle break on output port [p]"),a.i("\tbp [a]\tset exec breakpoint at addr [a]"),a.i("\tbr [a]\tset read breakpoint at addr [a]"),a.i("\tbw [a]\tset write breakpoint at addr [a]"),a.i("\tbc [a]\tclear breakpoint at addr [a]"),
a.i("\tbl\tlist all breakpoints"),a.i("\tbn [n]\tbreak after [n] instruction(s)");else{var S=w.charAt(1);if("l"==S){var ya;ya=0+gh(a,a.j);ya+=gh(a,a.I);(ya+=gh(a,a.w))||a.i("no breakpoints")}else if("n"==S)a.W=Pf(a,u),a.i("break after "+a.W+" instruction(s)");else if(void 0===u)a.i("missing breakpoint address");else{var K=Wf();if("*"!=u&&(K=bg(a,u,!0),!K))break a;u=q(K.J);"c"==S?null==K.J?(Xf(a),a.i("all breakpoints cleared")):eh(a,a.j,K)||eh(a,a.I,K)||eh(a,a.w,K)||a.i("breakpoint missing: "+hg(K.J)):
"i"==S?a.i("breakpoint "+(Kb(a.H,K.J)?"enabled":"cleared")+": port "+u+" (input)"):"o"==S?a.i("breakpoint "+(Qb(a.H,K.J)?"enabled":"cleared")+": port "+u+" (output)"):null!=K.J&&(gg(a,K,B),"p"==S?a.Pa(a.j,K):"r"==S?a.Pa(a.I,K):"w"==S?a.Pa(a.w,K):a.i("unknown breakpoint command: "+S))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var ia,ta=f[0],ma=f[1],La=f[2],dc=f[3];if("?"==ma){var Lb="";for(ia in tb)a.Z[ia]&&(Lb&&(Lb+=","),Lb+=ia);Lb+=",state,symbols";a.i("dump memory commands:");a.i("\tdb [a] [#] dump # bytes at address a");
a.i("\tdw [a] [#] dump # words at address a");a.i("\tdd [a] [#] dump # dwords at address a");a.i("\tdh [#] [#] dump # instructions from history");Lb.length&&a.i("dump extension commands:\n\t"+Lb)}else if("state"==ma){var ie=Kh(a.S,!0);"console"==La?console.log(ie):(a.ta&&(a.ta.value=""),ie&&a.i(ie))}else if("symbols"==ma)for(var je=0;je<a.A.length;je++){var ke=a.A[je],Mb;for(Mb in ke.ra)if("."!=Mb.charAt(0)){var jg=ke.ra[Mb].o;if(void 0!==jg){var kg=ke.ra[Mb].l;kg&&(Mb=kg);a.i(hg(jg)+" "+
Mb)}}}else{if("d"==ta){for(ia in tb)if(f[1]==ia){var lg=a.Z[ia];lg?(f.shift(),f.shift(),lg(f)):a.i("no dump registered for "+ma);break a}ma||(ta=a.za||"db")}else a.za=ta;if("dh"==ta){var mg=ma,ng=La,og="",pg=0,Ma=a.T,Xa=a.D;if(Xa.length){var Aa=+mg||a.sa,ic=+ng||10;isNaN(Aa)?Aa=ic:og="more ";Aa>Xa.length&&(a.i("note: only "+Xa.length+" available"),Aa=Xa.length);Ma-=Aa;0>Ma&&(null==Xa[Xa.length-1].J?(Aa=Ma+Aa,Ma=0):Ma+=Xa.length);var le=[];"call"==ng&&(ic=1E5,le=["CALL"]);for(void 0!==mg&&a.i(Aa+" instructions earlier:");0<
ic&&Ma!=a.T;){var qg=Xa[Ma++];if(null==qg.J)break;var jc=Wf(qg.J),ni=Aa--,rg=ih(a,jc,"history",ni);(!le.length||0<=rg.indexOf(le[0]))&&a.i(rg);jc.Fb&&(Ma+=jc.Fb,ic-=jc.Fb,Aa-=jc.Fb);Ma>=Xa.length&&(Ma=0);a.sa=Aa;pg++;ic--}}pg||(a.i("no "+og+"history available"),a.sa=void 0)}else{var Xc=bg(a,ma);if(Xc){var Yc=0;La&&("l"==La.charAt(0)&&(La=La.substr(1)||dc),Yc=Pf(a,La)>>>0,65536<Yc&&(Yc=65536));for(var kc="",Zc="dd"==ta?4:"dw"==ta?2:1,$c=Zc*Yc||128,oi=$c+15>>4||1;oi--&&0<$c;){var ad=0,me=0,lc,ne="",
sg="",ma=hg(Xc.J);for(lc=16;0<lc&&0<$c;lc--){var bd=a.Ga(Xc,1),ad=ad|bd<<(me++<<3);me==Zc&&(ne+=n(ad,2*Zc),ne+=1==Zc?9==lc?"-":" ":" ",ad=me=0);sg+=32<=bd&&128>bd?String.fromCharCode(bd):".";$c--}kc&&(kc+="\n");kc+=ma+" "+ne+(lc?"":" "+sg)}kc&&a.i(kc);a.la=Xc}}}}break;case "e":if("else"==f[0])break;var cd=1,tg=255,ug=a.Ga,vg=a.Sb;"ew"==f[0]&&(cd=2,tg=65535,ug=a.Bb,vg=a.vc);var wg=cd<<1,xg=f[1];if(null==xg)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");
else{var dd=bg(a,xg);if(dd)for(var ed=2;ed<f.length;ed++){var mc=Nf(a,f[ed]);if(void 0===mc){a.i("unrecognized value: "+f[ed]);break}mc&~tg&&a.i("warning: "+n(mc)+" exceeds "+cd+"-byte value");var pi=ug.call(a,dd);a.i("changing "+hg(dd.J)+" from "+n(pi,wg,!0)+" to "+n(mc,wg,!0));vg.call(a,dd,mc,cd)}}break;case "f":Eh(a,f[1]);break;case "g":a:{var yg=f[1],qi=b;if(void 0!==yg){var oe=bg(a,yg,!0);if(!oe)break a;gg(a,oe,qi);a.Pa(a.j,oe,!0)}$g(a,!0)||c||a.i("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var pe;if(a.G.ka)pe="halting",a.da();else{if(lb(a,!0))break a;pe="already halted"}c||a.i(pe)}break;case "i":if("if"==f[0]){var qe;var nc=b.substr(2),nc=oa(nc);Nf(a,nc)?(c||a.i("true: "+nc),qe=!0):(c||a.i("false: "+nc),qe=!1);qe||(d=!1);break}if("int"==f[0]){var fd;var ri=f[1];if(a.u.N&512){var re=Nf(a,ri);null==re?fd=!1:(a.i("requesting interrupt level "+re),Dd(a.u,re),fd=!0)}else a.i("interrupts disabled (use rif=1 to enable)"),fd=!1;fd||(d=!1);break}var se=f[1];if(se&&"?"!=se){var te=
Pf(a,se);if(void 0!==te){var si=Ob(a.H,te);a.i(q(te)+": "+ea(si))}}else a.i("input commands:"),a.i("\ti [p]\tread port [p]"),a.i("warning: port accesses can affect hardware state");break;case "k":var ti=f[0];if("?"==f[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var ue=0,zg=Wf(),oc=Wf(a.u.M);for(a.i("stack trace for "+hg(oc.J));10>ue;){for(var qb=null,ui=256;65536>oc.J>>>0;){zg.J=a.Bb(oc,2);if(null==oc.J||!ui--)break;for(var vi=a,gd=zg,
Ag=null,pc=gd.J,Bg=pc,ve=1;6>=ve&&pc;ve++){if(2<ve){gd.J=pc;var hd=ih(vi,gd);if(0<=hd.indexOf("CALL")){var Cg=hd.indexOf(" ");if(pc+(hd.indexOf(" ",Cg+1)-Cg-1)/2==Bg){Ag=hd;break}}}pc--}gd.J=Bg;if(qb=Ag)break}if(!qb||null==qb)break;var Dg=null;if("ks"==ti){var Eg=qb.match(/[0-9A-F]+$/);Eg&&(Dg=Gh(a,Eg[0]))}qb=na(qb,50)+" ;"+(Dg||"stack="+hg(oc.J));a.i(qb);ue++}ue||a.i("no return addresses found")}break;case "l":"ln"==f[0]&&Gh(a,f[1],!0);break;case "m":a:{var Ya,Za=null,aa=f[1];"?"==aa&&(aa=void 0);
if(void 0!==aa){var jb=0;if("all"==aa)jb=1878917119,aa=null;else if("on"==aa)Za=!0,aa=null;else if("off"==aa)Za=!1,aa=null;else{"keys"==aa&&(aa="key");"kbd"==aa&&(aa="keyboard");for(Ya in tb)if(aa==Ya){jb=tb[Ya];Za=!!(a.ha&jb);break}if(!jb){a.i("unknown message category: "+aa);break a}}if(jb)if("on"==f[2])a.ha|=jb,Za=!0;else if("off"==f[2]&&(a.ha&=~jb,Za=!1,1073741824==jb)){for(var we=0;we<a.X.length;we++)a.i(a.X[we]);a.X=[]}}var wi=0,qc="";for(Ya in tb)if(!aa||aa==Ya){var xi=!!(a.ha&tb[Ya]);if(null===
Za||Za==xi)qc&&(qc+=","),++wi%10||(qc+="\n\t"),"key"==Ya&&(Ya="keys"),qc+=Ya}void 0===aa&&a.i("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.i((null!==Za?Za?"messages on: ":"messages off: ":"message categories:\n\t")+(qc||"none"));Yf(a)}break;case "o":var xe=f[1],yi=f[2];if(xe&&"?"!=xe){var ye=Pf(a,xe,"port #"),ze=Pf(a,yi);void 0!==ye&&void 0!==ze&&(Sb(a.H,ye,ze),a.i(q(ye)+": "+ea(ze)))}else a.i("output commands:"),a.i("\to [p] [b]\twrite byte [b] to port [p]"),a.i("warning: port accesses can affect hardware state");
break;case "p":if("print"==f[0]){Ih(a,b.substr(5));break}var Fg="pr"==f[0]?1:0,zi=1+Fg;if(a.M)a.i("step in progress");else{var Ae=Wf(a.u.j);switch(a.Ga(Ae)){case 205:a.M=zi,dg(Ae,3)}a.M?(a.Pa(a.j,Ae,!0),$g(a)||(a.S&&Hc(a.S),a.M=0)):Jh(a,Fg?"tr":"t")}break;case "r":if("reset"==b){a.S&&a.S.reset();break}bh(a,f);break;case "s":Hh(a,f);break;case "t":Jh(a,f[0],f[1]);break;case "u":ch(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Fh(a,b.substr(3))||(d=!1);break}a.i("PC8080 version 1.31.1 ("+a.u.tb+",RELEASE"+
(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.i(xa());break;case "?":if(f[1]){Ih(a,b.substr(1));break}var Be="commands:",Ce;for(Ce in Lh)Be+="\n"+na(Ce,9)+Lh[Ce];Ed(a)||(Be+="\nnote: frequency/history disabled if no exec breakpoints");a.i(Be);break;default:a.i("unknown command: "+b),d=!1}}}catch(Hg){a.i("debugger error: "+(Hg.stack||Hg.message)),d=!1}return d}function zc(a,b,c){b=a.wb(b,c);for(var d in b)if(!hh(a,b[+d]))return!1;return!0}
var Lh={"?":"help/print","a [#]":"assemble","b [#]":"breakpoint",c:"clear output","d [#]":"dump memory","e [#]":"edit memory",f:"frequencies","g [#]":"go [to #]",h:"halt","i [#]":"input port #","if":"eval expression","int [#]":"request interrupt",k:"stack trace",ln:"list nearest symbol(s)",m:"messages","o [#]":"output port #",p:"step over",print:"print expression",r:"dump/set registers",reset:"reset machine",s:"set options","t [#]":"trace","u [#]":"unassemble",v:"print version","var":"assign variable"},
Vf=8080,jh=8086,kh="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(" "),lh="NONE ADC ADC ADD ADD AND AND CALL CALLC CALLS CALLNC CALLNZ CALLNS CALLP CALLNP CALLZ NOT CMC CMP CMP DAA ADD DEC DEC CLI STI HLT IN INC INC JMP JC JS JNC JNZ JNS JP JNP JZ MOV MOV MOV MOV MOV MOV NOP OR OR OUT JMP POP PUSH RCL RCR RET RETC RETS RETNC RETNZ RETNS RETP RETNP RETZ ROL ROR RST SBB SBB MOV MOV MOV MOV STC SUB SUB XCHG XOR XOR XCHG".split(" "),
Kg=0,Lg=1,Mg=2,Ng=3,Og=4,Pg=5,Qg=6,Jg=7,Rg=8,Sg=9,Tg=10,Ug=11,Vg=12,Wg=13,Xg=14,Gg="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),oh=15,nh=240,wh=3840,ph=61440,mh=0,Q=1,sh=2,th=3,vh=16,P=32,uh=64,xh=128,R=Jg<<8|vh|Q,T=Kg<<8|vh|Q,U=Lg<<8|vh|Q,V=Mg<<8|vh|Q,W=Ng<<8|vh|Q,X=Og<<8|vh|Q,Y=Pg<<8|vh|Q,Z=Qg<<8|vh|Q|uh,Mh=Rg<<8|vh|th,Nh=Sg<<8|vh|th,Oh=Tg<<8|vh|th,Ph=Ug<<8|vh|th,Qh=Xg<<8|vh|th,rh=4096,qh=8192,O=16384,yh=32768,$f=[[45],[42,Mh,P],[71,Mh|uh,R|O],[29,Mh],[28,T],[22,T],[44,T,P],[63],[45,yh],[21,
Oh|O,Mh],[40,R|O,Mh|uh],[23,Mh],[28,U],[22,U],[44,U,P],[64],[45,yh],[42,Nh,P],[71,Nh|uh,R|O],[29,Nh],[28,V],[22,V],[44,V,P],[52],[45,yh],[21,Oh|O,Nh],[40,R|O,Nh|uh],[23,Nh],[28,W],[22,W],[44,W,P],[53],[45,yh],[42,Oh,P],[68,51|uh,Oh|O],[29,Oh],[28,X],[22,X],[44,X,P],[20],[45,yh],[21,Oh|O,Oh],[41,Oh|O,51|uh],[23,Oh],[28,Y],[22,Y],[44,Y,P],[16,R|O],[45,yh],[42,Ph,P],[70,51|uh,R|O],[29,Ph],[28,Z],[22,Z],[44,Z,P],[72],[45,yh],[21,Oh|O,Ph],[39,R|O,51|uh],[23,Ph],[28,R],[22,R],[44,R,P],[17],[43,T,T],[43,
T,U],[43,T,V],[43,T,W],[43,T,X],[43,T,Y],[43,T,Z],[43,T,R],[43,U,T],[43,U,U],[43,U,V],[43,U,W],[43,U,X],[43,U,Y],[43,U,Z],[43,U,R],[43,V,T],[43,V,U],[43,V,V],[43,V,W],[43,V,X],[43,V,Y],[43,V,Z],[43,V,R],[43,W,T],[43,W,U],[43,W,V],[43,W,W],[43,W,X],[43,W,Y],[43,W,Z],[43,W,R],[43,X,T],[43,X,U],[43,X,V],[43,X,W],[43,X,X],[43,X,Y],[43,X,Z],[43,X,R],[43,Y,T],[43,Y,U],[43,Y,V],[43,Y,W],[43,Y,X],[43,Y,Y],[43,Y,Z],[43,Y,R],[43,Z,T],[43,Z,U],[43,Z,V],[43,Z,W],[43,Z,X],[43,Z,Y],[26],[43,Z,R],[43,R,T],[43,R,
U],[43,R,V],[43,R,W],[43,R,X],[43,R,Y],[43,R,Z],[43,R,R],[3,R|O,T],[3,R|O,U],[3,R|O,V],[3,R|O,W],[3,R|O,X],[3,R|O,Y],[3,R|O,Z],[3,R|O,R],[2,R|O,T],[2,R|O,U],[2,R|O,V],[2,R|O,W],[2,R|O,X],[2,R|O,Y],[2,R|O,Z],[2,R|O,R],[73,R|O,T],[73,R|O,U],[73,R|O,V],[73,R|O,W],[73,R|O,X],[73,R|O,Y],[73,R|O,Z],[73,R|O,R],[66,R|O,T],[66,R|O,U],[66,R|O,V],[66,R|O,W],[66,R|O,X],[66,R|O,Y],[66,R|O,Z],[66,R|O,R],[5,R|O,T],[5,R|O,U],[5,R|O,V],[5,R|O,W],[5,R|O,X],[5,R|O,Y],[5,R|O,Z],[5,R|O,R],[76,R|O,T],[76,R|O,U],[76,R|
O,V],[76,R|O,W],[76,R|O,X],[76,R|O,Y],[76,R|O,Z],[76,R|O,R],[46,R|O,T],[46,R|O,U],[46,R|O,V],[46,R|O,W],[46,R|O,X],[46,R|O,Y],[46,R|O,Z],[46,R|O,R],[18,R|O,T],[18,R|O,U],[18,R|O,V],[18,R|O,W],[18,R|O,X],[18,R|O,Y],[18,R|O,Z],[18,R|O,R],[58],[50,Mh],[34,51],[30,51],[11,51],[51,Mh],[4,R|O,P|Q],[65,xh],[62],[54],[38,51],[30,51|yh],[15,51],[7,51],[1,R|O,P|Q],[65,xh],[57],[50,Nh],[33,51],[48,P|Q,R|O],[10,51],[51,Nh],[74,R|O,P|Q],[65,xh],[55],[54,yh],[31,51],[27,R|O,P|Q],[8,51],[7,51|yh],[67,R|O,P|Q],[65,
xh],[61],[50,Oh],[37,51],[78,Ph|uh|O,Oh|O],[14,51],[51,Oh],[6,R|O,P|Q],[65,xh],[60],[49,Oh],[36,51],[75,Oh|O,Nh|O],[13,51],[7,51|yh],[77,R|O,P|Q],[65,xh],[59],[50,Qh],[35,51],[24],[12,51],[51,Qh],[47,R|O,P|Q],[65,xh],[56],[69,Ph|O,Oh|O],[32,51],[25],[9,51],[7,51|yh],[19,R|O,P|Q],[65,xh]],Zg=1E3;Na(function(){for(var a=gb(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=eb(c),d=new Uf(d);fb(d,c)}});
function Rh(a,b,c){x.call(this,"Computer",a,0,67108864);this.G.ja=!1;Sh(this,b);this.L=vc(this,"autoPower",a);this.j=0;this.T=a.busWidth||a.buswidth;this.b=Th;this.F=null;this.C=this.O=!1;this.U=vc(this,"url")||"";(Math.random()+.1).toString(36);this.g=Uh(this);if(this.u=db("CPU",this.id)){this.K=db("Debugger",this.id);this.A=[];for(b=null;b=vb(this,"Video",b);)this.A.push(b);this.H=new xb({id:this.ab+".bus",busWidth:this.T},this.u,this.K);var d,e=bb(this.id);if((this.B=db("Panel",this.id))&&this.B.ta)for(b=
0;b<e.length;b++)d=e[b],d.aa=this.B.aa,d.i=this.B.i,d.ta=this.B.ta;this.i("PC8080 v1.31.1\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.Ea&&d.Ea(this,this.H,this.u,this.K);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.D=d:this.b=parseInt(d,10));var f;if(a=vc(this,"state")||(f=!0,a.state))b=this.M=a,f||(this.C=!0,this.b=Th),this.b&&(this.I=new Vc(this,"1.31.1"),Vh(this.I)?b=null:delete this.I);
!b&&this.b&&(b=Wh(this))&&(this.C=!0);if(b){var g=this;va(b,null,!0,function(a,b,c){c?(g.D=null,g.C=!1,g.aa("Unable to load machine state from server (error "+c+(b?": "+oa(b):"")+")")):(g.F=b,g.O=!0);kb(g)})}else kb(this);this.P.power||(this.L=!0);!c&&this.L&&Xh(this,this.kb)}else v("Unable to find CPU component")}ba(Rh,x);function Sh(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){v(d.message+" ("+c+")")}}a.R=b}
function vc(a,b,c){var d=b.toLowerCase(),d=Ga(b)||Ga(d);void 0===d&&a.R&&(d=a.R[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Xh(a,b,c){for(var d=bb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ib(f)){ib(f,function(){Xh(a,b,c)});return}}b.call(a,c)}
function Yh(a,b){var c=new Vc(a,"1.31.1",Zh);if(Vh(c)&&$h(c)){var d=c.get(ai),e=b?b.get(ai):"unknown";d!=e&&(a.aa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=Rh.prototype;
k.kb=function(a){void 0===a&&(a=this.b||(this.F?bi:Th));if(!this.j){this.j++;var b=!1,c=!1;this.N=!1;var d=this.I||new Vc(this,"1.31.1");if(a==ci)b=!0;else if(a>Th){if(Vh(d,this.F)){this.w=new Vc(this,"1.31.1",di);Vh(this.w)&&(ei(this,d),a=fi,gi(this.w));this.w.set(ai,sa());hi(this.w);var e=this.b&&!this.C;if(a==bi||za("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=$h(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Vh(d,g):("error"==f&&"no machine state"!=
g?(this.aa("Error: "+g),"unable to verify user"==g&&(Ea(ii,""),this.g=null)):this.i(f+": "+g),gi(d),Vh(d)?(c=$h(d),e=!0):c=!1))}e&&Yh(this,c?d:null)}else a==fi&&d.clear()}else Yh(this);delete this.F;delete this.I}e=bb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.u&&(c=ji(this,g,d,b,c));b=[d,a,c];a!=ci?Xh(this,this.fc,b):this.fc(b)}};
function ji(a,b,c,d,e){if(!b.G.ja){b.G.ja=!0;if(b.ua){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ua(f,d)&&f&&(v("Unable to restore state for "+b.type),a.M&&!a.O?(c.clear(),a.b=Th,window&&window.location.reload()):a.N=!0,b.ua(null),e=!1)}if(!d&&b.bc)for(a=b.bc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
k.fc=function(a){var b=a[0],c=0>a[1];a=a[2];this.W=!0;this.G.ja=!0;var d=this.P.power;d&&(d.textContent="Shutdown");this.u&&(ji(this,this.u,b,c,a),this.u.ib());this.N&&(ei(this,b),b.clear());!c&&this.w&&(this.w.clear(),delete this.w);this.j=0};
function ei(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.g||"";b=b.toString();var d={app:"PC8080",ver:"1.31.1"};d.url=a.U;d.user=c;d.type="bug";d.data=b;va("http://www.pcjs.org/api/v1/report",d,!0)}}
function Kh(a,b,c){var d,e="none";if(a.j)return null;a.j--;var f=new Vc(a,"1.31.1"),g=new Vc(a,"1.31.1",Zh),h=sa();g.set(ai,h);f.set(ai,h);f.set(ki,"1.31.1");f.set(li,window?window.location.href:null);f.set(mi,xa());a.u&&a.u.wa&&(c&&a.u.da(),d=a.u.wa(b,c),"object"===typeof d&&f.set(a.u.id,d),c&&(a.u.G.ja=!1,!1===d&&(e=null)));for(var h=bb(a.id),l=0;l<h.length;l++){var p=h[l];p.G.ja&&(p.wa&&(d=p.wa(b,c),"object"===typeof d&&f.set(p.id,d)),c&&(p.G.ja=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.g&&Ai(a,
a.g,f.toString()),hi(g)&&hi(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Bi),d&&f.clear(h)):e=f.toString());c&&(a.G.ja=!1,b=a.P.power)&&(b.textContent="Power");a.j=0;return e}k.reset=function(){this.H&&this.H.reset&&(ob(this,"Resetting "+this.H.type),this.H.reset());for(var a=bb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(ob(this,"Resetting "+c.type),c.reset())}};
k.start=function(a,b){for(var c=bb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};k.stop=function(a,b){for(var c=bb(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
k.ca=function(a,b,c){var d=this;switch(b){case "power":return this.P[b]=c,c.onclick=function(){d.j||(d.G.ja?Kh(d,!1,!0):Xh(d,d.kb))},!0;case "reset":return this.P[b]=c,c.onclick=function(){if(d.G.ja&&!d.j)if(d.b&&!d.D){var a=za("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Kh(d,a,!0);!a&&d.M?window&&window.location.reload():d.kb(Th)}else d.reset(),d.u&&d.u.ib()},!0;case "save":if(ha())c.parentNode.removeChild(c);else return this.P[b]=
c,c.onclick=function(){var a=Uh(d,!0);if(a){var b=!!(d.b&&!d.D||d.M),c=Kh(d,b);b?Ai(d,a,c):d.aa("Resume disabled, machine state not saved")}},!0}return!1};
function Uh(a,b){var c=a.g;c||((c=Da(ii),void 0!==c)?!c&&b&&(b=null,window&&(b=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=b)&&((c=Ci(a,c))||a.aa("The user ID is invalid.")):b&&a.aa("Browser local storage is not available"));return c}
function Ci(a,b){a.g=null;b=va(ja()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ea(ii,b.data),a.g=b.data)}catch(d){v(d.message+" ("+c+")")}return a.g}function Wh(a){var b=null;a.g&&(b=ja()+"/api/v1/user?req=load&user="+a.g+"&state="+Di(a,"1.31.1"));return b}
function Ai(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Di(a,"1.31.1");d.data=c;b=va(ja()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.aa("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.aa(c),Ea(ii,""),a.g=null)}}
function vb(a,b,c){a=bb(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}function Hc(a,b){if(a.A.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a=a.A[0];a.V&&a.V.focus();!b&&window&&window.scrollTo(c,d)}}
function Lc(a,b){a.u&&(a=a.u,a.fb&&(b||!a.G.ka||a.G.ec)&&(J(a,"A",a.g),J(a,"B",a.w),J(a,"C",a.A),J(a,"BC",Wc(a),4),J(a,"D",a.B),J(a,"E",a.C),J(a,"DE",jd(a),4),J(a,"H",a.D),J(a,"L",a.F),J(a,"HL",D(a),4),J(a,"SP",a.M,4),J(a,"PC",a.j,4),b=Uc(a),J(a,"PS",b,4),J(a,"IF",b&512?1:0,1),J(a,"SF",b&128?1:0,1),J(a,"ZF",b&64?1:0,1),J(a,"AF",b&16?1:0,1),J(a,"PF",b&4?1:0,1),J(a,"CF",b&1?1:0,1)),b=a.P.speed)&&(b.textContent=a.G.ka&&a.Y?a.Y.toFixed(2)+"Mhz":"Stopped")}
var di="failsafe",Zh="validate",ai="timestamp",ki="version",li="url",mi="browser",ii="user",ci=-1,Th=0,bi=1,fi=2,Bi=3;Na(function(){for(var a=gb(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=eb(c),c=gb(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=eb(f),g=new Rh(g,d,!0);fb(g,f);g.L&&Xh(g,g.kb)}});Oa.show.push(function(){for(var a=gb(document,"pc8080","computer"),b=0;b<a.length;b++){var c=eb(a[b]);(c=db("Computer",c.id))&&c.W&&!c.G.ja&&c.kb(ci)}});
Oa.exit.push(function(){for(var a=gb(document,"pc8080","computer"),b=0;b<a.length;b++){var c=eb(a[b]);(c=db("Computer",c.id))&&c.G.ja&&Kh(c,!(!c.b||c.D),!0)}});function Vc(a,b,c){this.id=a.id;this.K=a.K;this.g="";this.b={};this.u=this.H=!1;this.key=Di(a,b,c);gi(this,a.wd)}k=Vc.prototype;k.set=function(a,b){try{this.b[a]=b}catch(c){}};k.get=function(a){return this.b[a]||null};k.data=function(){return this.b};
function Vh(a,b){return b?(a.g=b,a.u=!0,a.H=!1,!0):a.u?!0:Ba()&&(b=Da(a.key))?(a.g=b,a.u=!0):!1}function $h(a){var b=!0;if(!a.H)try{a.b=JSON.parse(a.g),a.H=!0}catch(c){v(c.message||c),b=!1}return b}function hi(a){var b=!0;if(Ba()){var c=JSON.stringify(a.b);Ea(a.key,c)||(v("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.b?JSON.stringify(this.b):this.g};function gi(a,b){a.g="";a.b={};a.u=a.H=!1;b&&a.set("parms",b)}
k.clear=function(a){gi(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 Di(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}var Ei=0;
function Fi(a,b,c,d,e,f){e("Loading "+a+"...");va(a,null,!0,function(g,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),f(h,null)):Gi(h,a,b,c,d,e,f)})}
function Gi(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&($a(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(r){f=null,a=r.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?Hi(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
null)}
function zg(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");ta(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");
a=a.replace(d[0],g);zg(a,b,c)}})}else c(a,null)}
function Ag(a,b,c,d){function e(a){if(void 0===h){var b=g&&D(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=la(a))}function f(a){e("Error: "+a);k&&(--jg||Ua(!0));k=!1}var g,h,k=!0;jg++;Ya[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=m:q.appendChild(document.createTextNode(m));p.appendChild(q)}c||
(c="/versions/pc8080/1.31.1/components.xsl");m=function(d,h){h?xg(c,null,null,!1,e,function(d,k){k?(Za(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--jg||Ua(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--jg||Ua(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?xg(b,a,d,!0,e,m):yg(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(y){f(y.message)}return k}window.embedPC8080=function(a,b,c,d){Ua(!1);return Ag(a,b,c,d)};window.enableEvents=Ua;window.sendEvent=Va;})();
function Hi(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");va(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],p,r=/( [a-z]+=)(['"])(.*?)\2/g;p=r.exec(f);)l=0>l.indexOf(p[1])?l.replace(">",p[0]+">"):l.replace(new RegExp(p[1]+"(['\"])(.*?)\\1"),p[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");
a=a.replace(d[0],g);Hi(a,b,c)}})}else c(a,null)}
function Ii(a,b,c,d){function e(a){if(void 0===h){var b=g&&gb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ka(a))}function f(a){e("Error: "+a);l&&(--Ei||Sa(!0));l=!1}var g,h,l=!0;Ei++;ab[a]={};try{if(g=document.getElementById(a)){var p;if("object"==typeof resources&&(p=resources.css)){var r=document.head||document.getElementsByTagName("head")[0],t=document.createElement("style");t.type="text/css";t.styleSheet?t.styleSheet.cssText=p:t.appendChild(document.createTextNode(p));r.appendChild(t)}c||
(c="/versions/pc8080/1.31.1/components.xsl");p=function(d,h){h?Fi(c,null,null,!1,e,function(d,l){l?($a(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--Ei||Sa(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(l),(l=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--Ei||Sa(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?Fi(b,a,d,!0,e,p):Gi(b,null,a,d,!1,e,p)}else f("missing machine element: "+a)}catch(A){f(A.message)}return l}window.embedPC8080=function(a,b,c,d){Sa(!1);return Ii(a,b,c,d)};window.enableEvents=Sa;window.sendEvent=Ua;})();

View file

@ -1,18 +1,17 @@
(function(){/*
http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/dumpapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/reportapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/userapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/keys.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/strlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/weblib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpudef.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/messages.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/state.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/embed.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/defines.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/usrlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/component.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/defines.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/panel.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/bus.js (C) Jeff Parsons 2012-2016
@ -26,181 +25,183 @@
http://pcjs.org/modules/pc8080/lib/keyboard.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/video.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/serialport.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/es6/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2016
*/
var l,m={ud:0,xd:1,yd:2,zd:3,Ad:4,Bd:5,Cd:6,Dd:7,Ed:8,Fd:9,Gd:10,Hd:11,Id:12,Jd:13,Kd:14,Ld:15,Md:16,Nd:17,Od:18,Pd:19,Qd:20,Rd:21,Sd:22,Td:23,Ud:24,Vd:25,Wd:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Wa:65,Sb:66,Ub:67,sb:68,E:69,Xb:70,Yb:71,Zb:72,$b:73,gc:74,hc:75,ub:76,oc:77,pc:78,sc:79,tc:80,Q:81,zc:82,Cc:83,Hc:84,Ic:85,Jc:86,Kc:87,
Mc:88,Nc:89,kb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Pc:97,Ee:98,Fe:99,d:100,e:101,Ge:102,He:103,Ie:104,Je:105,Ke:106,k:107,Le:108,Me:109,n:110,Ne:111,p:112,q:113,r:114,Oe:115,t:116,Pe:117,Qe:118,Re:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,Xd:127};
var k;function m(a,b){function c(){}c.prototype=b.prototype;a.prototype=new c;a.prototype.constructor=a;for(var d in b)if(Object.defineProperties){var e=Object.getOwnPropertyDescriptor(b,d);e&&Object.defineProperty(a,d,e)}else a[d]=b[d]}
var p={Jd:0,Md:1,Nd:2,Od:3,Pd:4,Qd:5,Rd:6,Sd:7,Td:8,Ud:9,Vd:10,Wd:11,Xd:12,Yd:13,Zd:14,$d:15,ae:16,be:17,ce:18,de:19,ee:20,fe:21,ge:22,he:23,ie:24,je:25,ke:26," ":32,"!":33,'"':34,"#":35,$:36,"%":37,"&":38,"'":39,"(":40,")":41,"*":42,"+":43,",":44,"-":45,".":46,"/":47,0:48,1:49,2:50,3:51,4:52,5:53,6:54,7:55,8:56,9:57,":":58,";":59,"<":60,"=":61,">":62,"?":63,"@":64,Ua:65,Sb:66,Ub:67,rb:68,E:69,Xb:70,Yb:71,Zb:72,$b:73,gc:74,hc:75,tb:76,oc:77,pc:78,sc:79,tc:80,Q:81,zc:82,Cc:83,Hc:84,Ic:85,Jc:86,Kc:87,
Mc:88,Nc:89,ib:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Oc:97,Te:98,Ue:99,d:100,e:101,Ve:102,We:103,Xe:104,Ye:105,Ze:106,k:107,$e:108,af:109,n:110,bf:111,p:112,q:113,r:114,cf:115,t:116,df:117,ef:118,ff:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,le:127};
function aa(a){var b=16,c;if(a){b||(b=10);var d=a.charAt(0),e=0<a.indexOf(",");e&&(a=a.replace(/,/g,""));"#"==d?(b=8,d=null):"$"==d&&(b=16,d=null);null==d?a=a.substr(1):("0"==d&&(d=a.charAt(1),"b"==d&&e&&(b=2,d=null),"o"==d?(b=8,d=null):"x"==d&&(b=16,d=null)),null==d?a=a.substr(2):(d=a.charAt(a.length-1).toLowerCase(),"y"==d?(b=2,d=null):"."==d?(b=10,d=null):"h"==d&&(b=16,d=null),null==d&&(a=a.substr(0,a.length-1))));var f,d=a;((e=b)&&10!=e?16==e?d.match(/^[0-9a-f]+$/i):8==e?d.match(/^[0-7]+$/):2==
e&&d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function p(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}function ca(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function da(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
function ea(){var a=fa();return-1!==a.indexOf("pcjs.org",a.length-8)}var ga={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function ha(a){return a.replace(/[&<>"']/g,function(a){return ga[a]})}function ia(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
var ja={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"},ka=Date.now||function(){return+new Date};
e&&d.match(/^[01]+$/):d.match(/^[0-9]+$/))&&!isNaN(f=parseInt(a,b))&&(c=f|0)}return c}function q(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}function ba(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0<c&&(b=b.substr(0,c));return b}function da(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}
function ea(){var a=fa();return-1!==a.indexOf("pcjs.org",a.length-8)}function ga(a){return a.replace(/[&<>"']/g,function(a){return ha[a]})}function ia(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}
var ha={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"},ja={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"};function ka(){return Date.now()||+new Date}
function la(){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 ma(a,b,c,d){var e=0,f=null,g=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)}),g;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"==
typeof b){var k="",n;for(n in b)b.hasOwnProperty(n)&&(k&&(k+="&"),k+=n+"="+encodeURIComponent(b[n]));k=k.replace(/%20/g,"+");h.open("POST",a,!!c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(k)}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),g=[f,e]);return g}
function na(a,b){var c,d={aa:null,wa:null,Da:null,xa:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Da=g.load;d.xa=g.exec;if(e=g.bytes)d.aa=e;else if(e=g.words)for(d.aa=Array(2*e.length),f=c=0;c<e.length;c++)d.aa[f++]=e[c]&255,d.aa[f++]=e[c]>>8&255;else if(e=g.data)for(d.aa=Array(4*e.length),f=c=0;c<e.length;c++)d.aa[f++]=
e[c]&255,d.aa[f++]=e[c]>>8&255,d.aa[f++]=e[c]>>16&255,d.aa[f++]=e[c]>>24&255;else d.aa=g;d.wa=g.symbols;d.aa.length?1==d.aa.length&&(q(d.aa[0]),d=null):(q("Empty resource: "+a),d=null)}catch(h){q("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){q("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.aa=e)}return d}
function fa(){return"http://"+(window?window.location.host:"www.pcjs.org")}function q(a){window&&window.alert(a)}function oa(a){var b=!1;window&&(b=window.confirm(a));return b}var pa=null;function qa(){if(null==pa){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}pa=a}return pa}
function ra(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function sa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function ua(a){if(window){var b=window?window.navigator.userAgent:"";return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}
function va(a){if(!wa){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}wa=c}return wa[a]}var wa=null,xa={init:[],show:[],exit:[]},ya=!1,za=!1,Aa=!0;function Ba(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Ca(a){xa.init.push(a)}
function Da(a){if(Aa)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Ea("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Fa(a){!Aa&&a?(Aa=!0,ya&&Ga("init"),za&&Ga("show")):Aa=a}function Ga(a){xa[a]&&Da(xa[a])}Ba("onload",function(){ya=!0;Da(xa.init)});Ba("onpageshow",function(){za=!0;Da(xa.show)});Ba(ua("Opera")||ua("iOS")?"onunload":"onbeforeunload",function(){Da(xa.exit)});
function r(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ab=b.comment;this.Sc=b;b=this.id.indexOf(".");0>b?this.Ya=this.id:(this.za=this.id.substr(0,b),this.Ya=this.id.substr(b+1));this[a]=c;this.j={ready:!1,ab:!1,lb:!1,Y:!1,error:!1};this.eb=null;this.j.error=!1;this.v={};this.N=null;u.push(this)}
function Ha(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}function w(a,b){b||(b=r);a.prototype=Ha(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var Ia=window.PCjs.Machines||(window.PCjs.Machines={}),u=window.PCjs.Components||(window.PCjs.Components=[])}else Ia={},u=[];
function Ja(a,b,c){Ia[a]&&b&&(Ia[a][b]=c)}function Ea(a,b,c){b||q((c?c+": ":"")+a)}function Ka(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<u.length;b++){var d=u[b];a&&d.id.indexOf(a)||c.push(d)}return c}function La(a){if(void 0!==a){var b;for(b=0;b<u.length;b++)if(u[b].id===a)return u[b]}return null}
function Ma(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<u.length;d++)if(c)c==u[d]&&(c=null);else if(!(a!=u[d].type||b&&u[d].id.indexOf(b)))return u[d]}return null}function y(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){q(c.message+" ("+a+")")}return b}
function Na(a,b){b=A(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),k=0;k<h.length;k++)switch(g=h[k],g){case "pc8080-binding":(g=y(f))&&g.binding&&a.U(g.type,g.binding,f,g.value),k=h.length}}}}
function A(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}
r.prototype={constructor:r,parent:null,toString:function(){return this.name?this.name:this.id||this.type},U:function(a,b,c){switch(b){case "clear":return this.v[b]||(this.v[b]=c,c.onclick=function(a){return function(){a.v.print&&(a.v.print.value="")}}(this)),!0;case "print":return this.v[b]||(this.ya=this.v[b]=c,c.value="",this.ea=function(a){return function(b,c){8192<a.value.length&&(a.value=a.value.substr(a.value.length-4096));a.value+=(void 0!==c?c+": ":"")+(b||"")+"\n";a.scrollTop=a.scrollHeight}}(c),
this.K=function(a){this.ea(a,this.Ya)}),!0;default:return!1}},log:function(){},ea:function(){},status:function(a){this.ea(this.Ya+": "+a)},K:function(a,b,c){Ea(a,b,c||this.type)},fa:function(){return this.j.Y=!0},ha:function(a,b){b&&(this.j.Y=!1);return!0}};function Oa(a,b){if(a.j.lb)return a.j.ab=!1,a.j.lb=!1;if(a.j.error)return a.ea(a.toString()+" error"),!1;a.j.ab=b;return a.j.ab}function B(a){if(!a.j.error&&(a.j.ready=!0,a.j.ready)){var b=a.eb;a.eb=null;b&&b()}}
function Pa(a,b){b&&(a.j.ready?b():a.eb=b);return a.j.ready}Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
function ma(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=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)}),g;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"==typeof b){var l="",n;for(n in b)b.hasOwnProperty(n)&&(l&&(l+="&"),l+=n+"="+encodeURIComponent(b[n]));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),g=[f,e]);return g}
function na(a,b){var c,d={W:null,sa:null,Aa:null,ta:null};if("["==b.charAt(0)||"{"==b.charAt(0))try{var e,f,g;if("<"==b.substr(0,1))throw Error(b);g=0>b.indexOf("0x")&&'["'!=b.substr(0,2)?JSON.parse(b.replace(/([a-z]+):/gm,'"$1":').replace(/\/\/[^\n]*/gm,"")):eval("("+b+")");d.Aa=g.load;d.ta=g.exec;if(e=g.bytes)d.W=e;else if(e=g.words)for(d.W=Array(2*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&255,d.W[f++]=e[c]>>8&255;else if(e=g.data)for(d.W=Array(4*e.length),f=c=0;c<e.length;c++)d.W[f++]=e[c]&
255,d.W[f++]=e[c]>>8&255,d.W[f++]=e[c]>>16&255,d.W[f++]=e[c]>>24&255;else d.W=g;d.sa=g.symbols;d.W.length?1==d.W.length&&(r(d.W[0]),d=null):(r("Empty resource: "+a),d=null)}catch(h){r("Resource data error ("+a+"): "+h.message),d=null}else{e=[];b=b.replace(/\n/gm," ").replace(/ +$/,"").split(" ");for(c=0;c<b.length;c++){f=parseInt(b[c],16);if(isNaN(f)){r("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.W=e)}return d}
function fa(){return"http://"+(window?window.location.host:"www.pcjs.org")}function r(a){window&&window.alert(a)}function oa(a){var b=!1;window&&(b=window.confirm(a));return b}function pa(){if(null==qa){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}qa=a}return qa}
function ra(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function sa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function ua(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)}return!1}
function va(a){if(!wa){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}wa=c}return wa[a]}function xa(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function ya(a){za.init.push(a)}
function Aa(a){if(Ba)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Ca("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Da(a){!Ba&&a?(Ba=!0,Ea&&Fa("init"),Ga&&Fa("show")):Ba=a}function Fa(a){za[a]&&Aa(za[a])}var wa=null,za={init:[],show:[],exit:[]},Ea=!1,Ga=!1,Ba=!0,qa=null;xa("onload",function(){Ea=!0;Aa(za.init)});xa("onpageshow",function(){Ga=!0;Aa(za.show)});
xa(ua("Opera")||ua("iOS")?"onunload":"onbeforeunload",function(){Aa(za.exit)});function u(a,b){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.Ab=b.comment;this.Rc=b;this.exports={};a=this.id.indexOf(".");0>a?this.Wa=this.id:(this.Ia=this.id.substr(0,a),this.Wa=this.id.substr(a+1));this.i={ready:!1,Ya:!1,kb:!1,U:!1,error:!1};this.ab=null;this.i.error=!1;this.w={};this.J=this.m=this.u=this.F=this.pa=null;w.push(this)}function Ha(a,b,c){Ia[a]&&b&&(Ia[a][b]=c)}
function Ca(a,b,c){b||r((c?c+": ":"")+a)}function Ja(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<w.length;b++){var d=w[b];a&&d.id.indexOf(a)||c.push(d)}return c}function Ka(a){if(void 0!==a){var b;for(b=0;b<w.length;b++)if(w[b].id===a)return w[b]}return null}function La(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<w.length;d++)if(c)c==w[d]&&(c=null);else if(!(a!=w[d].type||b&&w[d].id.indexOf(b)))return w[d]}return null}
function y(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){r(c.message+" ("+a+")")}return b}function Ma(a,b){b=A(b.parentNode,"pc8080-control");for(var c=0;c<b.length;c++)for(var d=b[c].childNodes,e=0;e<d.length;e++){var f=d[e];if(1===f.nodeType){var g=f.getAttribute("class");if(g)for(var h=g.split(" "),l=0;l<h.length;l++)switch(g=h[l],g){case "pc8080-binding":(g=y(f))&&g.binding&&a.S(g.type,g.binding,f,g.value),l=h.length}}}}
function A(a,b,c){c&&(b+="-"+c+"-object");if(a.getElementsByClassName)return a.getElementsByClassName(b);var d;c=[];a=a.getElementsByTagName("*");var e=new RegExp("(^| )"+b+"( |$)");b=0;for(d=a.length;b<d;b++)e.test(a[b].className)&&c.push(a[b]);return c}k=u.prototype;k.toString=function(){return this.name?this.name:this.id||this.type};
k.S=function(a,b,c){switch(b){case "clear":return this.w[b]||(this.w[b]=c,c.onclick=function(a){return function(){a.w.print&&(a.w.print.value="")}}(this)),!0;case "print":return this.w[b]||(this.pa=this.w[b]=c,c.value="",this.aa=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){this.aa(a,this.Wa)}),!0;default:return!1}};k.log=function(){};k.aa=function(){};
k.status=function(a){this.aa(this.Wa+": "+a)};k.G=function(a,b,c){Ca(a,b,c||this.type)};function Na(a,b){b&&(a.i.ready?b():a.ab=b);return a.i.ready}function B(a){if(!a.i.error&&(a.i.ready=!0,a.i.ready)){var b=a.ab;a.ab=null;b&&b()}}function Oa(a,b){if(a.i.kb)return a.i.Ya=!1,a.i.kb=!1;if(a.i.error)return a.aa(a.toString()+" error"),!1;a.i.Ya=b;return a.i.Ya}k.ba=function(){return this.i.U=!0};k.fa=function(a,b){b&&(this.i.U=!1);return!0};
window&&(window.PCjs||(window.PCjs={}),window.PCjs.Machines||(window.PCjs.Machines={}),window.PCjs.Components||(window.PCjs.Components=[]));var Ia=window?window.PCjs.Machines:{},w=window?window.PCjs.Components:[];Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
Function.prototype.bind||(Function.prototype.bind=function(a){function b(){return e.apply(this instanceof c&&a?this:a,d.concat(Array.prototype.slice.call(arguments)))}function c(){}if("function"!=typeof this)throw new TypeError("Function.prototype.bind: non-callable object");var d=Array.prototype.slice.call(arguments,1),e=this;c.prototype=this.prototype;b.prototype=new c;return b});
var Qa="undefined"!==typeof ArrayBuffer,Sa=[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 Ta(a){r.call(this,"Panel",a,Ta)}w(Ta);l=Ta.prototype;l.U=function(a,b,c,d){return this.w&&this.w.U(a,b,c,d)||this.a&&this.a.U(a,b,c,d)||this.l&&this.l.U(a,b,c,d)?!0:this.parent.U.call(this,a,b,c,d)};l.ra=function(a,b,c,d){this.w=a;this.i=b;this.a=c;this.N=d;this.l=C(a,"Keyboard")};l.fa=function(a,b){b||Ua();return!0};l.ha=function(){return!0};l.ia=function(){};
function Ua(){for(var a=!1,b=A(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=y(d),f=La(e.id);f||(a=!0,f=new Ta(e));Na(f,d);a&&B(f)}}Ca(Ua);
function Va(a,b,c){r.call(this,"Bus",a,Va);this.a=b;this.N=c;this.o=a.busWidth||16;this.s=Math.pow(2,this.o);this.g=this.s-1|0;this.i=(this.o>>1)+2;10>this.i&&(this.i=10);15<this.i&&(this.i=15);this.c=1<<this.i;this.u=this.c>>2;this.f=this.c-1;this.h=this.s/this.c|0;this.m=this.h-1;this.l=[];this.w=[];this.A=[];this.B=[];a=new D;Wa(a,this.N);this.b=Array(this.h);for(b=0;b<this.h;b++)this.b[b]=a;B(this)}w(Va);Va.prototype.reset=function(){};Va.prototype.fa=function(a,b){b||this.reset();return!0};
function Xa(a,b,c,d){for(var e=b,f=c,g=e>>>a.i;0<f&&g<a.b.length;){var h=a.b[g],k=g*a.c,n=a.c-(e-k);n>f&&(n=f);if(h&&h.size){if(h.type==d){if(e+f<=h.Ra)return h.ib+=h.Ra-e,h.Ra=e,!0;if(e>=h.Ra+h.ib){n=h.size-(e-k);n>f&&(n=f);h.ib=e-h.Ra+n;e=k+a.c;f-=n;g++;continue}}return Ya(1,e,f)}e=new D(e,n,a.c,d);Wa(e,a.N,h);a.b[g++]=e;e=k+a.c;f-=n}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Za[d]+" at "+p(b,4,!0)),!0):Ya(2,b,c)}Va.prototype.J=function(a){return this.b[(a&this.g)>>>this.i].Ua(a&this.f,a)};
function $a(a,b){return a.b[(b&a.g)>>>a.i].hb(b&a.f,b)}function ab(a,b){var c=b&a.f,d=(b&a.g)>>>a.i;return c!=a.f?a.b[d].qd(c,b):a.b[d++].Ua(c,b)|a.b[d&a.m].Ua(0,b+1)<<8}Va.prototype.ba=function(a,b){this.b[(a&this.g)>>>this.i].Va(a&this.f,b&255,a)};function bb(a,b,c){a.b[(b&a.g)>>>a.i].Nb(b&a.f,c&255,b)}function cb(a,b,c){var d=b&a.f,e=(b&a.g)>>>a.i;d!=a.f?a.b[e].sd(d,c&65535,b):(a.b[e++].Va(d,c&255,b),a.b[e&a.m].Va(0,c>>8&255,b+1))}
function db(a){for(var b=0,c=[],d=0;d<a.h;d++){var e=a.b[d];if(e.oa||e.Gb){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,k=[];g<e.length;){for(var n=e[g],v=g+1;v<e.length&&e[v]===n;)v++;k[h++]=v-g;k[h++]=n;g=v}k.length<e.length&&(e=k)}c[f]=e}}return c}function eb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var k=+e+d;k<=g;k++)void 0!==f.l[k]?q("Input port "+p(k,4,!0)+" already registered"):f.l[k]=[h,!1]}}
function fb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var k=+e+d;k<=g;k++)void 0!==f.w[k]?q("Output port "+p(k,4,!0)+" already registered"):f.w[k]=[h,!1]}}function Ya(a,b,c){q("Memory block error ("+a+": "+p(b)+","+p(c)+")");return!1}var gb;if(Qa){var hb=new ArrayBuffer(2);(new DataView(hb)).setUint16(0,256,!0);gb=256===(new Uint16Array(hb))[0]}else gb=!1;var jb=gb;
function D(a,b,c,d){this.id=kb+=2;this.a=null;this.Ra=a;this.ib=b;this.size=c||0;this.type=d||lb;this.c=d==mb;Wa(this);this.oa=this.Gb=!1;if(c)if(Qa)this.i=new ArrayBuffer(c),this.v=new DataView(this.i,0,c),this.b=new Uint8Array(this.i,0,c),this.h=new Uint16Array(this.i,0,c>>1),this.a=new Int32Array(this.i,0,c>>2),nb(this,jb?ob:pb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;nb(this,qb)}else nb(this)}var lb=0,mb=2,Za=["NONE","RAM","ROM","VID","H/W"],kb=0;
D.prototype={constructor:D,parent:null,save:function(){var a,b;if(Qa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.v.getInt32(b<<2,!0);else a=this.a;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(Qa)for(b=0;b<a.length;b++)this.v.setInt32(b<<2,a[b],!0);else this.a=a;return this.oa=!0}return!1},l:function(){return 255},m:function(){},w:function(a,b){return this.Ua(a++,b++)|this.Ua(a,b)<<8},o:function(a,b,c){this.Va(a++,b&255,c++);this.Va(a,b>>8,c)},B:function(a){return this.a[a>>
2]>>>((a&3)<<3)&255},H: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},R:function(a,b){var c=a>>2;a=(a&3)<<3;this.a[c]=this.a[c]&~(255<<a)|b<<a;this.oa=!0},Z:function(a,b){var c=a>>2;a=(a&3)<<3;24>a?this.a[c]=this.a[c]&~(65535<<a)|b<<a:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.oa=!0},u:function(a,b){return this.hb(a,b)},G:function(a,b){return this.Kb(a,b)},M:function(a,b,c){this.c||this.Nb(a,b,c)},V:function(a,
b,c){this.c||this.W(a,b,c)},s:function(a){return this.b[a]},A:function(a){return this.b[a]},F:function(a){return this.v.getUint16(a,!0)},L:function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.h[a>>1]},I:function(a,b){this.b[a]=b;this.oa=!0},P:function(a,b){this.b[a]=b;this.oa=!0},T:function(a,b){this.v.setUint16(a,b,!0);this.oa=!0},za:function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.h[a>>1]=b;this.oa=!0}};function Wa(a,b,c){a.N=b;a.f=a.g=0;c&&((a.f=c.f)&&rb(a,sb,!1),(a.g=c.g)&&tb(a,sb,!1))}
function tb(a,b,c){c&&a.g||(a.Va=!a.c&&b[1]||a.m,a.sd=!a.c&&b[3]||a.o);if(c||void 0===c)a.Nb=b[1]||a.m,a.W=b[3]||a.o}function rb(a,b,c){c&&a.f||(a.Ua=b[0]||a.l,a.qd=b[2]||a.w);if(c||void 0===c)a.hb=b[0]||a.l,a.Kb=b[2]||a.w}function nb(a,b){b||(b=ub);rb(a,b,void 0);tb(a,b,void 0)}var ub=[],qb=[D.prototype.B,D.prototype.R,D.prototype.H,D.prototype.Z],sb=[D.prototype.u,D.prototype.M,D.prototype.G,D.prototype.V];
if(Qa)var pb=[D.prototype.s,D.prototype.I,D.prototype.F,D.prototype.T],ob=[D.prototype.A,D.prototype.P,D.prototype.L,D.prototype.za];function vb(a,b){r.call(this,"CPU",a,vb);var c=a.multiplier||1;this.ma=a.cycles||b;this.I=c;this.Ga=Math.round(this.ma/1E4)/100;this.T=this.Ga*this.I;this.j.pa=!1;this.j.Lb=!1;this.j.Sa=a.autoStart;this.j.Eb=!1;this.j.bb=!1;this.ua=this.W=0;this.va=a.csStart;this.Z=a.csInterval;this.ja=a.csStop;this.F=[];this.$a=this.ob.bind(this);B(this)}w(vb);var wb=["power","reset"];
l=vb.prototype;l.ra=function(a,b,c,d){this.w=a;this.i=b;this.N=d;for(b=0;b<wb.length;b++)(c=this.v[wb[b]])&&this.w.U(null,wb[b],c);this.L=C(a,"ChipSet");a=xb(a,"autoStart");null!=a&&(this.j.Sa="true"==a?!0:"false"==a?!1:!!a);B(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};l.fa=function(a,b){if(!b){if(a&&this.restore){yb(this);if(!this.restore(a))return!1;zb(this)}else this.reset();this.ea("No debugger detected")}Ab(this);return!0};
l.ha=function(a){return a?this.save():!0};l.Sa=function(){return this.j.Sa||void 0===this.v.run?(this.ob(),!0):!1};l.Hb=function(){return 0};function zb(a){void 0===a.va&&(a.va=0);void 0===a.Z&&(a.Z=-1);void 0===a.ja&&(a.ja=-1);a.j.bb=0<=a.va&&0<a.Z;a.j.bb&&(a.ua=0,a.W=a.va-a.G)}
l.U=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.v[b]=c;a=!0;break;case "run":this.v[b]=c;c.onclick=function(){var a;if(a=d.w)if(a=d.w,a.j.Y)a=!0;else{var b=null,c,h=Ka(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.j.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.j.Y);c++);c==h.length&&(b=a);q("The "+b.type+" component ("+b.id+") is not "+(b.j.ready?"powered yet":"ready yet"+(b.eb?" (waiting for notification)":""))+".");a=!1}a&&(d.j.pa?Bb(d):d.ob())};a=!0;
break;case "speed":this.v[b]=c;a=!0;break;case "setSpeed":this.v[b]=c,c.onclick=function(){Cb(d,d.I<<1,!0)},c.textContent=this.T.toFixed(2)+"Mhz",a=!0}return a};function Db(a,b){var c=1;b&&1<a.I&&a.P&&(c=a.P/a.Ga);a.Pa=Math.round(1E3/30);a.Ba=Math.floor(a.ma/30*c);b||(a.la=a.Ba);a.Ha=0}function Eb(a){return a.G+a.M+a.V-a.a}function yb(a){a.P=0;a.Qa=0;a.G=a.M=a.V=a.a=0;zb(a);Cb(a,1)}
function Cb(a,b,c){if(void 0!==b){.8>a.P/a.T&&(b=1);a.I=b;b=a.Ga*a.I;if(a.T!=b){a.T=b;b=a.T.toFixed(2)+"Mhz";var d=a.v.setSpeed;d&&(d.textContent=b);a.ea("target speed: "+b)}c&&a.w&&Fb(a.w)}a.G+=a.M;a.M=0;a.H=ka();a.R=0;Db(a)}function Gb(a,b){var c=a.F.length;a.F.push([-1,b]);return c}function Hb(a,b,c){0<=b&&b<a.F.length&&0>a.F[b][0]&&(c*=a.ma*a.I/1E3,a.F[b][0]=c+Ib(a))}function Ib(a,b){var c=a.V-=a.a;a.a=0;b&&(a.V=0);return c}
l.ob=function(a){if(Oa(this,!0)){if(!this.j.pa){Cb(this);this.w&&this.w.start(this.H,Eb(this));this.j.pa=!0;this.j.Lb=!0;this.L&&this.L.start();var b=this.v.run;b&&(b.textContent="Halt");this.w&&(this.w.ia(!0),a&&Fb(this.w,!0))}this.Ha>=this.ma&&Db(this,!0);this.qa=0;this.ta=ka();this.R&&(a=this.ta-this.R,a>this.Pa&&(this.H+=a,this.H>this.ta&&(this.H=this.ta)));try{do{for(var c,d=this.j.bb?1:this.Ba,e=this.F.length-1;0<=e;e--){var f=this.F[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.Mb(c);c=Ib(this,!0);
this.qa+=c;this.M+=c;a=c;this.j.bb&&(b=!1,this.ua=this.ua+this.Hb()|0,this.W-=a,0>=this.W&&(this.W+=this.Z,b=!0),0<=this.ja&&this.ja<=Eb(this)&&(this.Z=this.ja=-1,zb(this),Bb(this),b=!0),b&&this.ea(Eb(this)+" cycles: checksum="+p(this.ua)));a=c;for(var g=this.F.length-1;0<=g;g--){var h=this.F[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.la-=c;if(0>=this.la){this.la+=this.Ba;15<=++this.Qa&&(this.w&&this.w.ia(),this.Qa=0);break}}while(this.j.pa)}catch(k){Bb(this);Ab(this);this.w&&this.w.stop(ka(),
Eb(this));Oa(this,!1);c=k.stack||k.message;this.j.error=!0;this.K(c);return}c=setTimeout;d=this.$a;this.R=ka();e=this.Pa;this.qa&&(e=Math.round(e*this.qa/this.Ba));e-=this.R-this.ta;if(f=this.R-this.H)this.P=Math.round(this.M/(10*f))/100,864E5<=f&&(this.G=0,Cb(this));if(0>e||this.P<this.T)-1E3>e&&(this.H-=e),e=0;this.Ha+=this.qa;this.R+=e;c(d,e)}else Ab(this),this.w&&this.w.stop(ka(),Eb(this))};l.Mb=function(){return 0};
function Bb(a){a.j.ab&&(a.j.lb=!0);Ib(a);a.G+=a.M;a.M=0;if(a.j.pa){a.j.pa=!1;a.L&&a.L.stop();var b=a.v.run;b&&(b.textContent="Run")}a.j.complete=void 0}function Ab(a){if(a.w){for(var b=a.w,c=0;c<b.l.length;c++)Jb(b.l[c],void 0);a.w.ia(void 0)}}function Kb(a){vb.call(this,a,1E6);this.Ma=Lb;yb(this);this.j.complete=this.j.Tc=!1;this.Oa=0;this.sa=[];this.Na=0;Mb(this)}w(Kb,vb);function Ob(a,b){a.sa.push(b)}l=Kb.prototype;l.reset=function(){this.j.pa&&Bb(this);Mb(this);yb(this);this.j.error=!1;this.parent.reset.call(this)};
function Mb(a){a.b=0;a.c=0;a.C=0;a.f=0;a.D=0;a.g=0;a.h=0;a.s=0;F(a,a.Na);Pb(a,0);a.A=0}function Qb(a,b){a.Na=b;F(a,b)}l.Hb=function(){var a=this.b+this.c+this.C+this.f+this.D+this.g+this.h|0;return a=a+this.s+this.m+Rb(this)|0};l.save=function(){var a=new G(this);a.set(0,[this.b,this.c,this.C,this.f,this.D,this.g,this.h,this.s,this.m,Rb(this)]);a.set(1,[this.A,this.G,this.I]);a.set(2,db(this.i));return a.data()};
l.restore=function(a){var b=a[0];this.b=b[0];this.c=b[1];this.C=b[2];this.f=b[3];this.D=b[4];this.g=b[5];this.h=b[6];this.s=b[7]&65535;F(this,b[8]);Pb(this,b[9]);b=a[1];this.A=b[0];this.G=b[1];Cb(this,b[3]);a:{b=this.i;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.u){for(var f=0,g=Array(b.u),h=0;h<e.length-1;)for(var k=e[h++],n=e[h++];k--;)g[f++]=n;e=g}f=b.b[d];if(!f||!f.restore(e)){q("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
l.U=function(a,b,c){switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.v[b]=c;this.Oa++;a=!0;break;default:a=this.parent.U.call(this,a,b,c)}return a};function Sb(a){return a.c<<8|a.C}function Tb(a,b){a.c=b>>8&255;a.C=b&255}function Ub(a){return a.f<<8|a.D}function Vb(a,b){a.f=b>>8&255;a.D=b&255}function H(a){return a.g<<8|a.h}
function J(a,b){a.g=b>>8&255;a.h=b&255}function F(a,b){a.m=b&65535}function K(a){return a.l&256?1:0}function L(a,b){a.l=a.l&255|b}function Wb(a){return Sa[a.o&255]?4:0}function Rb(a){return a.B&-214|(a.o&128?128:0)|(a.l&255?0:64)|((a.o^a.u)&16?16:0)|Wb(a)|K(a)}function Pb(a,b){a.l=a.o=a.u=0;b&1&&(a.l|=256);b&4||(a.o|=1);b&16&&(a.u|=16);b&64||(a.l|=255);b&128&&(a.o^=192);a.B=a.B&-726|b&512|2}function M(a,b){a.u=a.b^b;return a.o=(a.l=a.b+b)&255}
function Xb(a,b){a.u=a.b^b;return a.o=(a.l=a.b+b+(a.l&256?1:0))&255}function Yb(a,b){a.l=a.o=a.u=a.b&b;(a.b|b)&8&&(a.u^=16);return a.l}function Zb(a,b){a.u=b^255;b=a.o=b+255&255;a.l=a.l&-256|b;return b}function $b(a,b){a.u=b;b=a.o=b+1&255;a.l=a.l&-256|b;return b}function ac(a,b){return a.o=a.l=a.u=a.b|b}function N(a,b){b^=255;a.u=a.b^b;return a.o=(a.l=a.b+b+1^256)&255}function bc(a,b){b^=255;a.u=a.b^b;return a.o=(a.l=a.b+b+(a.l&256?0:1)^256)&255}function cc(a,b){return a.o=a.l=a.u=a.b^b}l.J=function(a){return this.i.J(a)};
l.ba=function(a,b){this.i.ba(a,b)};function O(a){var b=a.J(a.m);F(a,a.m+1);return b}function P(a){var b=ab(a.i,a.m);F(a,a.m+2);return b}function Q(a){var b=ab(a.i,a.s);a.s=a.s+2&65535;return b}function R(a,b){a.s=a.s-2&65535;cb(a.i,a.s,b)}function dc(a){if(a.a&&a.A&255&&a.B&512){for(var b=0;8>b&&!(a.A&1<<b);b++);a.A&=~(0>b?255:1<<b);a.B&=-513;a.A&=-257;a.Ma[199|b<<3].call(a)}return a.A&256?(Ib(a),!1):!0}function ec(a,b){a.A|=1<<b;a.B&512&&Ib(a)}
function T(a,b,c,d){d=d||2;a.v[b]&&(void 0===c&&(a.j.error=!0,a.K("Value for "+b+" is invalid"),Bb(a)),c=!a.j.pa||a.j.Eb?p(c,d):"--------".substr(0,d),a.v[b].textContent!=c&&(a.v[b].textContent=c))}
l.ia=function(a){this.Oa&&(a||!this.j.pa||this.j.Eb)&&(T(this,"A",this.b),T(this,"B",this.c),T(this,"C",this.C),T(this,"BC",Sb(this),4),T(this,"D",this.f),T(this,"E",this.D),T(this,"DE",Ub(this),4),T(this,"H",this.g),T(this,"L",this.h),T(this,"HL",H(this),4),T(this,"SP",this.s,4),T(this,"PC",this.m,4),a=Rb(this),T(this,"PS",a,4),T(this,"IF",a&512?1:0,1),T(this,"SF",a&128?1:0,1),T(this,"ZF",a&64?1:0,1),T(this,"AF",a&16?1:0,1),T(this,"PF",a&4?1:0,1),T(this,"CF",a&1?1:0,1));if(a=this.v.speed)a.textContent=
this.j.pa&&this.P?this.P.toFixed(2)+"Mhz":"Stopped"};l.Mb=function(a){this.j.complete=!0;this.j.Tc=!1;this.j.Lb=!1;this.V=this.a=a;if(dc(this)){do this.Ma[O(this)].call(this);while(0<this.a)}return this.j.complete?this.V-this.a:void 0===this.j.complete?0:-1};Ca(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Kb(d);Na(d,c)}});function fc(){this.a-=4}function gc(){F(this,P(this));this.a-=10}function hc(){F(this,Q(this));this.a-=10}
function ic(){var a=P(this);R(this,this.m);F(this,a);this.a-=17}
var Lb=[fc,function(){Tb(this,P(this));this.a-=10},function(){this.ba(Sb(this),this.b);this.a-=7},function(){Tb(this,Sb(this)+1);this.a-=5},function(){this.c=$b(this,this.c);this.a-=5},function(){this.c=Zb(this,this.c);this.a-=5},function(){this.c=O(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;L(this,a&256);this.a-=4},fc,function(){var a;J(this,a=H(this)+Sb(this));L(this,a>>8&256);this.a-=10},function(){this.b=this.J(Sb(this));this.a-=7},function(){Tb(this,Sb(this)-1);this.a-=5},
function(){this.C=$b(this,this.C);this.a-=5},function(){this.C=Zb(this,this.C);this.a-=5},function(){this.C=O(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;L(this,a);this.a-=4},fc,function(){Vb(this,P(this));this.a-=10},function(){this.ba(Ub(this),this.b);this.a-=7},function(){Vb(this,Ub(this)+1);this.a-=5},function(){this.f=$b(this,this.f);this.a-=5},function(){this.f=Zb(this,this.f);this.a-=5},function(){this.f=O(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|K(this);
L(this,a&256);this.a-=4},fc,function(){var a;J(this,a=H(this)+Ub(this));L(this,a>>8&256);this.a-=10},function(){this.b=this.J(Ub(this));this.a-=7},function(){Vb(this,Ub(this)-1);this.a-=5},function(){this.D=$b(this,this.D);this.a-=5},function(){this.D=Zb(this,this.D);this.a-=5},function(){this.D=O(this);this.a-=7},function(){var a=this.b<<8;this.b=(K(this)<<8|this.b)>>1;L(this,a&256);this.a-=4},fc,function(){J(this,P(this));this.a-=10},function(){var a=P(this);cb(this.i,a,H(this));this.a-=16},function(){J(this,
H(this)+1);this.a-=5},function(){this.g=$b(this,this.g);this.a-=5},function(){this.g=Zb(this,this.g);this.a-=5},function(){this.g=O(this);this.a-=7},function(){var a=0,b=K(this);if((this.o^this.u)&16||9<(this.b&15))a|=6;if(b||154<=this.b)a|=96,b=1;this.b=M(this,a);L(this,b?256:0);this.a-=4},fc,function(){var a;J(this,a=H(this)+H(this));L(this,a>>8&256);this.a-=10},function(){var a;a=P(this);a=ab(this.i,a);J(this,a);this.a-=16},function(){J(this,H(this)-1);this.a-=5},function(){this.h=$b(this,this.h);
this.a-=5},function(){this.h=Zb(this,this.h);this.a-=5},function(){this.h=O(this);this.a-=7},function(){this.b=~this.b&255;this.a-=4},fc,function(){this.s=P(this)&65535;this.a-=10},function(){this.ba(P(this),this.b);this.a-=13},function(){this.s=this.s+1&65535;this.a-=5},function(){var a=H(this);this.ba(a,$b(this,this.J(a)));this.a-=10},function(){var a=H(this);this.ba(a,Zb(this,this.J(a)));this.a-=10},function(){this.ba(H(this),O(this));this.a-=10},function(){this.l|=256;this.a-=4},fc,function(){var a;
J(this,a=H(this)+this.s);L(this,a>>8&256);this.a-=10},function(){this.b=this.J(P(this));this.a-=13},function(){this.s=this.s-1&65535;this.a-=5},function(){this.b=$b(this,this.b);this.a-=5},function(){this.b=Zb(this,this.b);this.a-=5},function(){this.b=O(this);this.a-=7},function(){L(this,K(this)?0:256);this.a-=4},function(){this.a-=5},function(){this.c=this.C;this.a-=5},function(){this.c=this.f;this.a-=5},function(){this.c=this.D;this.a-=5},function(){this.c=this.g;this.a-=5},function(){this.c=this.h;
this.a-=5},function(){this.c=this.J(H(this));this.a-=7},function(){this.c=this.b;this.a-=5},function(){this.C=this.c;this.a-=5},function(){this.a-=5},function(){this.C=this.f;this.a-=5},function(){this.C=this.D;this.a-=5},function(){this.C=this.g;this.a-=5},function(){this.C=this.h;this.a-=5},function(){this.C=this.J(H(this));this.a-=7},function(){this.C=this.b;this.a-=5},function(){this.f=this.c;this.a-=5},function(){this.f=this.C;this.a-=5},function(){this.a-=5},function(){this.f=this.D;this.a-=
5},function(){this.f=this.g;this.a-=5},function(){this.f=this.h;this.a-=5},function(){this.f=this.J(H(this));this.a-=7},function(){this.f=this.b;this.a-=5},function(){this.D=this.c;this.a-=5},function(){this.D=this.C;this.a-=5},function(){this.D=this.f;this.a-=5},function(){this.a-=5},function(){this.D=this.g;this.a-=5},function(){this.D=this.h;this.a-=5},function(){this.D=this.J(H(this));this.a-=7},function(){this.D=this.b;this.a-=5},function(){this.g=this.c;this.a-=5},function(){this.g=this.C;this.a-=
5},function(){this.g=this.f;this.a-=5},function(){this.g=this.D;this.a-=5},function(){this.a-=5},function(){this.g=this.h;this.a-=5},function(){this.g=this.J(H(this));this.a-=7},function(){this.g=this.b;this.a-=5},function(){this.h=this.c;this.a-=5},function(){this.h=this.C;this.a-=5},function(){this.h=this.f;this.a-=5},function(){this.h=this.D;this.a-=5},function(){this.h=this.g;this.a-=5},function(){this.a-=5},function(){this.h=this.J(H(this));this.a-=7},function(){this.h=this.b;this.a-=5},function(){this.ba(H(this),
this.c);this.a-=7},function(){this.ba(H(this),this.C);this.a-=7},function(){this.ba(H(this),this.f);this.a-=7},function(){this.ba(H(this),this.D);this.a-=7},function(){this.ba(H(this),this.g);this.a-=7},function(){this.ba(H(this),this.h);this.a-=7},function(){var a=this.m-1;if(this.sa.length)for(var b=0;b<this.sa.length;b++)if(this.sa[b](a))return;this.a-=7;this.A|=256;Ib(this);this.B&512||Bb(this)},function(){this.ba(H(this),this.b);this.a-=7},function(){this.b=this.c;this.a-=5},function(){this.b=
this.C;this.a-=5},function(){this.b=this.f;this.a-=5},function(){this.b=this.D;this.a-=5},function(){this.b=this.g;this.a-=5},function(){this.b=this.h;this.a-=5},function(){this.b=this.J(H(this));this.a-=7},function(){this.a-=5},function(){this.b=M(this,this.c);this.a-=4},function(){this.b=M(this,this.C);this.a-=4},function(){this.b=M(this,this.f);this.a-=4},function(){this.b=M(this,this.D);this.a-=4},function(){this.b=M(this,this.g);this.a-=4},function(){this.b=M(this,this.h);this.a-=4},function(){this.b=
M(this,this.J(H(this)));this.a-=7},function(){this.b=M(this,this.b);this.a-=4},function(){this.b=Xb(this,this.c);this.a-=4},function(){this.b=Xb(this,this.C);this.a-=4},function(){this.b=Xb(this,this.f);this.a-=4},function(){this.b=Xb(this,this.D);this.a-=4},function(){this.b=Xb(this,this.g);this.a-=4},function(){this.b=Xb(this,this.h);this.a-=4},function(){this.b=Xb(this,this.J(H(this)));this.a-=7},function(){this.b=Xb(this,this.b);this.a-=4},function(){this.b=N(this,this.c);this.a-=4},function(){this.b=
N(this,this.C);this.a-=4},function(){this.b=N(this,this.f);this.a-=4},function(){this.b=N(this,this.D);this.a-=4},function(){this.b=N(this,this.g);this.a-=4},function(){this.b=N(this,this.h);this.a-=4},function(){this.b=N(this,this.J(H(this)));this.a-=7},function(){this.b=N(this,this.b);this.a-=4},function(){this.b=bc(this,this.c);this.a-=4},function(){this.b=bc(this,this.C);this.a-=4},function(){this.b=bc(this,this.f);this.a-=4},function(){this.b=bc(this,this.D);this.a-=4},function(){this.b=bc(this,
this.g);this.a-=4},function(){this.b=bc(this,this.h);this.a-=4},function(){this.b=bc(this,this.J(H(this)));this.a-=7},function(){this.b=bc(this,this.b);this.a-=4},function(){this.b=Yb(this,this.c);this.a-=4},function(){this.b=Yb(this,this.C);this.a-=4},function(){this.b=Yb(this,this.f);this.a-=4},function(){this.b=Yb(this,this.D);this.a-=4},function(){this.b=Yb(this,this.g);this.a-=4},function(){this.b=Yb(this,this.h);this.a-=4},function(){this.b=Yb(this,this.J(H(this)));this.a-=7},function(){this.b=
Yb(this,this.b);this.a-=4},function(){this.b=cc(this,this.c);this.a-=4},function(){this.b=cc(this,this.C);this.a-=4},function(){this.b=cc(this,this.f);this.a-=4},function(){this.b=cc(this,this.D);this.a-=4},function(){this.b=cc(this,this.g);this.a-=4},function(){this.b=cc(this,this.h);this.a-=4},function(){this.b=cc(this,this.J(H(this)));this.a-=7},function(){this.b=cc(this,this.b);this.a-=4},function(){this.b=ac(this,this.c);this.a-=4},function(){this.b=ac(this,this.C);this.a-=4},function(){this.b=
ac(this,this.f);this.a-=4},function(){this.b=ac(this,this.D);this.a-=4},function(){this.b=ac(this,this.g);this.a-=4},function(){this.b=ac(this,this.h);this.a-=4},function(){this.b=ac(this,this.J(H(this)));this.a-=7},function(){this.b=ac(this,this.b);this.a-=4},function(){N(this,this.c);this.a-=4},function(){N(this,this.C);this.a-=4},function(){N(this,this.f);this.a-=4},function(){N(this,this.D);this.a-=4},function(){N(this,this.g);this.a-=4},function(){N(this,this.h);this.a-=4},function(){N(this,
this.J(H(this)));this.a-=7},function(){N(this,this.b);this.a-=4},function(){this.l&255&&(F(this,Q(this)),this.a-=6);this.a-=5},function(){Tb(this,Q(this));this.a-=10},function(){var a=P(this);this.l&255&&F(this,a);this.a-=10},gc,function(){var a=P(this);this.l&255&&(R(this,this.m),F(this,a),this.a-=6);this.a-=11},function(){R(this,Sb(this));this.a-=11},function(){this.b=M(this,O(this));this.a-=7},function(){R(this,this.m);F(this,0);this.a-=11},function(){this.l&255||(F(this,Q(this)),this.a-=6);this.a-=
5},hc,function(){var a=P(this);this.l&255||F(this,a);this.a-=10},gc,function(){var a=P(this);this.l&255||(R(this,this.m),F(this,a),this.a-=6);this.a-=11},ic,function(){this.b=Xb(this,O(this));this.a-=7},function(){R(this,this.m);F(this,8);this.a-=11},function(){K(this)||(F(this,Q(this)),this.a-=6);this.a-=5},function(){Vb(this,Q(this));this.a-=10},function(){var a=P(this);K(this)||F(this,a);this.a-=10},function(){for(var a=O(this),b=this.i,c=this.b,d=this.m+-2&65535,e=1,f=0;0<e;){var g=b.w[a],h=b.B[a]||
1,k=1==h?255:2==h?65535:-1,k=(c>>>=f)&k;if(void 0!==g&&g[0])g[0](a,k,d);f+=h<<3;a+=h;e-=h}this.a-=10},function(){var a=P(this);K(this)||(R(this,this.m),F(this,a),this.a-=6);this.a-=11},function(){R(this,Ub(this));this.a-=11},function(){this.b=N(this,O(this));this.a-=7},function(){R(this,this.m);F(this,16);this.a-=11},function(){K(this)&&(F(this,Q(this)),this.a-=6);this.a-=5},hc,function(){var a=P(this);K(this)&&F(this,a);this.a-=10},function(){for(var a=O(this),b=this.i,c=this.m+-2&65535,d=1,e=0,
f=0;0<d;){var g=b.l[a],h=b.A[a]||1,k=1==h?255:2==h?65535:-1,n=k;void 0!==g&&g[0]&&(n=g[0](a,c),void 0===n?n=k:n&=k);e|=n<<f;f+=h<<3;a+=h;d-=h}this.b=e&255;this.a-=10},function(){var a=P(this);K(this)&&(R(this,this.m),F(this,a),this.a-=6);this.a-=11},ic,function(){this.b=bc(this,O(this));this.a-=7},function(){R(this,this.m);F(this,24);this.a-=11},function(){Wb(this)||(F(this,Q(this)),this.a-=6);this.a-=5},function(){J(this,Q(this));this.a-=10},function(){var a=P(this);Wb(this)||F(this,a);this.a-=10},
function(){var a=Q(this);R(this,H(this));J(this,a);this.a-=18},function(){var a=P(this);Wb(this)||(R(this,this.m),F(this,a),this.a-=6);this.a-=11},function(){R(this,H(this));this.a-=11},function(){this.b=Yb(this,O(this));this.a-=7},function(){R(this,this.m);F(this,32);this.a-=11},function(){Wb(this)&&(F(this,Q(this)),this.a-=6);this.a-=5},function(){F(this,H(this));this.a-=5},function(){var a=P(this);Wb(this)&&F(this,a);this.a-=10},function(){var a=H(this);J(this,Ub(this));Vb(this,a);this.a-=5},function(){var a=
P(this);Wb(this)&&(R(this,this.m),F(this,a),this.a-=6);this.a-=11},ic,function(){this.b=cc(this,O(this));this.a-=7},function(){R(this,this.m);F(this,40);this.a-=11},function(){this.o&128||(F(this,Q(this)),this.a-=6);this.a-=5},function(){var a=Q(this);Pb(this,a&255|this.B&-256);this.b=a>>8;this.a-=10},function(){var a=P(this);this.o&128||F(this,a);this.a-=10},function(){this.B&=-513;this.a-=4},function(){var a=P(this);this.o&128||(R(this,this.m),F(this,a),this.a-=6);this.a-=11},function(){R(this,
Rb(this)&255|this.b<<8);this.a-=11},function(){this.b=ac(this,O(this));this.a-=7},function(){R(this,this.m);F(this,48);this.a-=11},function(){this.o&128&&(F(this,Q(this)),this.a-=6);this.a-=5},function(){this.s=H(this)&65535;this.a-=5},function(){var a=P(this);this.o&128&&F(this,a);this.a-=10},function(){this.B|=512;this.a-=4;dc(this)},function(){var a=P(this);this.o&128&&(R(this,this.m),F(this,a),this.a-=6);this.a-=11},ic,function(){N(this,O(this));this.a-=7},function(){R(this,this.m);F(this,56);
this.a-=11}];function U(a){r.call(this,"ChipSet",a,U);var b=a.model;b&&!jc[b]&&Ea("Unrecognized ChipSet model: "+b);this.c=jc[b]||{};a.sound&&(this.I=null,window&&(this.I=window.AudioContext||window.webkitAudioContext),this.I&&new this.I);B(this)}w(U);
var V={ca:1978.1,Fc:{da:0,Zd:1,ce:16,je:32,se:64,re:128,Ka:14},Ca:{da:1,Vb:1,yc:2,uc:4,vc:16,wc:32,xc:64,Ka:8},Gc:{da:2,Yd:3,Be:4,$d:8,ne:16,oe:32,pe:64,ae:128,Ka:0},we:{da:3},ue:{da:2,ke:7},ye:{da:3,Ce:1,xe:2,qe:4,he:8,be:16,td:32},ve:{da:4},ze:{da:5,de:1,ee:2,fe:4,ge:8,De:16}},X={ca:100,ka:{da:66,Bb:1,qc:2,rc:4,me:8,le:16,yb:32,xb:64,tb:128},Tb:{da:66,INIT:0},Aa:{da:194,wd:0,rb:16,Ac:32,zb:48,cc:0,dc:32},Xa:{da:162,te:0,fc:0,bc:0,ec:0,ac:0},na:{ie:{da:98},Fa:{Qb:0,Pb:1,Dc:2,Lc:4,Wb:5,Bc:6,Ae:7},
Za:16383}},jc={SI1978:V,VT100:X};U.prototype.U=function(){return!1};U.prototype.ra=function(a,b,c,d){this.i=b;this.a=c;this.N=d;this.w=a;this.l=C(a,"Keyboard");this.h=C(a,"SerialPort");this.video=C(a,"Video");eb(b,this,this.c.fb);fb(b,this,this.c.gb)};U.prototype.fa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};U.prototype.ha=function(a){return a?this.save():!0};V.INIT=[[V.Fc.Ka,V.Ca.Ka,V.Gc.Ka,0,0,0,0]];
X.INIT=[[X.Tb.INIT,X.ka.qc|X.ka.rc],[X.Aa.cc,X.Aa.dc],[X.Xa.fc,X.Xa.bc,X.Xa.ec,X.Xa.ac],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];l=U.prototype;l.reset=function(){this.c.INIT&&!this.restore(this.c.INIT)&&this.K("reset error")};
l.save=function(){var a=new G(this);switch(this.c.ca){case V.ca:a.set(0,[this.W,this.g,this.Z,this.F,this.H,this.T,this.V]);break;case X.ca:a.set(0,[this.M,this.u]),a.set(1,[this.o,this.s]),a.set(2,[this.f,this.G,this.R,this.P]),a.set(3,[this.B,this.b,this.A,this.L,this.m])}return a.data()};
l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.c.ca){case V.ca:return this.W=b[0],this.g=b[1],this.Z=b[2],this.F=b[3],this.H=b[4],this.T=b[5],this.V=b[6],!0;case X.ca:return this.M=b[0],this.u=b[1],b=a[1],this.o=b[0],this.s=b[1],b=a[2],this.f=b[0],this.G=b[1],this.R=b[2],this.P=b[3],b=a[3],this.B=b[0],this.b=b[1],this.A=b[2],this.L=b[3],this.m=b[4],!0}return!1};l.start=function(){};l.stop=function(){};l.Yc=function(){return this.W};l.Zc=function(){return this.g};l.$c=function(){return this.Z};
l.Xc=function(){return this.F>>8-this.H&255};l.fd=function(a,b){this.H=b};l.hd=function(a,b){this.T=b};l.gd=function(a,b){this.F=b<<8|this.F>>8};l.jd=function(a,b){this.V=b};l.kd=function(){};function kc(a){var b=0,c=0,d=~a.B;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
l.ad=function(){var a=this.u,a=a&~X.ka.xb;if((Eb(this.a)&64)<<1&&(a|=X.ka.xb,a!=this.u)){var b,c;b=this.A&1;switch(this.A>>1&7){case X.na.Fa.Pb:this.B=this.B<<1|b;break;case X.na.Fa.Wb:b=kc(this);this.m[b]=X.na.Za;break;case X.na.Fa.Qb:this.b=this.b<<1|b;break;case X.na.Fa.Lc:b=kc(this);c=this.b&X.na.Za;this.m[b]=c;break;case X.na.Fa.Bc:b=kc(this);c=this.m[b];null==c&&(c=X.na.Za);this.b=c;break;case X.na.Fa.Dc:this.b<<=1,this.L=this.b&X.na.Za+1}}a&=~X.ka.yb;this.L&&(a|=X.ka.yb);a&=~X.ka.tb;if(b=this.l){b=
this.l;if(c=b.g)c=b.a,c=Eb(b.a)>=b.o+c.ma*c.I/1E3*1.2731488;c&&(b.g=!1);b=!b.g}b&&(a|=X.ka.tb);a&=~X.ka.Bb;this.h&&this.h.X&1&&(a|=X.ka.Bb);return this.u=a};l.ld=function(a,b){this.M=b};l.od=function(a,b){this.A=b};l.nd=function(a,b){a=b&3;switch(b>>2&3){case 0:this.f=this.f&-4|a;break;case 1:this.f=this.f&-13|a<<2;this.video&&(b=this.video,a=this.f,b.qa!==a&&((b.qa=a)?Jb(b,!0):b.ta=!0));break;case 2:switch(a){case 0:this.G=~this.G;break;case 2:case 3:this.R=3-a}break;case 3:this.P=a}};
l.md=function(a,b){b&X.Aa.Ac?(b&=X.Aa.zb,this.s!=b&&(this.s=b,this.video&&(this.video.Jb=this.s==X.Aa.zb?50:60))):(b&=X.Aa.rb,this.o!=b&&(this.o=b,this.video&&(a=this.video,b=this.o==X.Aa.rb?132:80,a.G=b,a.S=a.Ba,80<b&&a.S--,lc(a)&&mc(a))))};V.fb={0:U.prototype.Yc,1:U.prototype.Zc,2:U.prototype.$c,3:U.prototype.Xc};V.gb={2:U.prototype.fd,3:U.prototype.hd,4:U.prototype.gd,5:U.prototype.jd,6:U.prototype.kd};X.fb={66:U.prototype.ad};X.gb={66:U.prototype.ld,98:U.prototype.od,162:U.prototype.nd,194:U.prototype.md};
Ca(function(){for(var a=A(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new U(d);Na(d,c)}});function nc(a){r.call(this,"ROM",a,nc);this.b=null;this.h=a.addr;this.c=a.size;this.g=a.alias;this.f=a.file;this.l=ca(this.f);if(this.f){a=this.f;var b=da(this.l);"json"!=b&&"hex"!=b&&(a=fa()+"/api/v1/dump?file="+this.f+"&format=bytes&decimal=true");var c=this;ma(a,null,!0,function(a,b,f){oc(c,a,b,f)})}}w(nc);nc.prototype.ra=function(a,b,c,d){this.i=b;this.a=c;this.N=d;pc(this)};
nc.prototype.fa=function(){this.wa&&(this.N&&this.N.a(this.id,this.h,this.c,this.wa),delete this.wa);return!0};nc.prototype.ha=function(){return!0};
function oc(a,b,c,d){if(d)a.K("Unable to load system ROM (error "+d+": "+b+")");else{Ja(a.za,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.b=f;else if(g)for(a.b=Array(4*g.length),d=c=0;c<g.length;c++)a.b[d++]=g[c]&255,a.b[d++]=g[c]>>8&255,a.b[d++]=g[c]>>16&255,a.b[d++]=g[c]>>24&255;else a.b=e;a.wa=e.symbols;if(!a.b.length){q("Empty ROM: "+b);return}if(1==a.b.length){q(a.b[0]);return}}catch(h){a.K("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.b=Array(b.length),e=0;e<b.length;e++)a.b[e]=aa(b[e]);pc(a)}}
function pc(a){if(!Pa(a))if(!a.f)B(a);else if(a.b&&a.i){a.c||(a.c=a.b.length);if(a.b.length!=a.c){var b="ROM size ("+p(a.b.length,8,!0)+") does not match specified size ("+p(a.c,8,!0)+")";a.j.error=!0;a.K(b)}else{b=a.h;if(Xa(a.i,b,a.c,mb)){var c;for(c=0;c<a.b.length;c++)bb(a.i,b+c,a.b[c]);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 d=a,e=b[c],f=d.i,g=d.c,h=[],k=d.h>>>f.i;0<g&&k<f.b.length;)h.push(f.b[k++]),g-=f.c;f=d.i;
d=d.c;g=0;for(e>>>=f.i;0<d&&e<f.b.length;){k=h[g++];if(!k)break;f.b[e++]=k;d-=f.c}}delete a.b}}B(a)}}Ca(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new nc(d);Na(d,c)}});
function qc(a){r.call(this,"RAM",a,qc);this.wa=this.c=null;this.g=a.addr;this.h=a.size;this.Da=a.load;this.xa=a.exec;this.f=!1;this.b=a.file;this.l=ca(this.b);if(this.b){a=this.b;var b=da(this.l);"json"!=b&&"hex"!=b&&(a=fa()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;ma(a,null,!0,function(a,b,f){f?c.K("Unable to load RAM resource (error "+f+": "+a+")"):(Ja(c.za,a,b),(a=na(a,b))?(c.c=a.aa,c.wa=a.wa,null==c.Da&&(c.Da=a.Da),null==c.xa&&(c.xa=a.xa)):c.b=null,rc(c))})}}w(qc);
var sc=[0,5];qc.prototype.ra=function(a,b,c,d){this.i=b;this.a=c;this.N=d;rc(this)};qc.prototype.fa=function(){return!0};qc.prototype.ha=function(){return!0};
function rc(a){!a.f&&a.h&&Xa(a.i,a.g,a.h,1)&&(a.f=!0);if(!Pa(a)){if(!a.f)q("No RAM allocated");else if(a.b){if(!a.c||!a.i)return;var b=a.g;null!==a.Da&&(b=a.Da);for(var c=0;c<a.c.length;c++)bb(a.i,b+c,a.c[c]);if(null!==a.xa){if(256==a.xa){for(c=0;c<sc.length;c++)bb(a.i,sc[c],118);Ob(a.a,function(a){return function(b){if(0<=sc.indexOf(b)){var c=!1,d=a.a,e=a.N;if(5==b)switch(c=!0,d.C){case 2:tc(a,String.fromCharCode(d.D));break;case 9:for(var k=Ub(d),n="",v=255;v--;){var z=a.a.J(k++);if(36==z)break;
n+=String.fromCharCode(z)}tc(a,n);break;default:c=!1}c?hc.call(d):e&&(a.ea("\nCP/M vector "+p(b,4,!0)),F(d,b),Bb(e));b=!0}else b=!1;return b}}(a))}Qb(a.a,a.xa)}delete a.c}B(a)}}qc.prototype.reset=function(){};function tc(a,b){b=b.replace(/\r/g,"");a.ya&&(a.ya.value+=b,a.ya.scrollTop=a.ya.scrollHeight)}Ca(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new qc(d);Na(d,c)}});
function uc(a){r.call(this,"Keyboard",a,uc);(a=a.model)&&!vc[a]&&Ea("Unrecognized Keyboard8080 model: "+a);this.b=vc[a]||{};this.reset();B(this)}w(uc);var wc={};wc[m.Wa]=37;wc[m.sb]=39;wc[m.ub]=32;
var xc={ca:1978.1,jb:{},qb:wc,La:{},Ia:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},Y={},Z={ca:100,jb:(Y[8]=3,Y[m.tc]=5,Y[m.sc]=6,Y[m.Nc]=7,Y[m.Hc]=8,Y[m.Kc]=9,Y[m.Q]=10,Y[39]=16,Y[221]=20,Y[219]=21,Y[m.$b]=22,Y[m.Ic]=23,Y[m.zc]=24,Y[m.E]=25,Y[49]=26,Y[37]=32,Y[40]=34,Y[117]=35,Y[19]=35,Y[192]=36,Y[189]=37,Y[57]=38,Y[55]=39,Y[52]=40,Y[51]=41,Y[27]=42,Y[38]=48,Y[114]=49,Y[112]=50,Y[46]=51,Y[187]=52,Y[48]=53,Y[56]=54,Y[54]=55,Y[53]=56,Y[50]=57,Y[9]=58,Y[103]=64,Y[115]=65,Y[113]=66,Y[96]=67,Y[118]=
68,Y[220]=69,Y[m.ub]=70,Y[m.hc]=71,Y[m.Yb]=72,Y[m.Xb]=73,Y[m.Wa]=74,Y[104]=80,Y[2013]=81,Y[98]=82,Y[97]=83,Y[222]=85,Y[186]=86,Y[m.gc]=87,Y[m.Zb]=88,Y[m.sb]=89,Y[m.Cc]=90,Y[110]=96,Y[116]=97,Y[101]=98,Y[100]=99,Y[13]=100,Y[190]=101,Y[188]=102,Y[m.pc]=103,Y[m.Sb]=104,Y[m.Mc]=105,Y[119]=106,Y[105]=112,Y[99]=113,Y[102]=114,Y[109]=115,Y[191]=117,Y[m.oc]=118,Y[m[" "]]=119,Y[m.Jc]=120,Y[m.Ub]=121,Y[m.kb]=122,Y[120]=123,Y[17]=124,Y[16]=125,Y[20]=126,Y),qb:{},La:{},Ia:{"num-comma":116,"break":117,"line-feed":118,
"no-scroll":119,setup:120},Rb:{da:130,INIT:127},ga:{da:130,mc:1,lc:2,kc:4,jc:8,nc:16,wb:32,vb:63,Ec:64,vd:128,INIT:0},ic:127};Z.La={l4:Z.ga.mc,l3:Z.ga.lc,l2:Z.ga.kc,l1:Z.ga.jc,locked:Z.ga.nc,local:Z.ga.wb,online:~Z.ga.wb,"caps-lock":512};var vc={SI1978:xc,VT100:Z};
uc.prototype.U=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.v[e]){if("led"==a&&this.b.La[b])return this.v[e]=c,!0;switch(b){case "kbd":case "screen":return c.onkeydown=function(a){return yc(d,a,!0)},c.onkeyup=function(a){return yc(d,a,!1)},c.onkeypress=function(a){a=a.keyCode;a>=m.Wa&&a<=m.kb?d.c&515||(d.c|=512,Ac(d,20,!0),Bc(d)):a>=m.Pc&&a<=m.z&&d.c&512&&(d.c&=-513,Ac(d,20,!1),Bc(d));return!0},c.onpaste=function(a){a:{if(d.h&&d.h.Ea&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&
a.preventDefault(),a=a.clipboardData||window.clipboardData)){Cc(d.h,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.b.Ia&&void 0!==this.b.Ia[b])return this.v[e]=c,c.onclick=function(a,b){return function(c){c.preventDefault&&c.preventDefault();Ac(a,b,!0,!0)}}(this,this.b.Ia[b]),!0}}return!1};uc.prototype.ra=function(a,b,c,d){this.w=a;this.a=c;this.N=d;var e=this;this.u=Gb(this.a,function(){Dc(e)});this.L=C(a,"ChipSet");this.h=C(a,"SerialPort");eb(b,this,this.b.fb);fb(b,this,this.b.gb)};
uc.prototype.fa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};uc.prototype.ha=function(a){return a?this.save():!0};Z.INIT=[[Z.ga.INIT,Z.Rb.INIT,!1,0,-1]];l=uc.prototype;l.reset=function(){this.i=[];this.c=0;this.b.INIT&&!this.restore(this.b.INIT)&&this.K("reset error")};l.save=function(){var a=new G(this);switch(this.b.ca){case Z.ca:a.set(0,[this.m,this.l,this.g,this.o,-1])}return a.data()};
l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.ca){case xc.ca:return!0;case Z.ca:return this.m=b[0],Bc(this,this.m&Z.ga.vb),this.l=b[1],this.g=b[2],this.o=b[3],this.f=b[4],!0}return!1};function Bc(a,b){var c;null!=b?a.s=b:b=a.s;for(var d in a.b.La)if(c="led-"+d,c=a.v[c]){var e=a.b.La[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+p(16711680,6):"#000000"}if(c=a.v["led-caps-lock"])c.style.backgroundColor=a.c&512?"#"+p(65280,6):"#000000"}
function yc(a,b,c){var d=!0,e=b.keyCode,f=2==b.location,g=0;switch(e){case 16:g=f?1:2;break;case 17:g=f?4:8;break;case 18:g=f?16:32;break;case 91:g=f?64:128;break;case 20:g=512}g&&(a.c=c?a.c|g:a.c&~g);var h;a:if(e=a.b.qb[e]||e,a.b.jb[e])h=e;else{for(h in a.b.Ia)if(a.b.Ia[h]===e)break a;h=null}h&&!b.metaKey&&(d=!1,a.c&4144&&(13==h?(h=118,d=!0):8==h&&(h=46,d=!0),d&&(a.c=c?a.c|4096:a.c&-4097)),d=Ac(a,h,c),(!(h>=m.Wa&&h<=m.kb)||a.c|12)&&b.preventDefault&&b.preventDefault());return d}
function Ac(a,b,c,d){var e;a:{for(e=0;e<a.i.length;e++)if(a.i[e].pb==b)break a;e=-1}if(c)0>e?a.i.push({pb:b,mb:Date.now(),cb:d||!1}):(a.i[e].mb=Date.now(),a.i[e].cb=d||!1),d&&Dc(a);else if(0<=e){if(!a.i[e].cb&&(d=a.i[e].mb)&&50>Date.now()-d)return a.i[e].cb=!0,Dc(a),!0;a.i.splice(e,1)}if(a.L){d=0;switch(b){case "1p":d=V.Ca.uc;break;case "2p":d=V.Ca.yc;break;case "coin":d=V.Ca.Vb;break;case "left":d=V.Ca.wc;break;case "right":d=V.Ca.xc;break;case "fire":d=V.Ca.vc}d&&(a=a.L,b=d,a.g&=~b,c&&(a.g|=b))}return!0}
function Dc(a){for(var b=0,c=-1;b<a.i.length;){if(a.i[b].cb){var d=a.i[b].pb,e=50-(Date.now()-a.i[b].mb);if(0<e){if(0>c||c>e)c=e}else{Ac(a,d,!1);b=0;continue}}b++}0<=c&&Hb(a.a,a.u,c)}l.bd=function(){var a=this.l;0<=this.f&&(this.f<this.i.length?(a=this.i[this.f],this.f++,a=Z.jb[a.pb],a&128&&(a&=127)):(this.f=-1,a=Z.ic),this.l=a,ec(this.a,1));return a};l.pd=function(a,b){this.m=b;this.g=!0;this.o=Eb(this.a);Bc(this,b&Z.ga.vb);b&Z.ga.Ec&&(this.f=0,ec(this.a,1))};Z.fb={130:uc.prototype.bd};Z.gb={130:uc.prototype.pd};
Ca(function(){for(var a=A(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new uc(d);Na(d,c)}});
function Ec(a,b,c,d,e){var f=this;this.Na=ua("Gecko/");var g=["","moz","ms","webkit"];r.call(this,"Video",a,Ec);this.B=a.screenWidth;this.u=a.screenHeight;this.ja=a.bufferAddr;this.Qc=a.bufferRAM;var h=a.bufferFormat;this.T=h&&Fc[h.toUpperCase()]||Gc;this.G=a.bufferCols;this.V=a.bufferRows;this.Ba=this.S=a.cellWidth||1;this.O=a.cellHeight||1;this.W=null;this.Ma=!1;this.la=a.bufferBits||1;this.Rc=a.bufferLeft||0;if(this.c=a.bufferRotate)this.c=this.c%360,0<this.c&&(this.c-=360),-90!=this.c&&(this.K("unsupported buffer rotation: "+
this.c),this.c=0);this.ma=a.interruptRate;this.Cb=a.refreshRate||60;this.s=b;this.f=c;this.P=(this.Uc=d)||b||null;this.Oc=this.B;this.Ob=this.u;this.Ga=this.B/this.G|0;this.Ha=this.u/this.V|0;1<this.O&&(this.V++,this.qa=0,this.ta=!1);b=a.smoothing;(c=va("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.f[d]){this.f[d]=b;break}if(this.g=a.screenRotate)this.g=this.g%360,0<this.g&&(this.g-=360),-90!=this.g?(this.K("unsupported screen rotation: "+
this.g),this.g=0):(this.f.translate(0,this.u),this.f.rotate(this.g*Math.PI/180),this.f.scale(this.u/this.B,this.B/this.u));if(this.b=e)if(this.b.Ja=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.Ja){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){Hc(f,!!(document.fullscreenElement||document.msFullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement))},!1);
break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){Hc(f,null)},!1);break}}if(this.L=a.fontROM)"json"!=da(this.L)&&(this.L=fa()+"/api/v1/dump?file="+this.L+"&format=bytes"),ma(this.L,null,!0,function(a,b,c){Ic(f,a,b,c)});this.va={}}w(Ec);var Gc=0,Fc={SI1978:1,VT100:2};
function lc(a){a.m=a.G*a.S;a.F=a.V*a.O;var b=a.m,c=a.F;a.c&&(b=a.F,c=a.m);a.A=0;if(!a.Qc&&(a.A=(a.m*a.la>>3)*a.F,!Xa(a.i,a.ja,a.A,3)))return!1;a.A?(a.Oa=a.f.createImageData(b,c),a.Qa=16/a.la|0,Jc(a,a.A>>1)):Jc(a,(a.G+1)*a.V);a.o=document.createElement("canvas");a.o.width=b;a.o.height=c;a.sa=a.o.getContext("2d");a.H={};a.R=1<<a.la;a.I=Array(a.R+2);a.I[0]=[0,0,0,255];a.I[1]=[255,255,255,255];1==a.T&&(a.I[a.R+0]=[255,255,0,255],a.I[a.R+1]=[0,255,0,255]);2==a.T&&(a.Jb=60,a.ua=!1,a.Z=Array(a.G));return!0}
Ec.prototype.ra=function(a,b,c,d){this.w=a;this.i=b;this.a=c;this.N=d;lc(this);if(this.l=C(a,"Keyboard")){for(var e in this.va)this.l.U("led",e,this.va[e]);this.s&&this.l.U(this.Uc?"textarea":"canvas","screen",this.P)}var f=this;this.Db=Gb(this.a,function(){Jb(f)});Hb(this.a,this.Db,1E3/Math.max(this.Cb,this.ma));this.$a=0;this.L||B(this)};
function Ic(a,b,c,d){if(d)a.K("Unable to load font ROM (error "+d+": "+b+")");else{Ja(a.za,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){q("Empty font ROM: "+b);return}if(1==f.length){q(f[0]);return}if(2048==f.length)a.W=f,mc(a);else{a.K("Unrecognized font data length ("+f.length+")");return}}catch(g){a.K("Font ROM data error: "+g.message);return}(a.f||a.N)&&B(a)}}
function mc(a){a.W&&(a.Ma=2==a.T,a.H[96]=[Kc(a,a.S,a.O),Kc(a,a.S,a.O,a.ua)],a.H[64]=[Kc(a,2*a.S,a.O),Kc(a,2*a.S,a.O,a.ua)],a.H[32]=a.H[0]=[Kc(a,2*a.S,2*a.O),Kc(a,2*a.S,2*a.O,a.ua)])}
function Kc(a,b,c,d){var e=8>=a.Ba?8:16,f=8<e?15:0,g=a.W.length/e,h=!1===d,k={S:b,O:c};k.canvas=document.createElement("canvas");k.canvas.width=16*b;k.canvas.height=g/16*c;k.context=k.canvas.getContext("2d");for(var n=k.context.createImageData(b,c),v=0;v<g;v++){for(var z=0,I=z;z<a.O;z++)for(var x=v*e+(f+z&e-1),x=d&&8==z?255:a.W[x],t=0;t<c/a.O;t++){for(var E=0,S=0,W=S;S<a.S;S++){for(var ba=x&128>>(7<S?7:S),E=a.Ma&&!ba&&E?E:ba,ta=0;ta<b/a.S;ta++)h&&(E=!E),Lc(a,n,W,I,E?1:0),W++;E=ba}I++}k.context.putImageData(n,
(v&15)*b,(v>>4)*c)}return k}Ec.prototype.fa=function(){return!0};Ec.prototype.U=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.va[b]=c,!0;switch(b){case "fullScreen":return this.v[b]=c,this.b&&this.b.Ja?c.onclick=function(){d.Ja()}:c.parentNode.removeChild(c),!0}return!1};
Ec.prototype.Ja=function(){var a=!1;if(this.b){if(this.b.Ja){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.B/this.u;b>c&&(a=Math.round(c/b*100)+"%")}this.Na?(this.s.style.width=a,this.s.style.width=a,this.s.style.display="block",this.s.style.margin="auto"):(this.b.style.width=a,this.b.style.height="auto");this.b.style.backgroundColor="black";this.b.Ja();a=!0}this.P&&this.P.focus()}return a};
function Hc(a,b){!b&&a.b&&(a.Na?a.s.style.width=a.s.style.height="":a.b.style.width=a.b.style.height="")}function Jc(a,b){a.Pa=b;a.M=!1;if(void 0===a.h||a.h.length!=a.Pa)a.h=Array(a.Pa)}function Lc(a,b,c,d,e){d=a.c?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.T&&(208<=c&&236>c?e=a.R+0:28<=c&&72>c&&(e=a.R+1));a=a.I[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function Jb(a,b){var c=!0;if(!b){a.ma&&(120==a.ma?a.$a&1?(ec(a.a,2),c=!1):ec(a.a,1):ec(a.a,4));if(c&&a.M&&a.A){for(var d=a.i,e=a.A,f=!0,g=a.ja>>>d.i;0<e&&g<d.b.length;)d.b[g].oa&&(d.b[g].oa=f=!1,d.b[g].Gb=!0),e-=d.c,g++;f&&(c=!1)}Hb(a.a,a.Db,1E3/Math.max(a.Cb,a.ma));a.$a++}if(c)if(1<a.S)switch(a.T){case 2:for(var c=a.ja,d=-1,e=0,f=60==a.Jb?2:5,h=g=0,k=-1;e<a.V;){var n=0,v=c,z=d,I=a.G;for(96!=z&&(I>>=1);;){var x=$a(a.i,v++);if(127==(x&127)){var t=$a(a.i,v++),d=t&96,c=(t&15)<<8|$a(a.i,v),c=c+(t&16?
8192:16384);break}if(n<I)a.Z[n++]=x;else break}if(f)f--;else{for(;n<a.Z.length;)a.Z[n++]=0;if(0<=z)for(v=a.M&&a.h[g]==I,a.h[g++]=I,I=0;I<n;I++){x=a.Z[I];if(!v||x!==a.h[g]){a.h[k=g]=x;var t=a,E=a.sa,S=x&127;if(x=t.H[z][x&128?1:0]){var W=(S&15)*x.S,S=(S>>4)*x.O,ba,ta,Ra,ib,zc=x.S,Nb=x.O;E?(ba=I*t.S,ta=e*t.O,Ra=t.S,ib=t.O):(ba=I*t.Ga,ta=e*t.Ha,Ra=t.Ga,ib=t.Ha);x.S>t.S&&(ba*=2,Ra*=2);x.O>t.O&&(z||(S+=t.O),Nb=t.O);E?E.drawImage(x.canvas,W,S,zc,Nb,ba,ta,Ra,ib):(ba+=0,ta+=0,t.f.drawImage(x.canvas,W,S,zc,
Nb,ba,ta,Ra,ib))}h++}g++}e++}}a.M=!0;!b&&a.ta&&1==h&&(a.h[k]=-1,h=0);a.ta=!1;(h||b)&&a.sa&&a.f.drawImage(a.o,0,a.qa,a.m,a.F-a.O,0,0,a.Oc,a.Ob)}else{e=a.ja;f=e+a.A;k=h=g=0;b=a.m;n=0;c=a.F;z=d=0;v=a.la;I=(1<<v)-1;a.Rc&&(v=-v,z=16+v);for(;e<f;){t=a.i;E=e;x=E&t.f;W=(E&t.g)>>>t.i;t=x!=t.f?t.b[W].Kb(x,E):t.b[W++].hb(x,E)|t.b[W&t.m].hb(0,E+1)<<8;if(a.M&&t===a.h[g])h+=a.Qa;else{a.h[g]=t;(E=z)&&(t=t>>8|(t&255)<<8);h<b&&(b=h);for(x=a.Qa;x--;)W=t>>E&I,Lc(a,a.Oa,h++,k,W),E+=v;h>n&&(n=h);k<c&&(c=k);k>=d&&(d=k+
1)}e+=2;g++;if(h>=a.m&&(h=0,k++,k>a.F))break}a.M=!0;b<a.m&&(e=n-b,d-=c,a.c&&(f=b,g=e,b=c,e=d,c=a.m-(f+g),d=g),a.sa.putImageData(a.Oa,0,0,b,c,e,d),a.f.drawImage(a.o,0,0,a.o.width,a.o.height,0,0,a.B,a.u))}}
Ca(function(){for(var a=A(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=y(c),e=document.createElement("canvas");if(!e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||va("aspect"));f&&.3<=f&&3.33>=f&&(Ba("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");ua("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var g=e.getContext("2d"),d=new Ec(d,e,g,f,c);Na(d,c)}});
function Mc(a){this.H=+a.adapter;switch(this.H){case 0:this.I=0;this.P=2;break;default:q("Unrecognized serial adapter #"+this.H);return}this.c=this.f=null;this.M=a.tabSize;this.G=a.charBOL;this.g=0;this.B=!1;this.o=!0;r.call(this,"SerialPort",a,Mc);var b=a.binding;if("console"==b)this.f="";else{var c;a=Nc;b&&(void 0===c&&(c="Panel"),(c=Ma(c,this.id))&&(b=c.v[b])&&this.U(null,a,b))}this.h="";this.b=this.Ea=this.ia=null;this.exports={connect:this.Ib,receiveData:this.nb,receiveStatus:this.rd}}w(Mc);
var Oc=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Pc=[!1,0,0,133,142,39,238],Nc="buffer";l=Mc.prototype;
l.U=function(a,b,c,d){var e=this;switch(b){case Nc:return this.v[b]=this.c=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),Qc(e,b);return!0},c.onkeypress=function(a){a=a||window.event;Qc(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.v[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.nb(d);return!0},
!0}return!1};l.ra=function(a,b,c,d){this.w=a;this.i=b;this.a=c;this.N=d;var e=this;this.R=Gb(this.a,function(){e.nb()});this.T=Gb(this.a,function(){Cc(e)});this.L=C(a,"ChipSet");eb(b,this,Rc,this.I);fb(b,this,Sc,this.I);B(this)};
l.Ib=function(a){if(!this.b){var b=xb(this.w,"connection");if(b){var c=b.split("->");if(2==c.length){var d=ia(c[0]);if(d!=this.Ya)return;c=ia(c[1]);if(this.b=La(c)){var e=this.b.exports;if(e){var f=e.connect;f&&f.call(this.b,this.o);if(this.Ea=e.receiveData){this.o=a;this.ia=e.receiveStatus;this.status(this.za+"."+d+" connected to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
l.fa=function(a,b){if(!b)if(this.Ib(this.o),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};l.ha=function(a){return a?this.save():!0};l.reset=function(){Tc(this)};l.save=function(){var a=new G(this),b=0,c=[];c[b++]=this.s;c[b++]=this.A;c[b++]=this.F;c[b++]=this.X;c[b++]=this.l;c[b++]=this.m;c[b]=this.u;a.set(0,c);return a.data()};l.restore=function(a){return Tc(this,a[0])};
function Tc(a,b){var c=0;b||(b=Pc);a.s=b[c++];a.A=b[c++];a.F=b[c++];a.X=b[c++];a.l=b[c++];a.m=b[c++];a.u=b[c];return!0}function Uc(a,b){var c=a.u&b;b&15||(c>>=4);b=Oc[c];c=((a.l&12)>>2)+6;a.l&16&&c++;c+=((a.l&192)>>6)+1>>1;return 1E3/Math.round(b/c)}function Qc(a,b){return a.B||a.X&2?!1:(a.A=b,a.X|=2,ec(a.a,a.P),!0)}
l.nb=function(a){null!=a&&(this.h="number"!=typeof a?a:this.h+String.fromCharCode(a));this.h&&(Qc(this,this.h.charCodeAt(0))&&(this.h=this.h.substr(1)),this.h&&this.a&&Hb(this.a,this.R,Uc(this,15)));return!0};l.rd=function(a){this.X&=-129;a&64&&(this.X|=128)};function Cc(a,b){a.X|=5;b&&a.Ea&&a.Ea.call(a.b,b)}l.Wc=function(){var a=this.A;this.X&=-3;return a};l.Vc=function(){return this.X};
l.ed=function(a,b){this.F=b;this.X&=-6;if(19==b)this.B=!0;else if(17==b)this.B=!1;else if(this.Ea&&this.Ea.call(this.b,b),this.c)if(8==b)this.c.value=this.c.value.slice(0,-1),0<this.g&&this.g--;else{a=(a=13!=b&&10!=b?ja[b]:null)?"<"+a+">":String.fromCharCode(b);var c=a.length;9==b?(b=this.M||8,c=b-this.g%b,this.M&&(a=" ".slice(0,c))):13==b&&(this.g=c=0,a="\n");this.G&&!this.g&&c&&(a=String.fromCharCode(this.G)+a);this.c.value+=a;this.c.scrollTop=this.c.scrollHeight;
this.g+=c}else if(null!=this.f){if(10==b||1024<=this.f.length)this.ea(this.f),this.f="";10!=b&&(this.f+=String.fromCharCode(b))}this.a&&Hb(this.a,this.T,Uc(this,240))};l.dd=function(a,b){this.s?(this.ia&&(b^this.m)&34&&(a=0,a=this.o?a|(b&32?32:0)|(b&2?320:0):a|(b&32?16:0)|(b&2?1048576:0),this.ia.call(this.b,a)),this.m=b,this.m&64&&(this.s=!1)):(this.l=b,this.s=!0)};l.cd=function(a,b){this.u=b};var Rc={0:Mc.prototype.Wc,1:Mc.prototype.Vc},Sc={0:Mc.prototype.ed,1:Mc.prototype.dd,2:Mc.prototype.cd};
Ca(function(){for(var a=A(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Mc(d);Na(d,c)}});
function Vc(a,b,c){r.call(this,"Computer",a,Vc);this.j.Y=!1;Wc(this,b);this.u=xb(this,"autoPower",a);this.f=0;this.L=a.busWidth||a.buswidth;this.b=Xc;this.o=null;this.w=this.F=!1;this.H=xb(this,"url")||"";(Math.random()+.1).toString(36);this.c=Yc(this);if(this.a=Ma("CPU",this.id)){this.N=Ma("Debugger",this.id);this.l=[];for(b=null;b=C(this,"Video",b);)this.l.push(b);this.i=new Va({id:this.za+".bus",busWidth:this.L},this.a,this.N);var d,e=Ka(this.id);if((this.g=Ma("Panel",this.id))&&this.g.ya)for(b=
0;b<e.length;b++)d=e[b],d.K=this.g.K,d.ea=this.g.ea,d.ya=this.g.ya;this.ea("PC8080 v1.31.1\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.ra&&d.ra(this,this.i,this.a,this.N);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.m=d:this.b=parseInt(d,10));var f;if(a=xb(this,"state")||(f=!0,a.state))b=this.A=a,f||(this.w=!0,this.b=Xc),this.b&&(this.s=new G(this,"1.31.1"),Zc(this.s)?b=null:delete this.s);
!b&&this.b&&(b=$c(this))&&(this.w=!0);if(b){var g=this;ma(b,null,!0,function(a,b,c){c?(g.m=null,g.w=!1,g.K("Unable to load machine state from server (error "+c+(b?": "+ia(b):"")+")")):(g.o=b,g.F=!0);B(g)})}else B(this);this.v.power||(this.u=!0);!c&&this.u&&ad(this,this.Ta)}else q("Unable to find CPU component")}w(Vc);var Xc=0;function Wc(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){q(d.message+" ("+c+")")}}a.G=b}
function xb(a,b,c){var d=b.toLowerCase(),d=va(b)||va(d);void 0===d&&a.G&&(d=a.G[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function ad(a,b,c){for(var d=Ka(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Pa(f)){Pa(f,function(){ad(a,b,c)});return}}b.call(a,c)}
function bd(a,b){var c=new G(a,"1.31.1","validate");if(Zc(c)&&cd(c)){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.K("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=Vc.prototype;
l.Ta=function(a){void 0===a&&(a=this.b||(this.o?1:Xc));if(!this.f){this.f++;var b=!1,c=!1;this.B=!1;var d=this.s||new G(this,"1.31.1");if(-1==a)b=!0;else if(a>Xc){if(Zc(d,this.o)){this.h=new G(this,"1.31.1","failsafe");Zc(this.h)&&(dd(this,d),a=2,ed(this.h));this.h.set("timestamp",la());fd(this.h);var e=this.b&&!this.w;if(1==a||oa("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=cd(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Zc(d,g):("error"==
f&&"no machine state"!=g?(this.K("Error: "+g),"unable to verify user"==g&&(sa("user",""),this.c=null)):this.ea(f+": "+g),ed(d),Zc(d)?(c=cd(d),e=!0):c=!1))}e&&bd(this,c?d:null)}else 2==a&&d.clear()}else bd(this);delete this.o;delete this.s}e=Ka(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.a&&(c=gd(this,g,d,b,c));b=[d,a,c];-1!=a?ad(this,this.Fb,b):this.Fb(b)}};
function gd(a,b,c,d,e){if(!b.j.Y){b.j.Y=!0;if(b.fa){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.fa(f,d)&&f&&(q("Unable to restore state for "+b.type),a.A&&!a.F?(c.clear(),a.b=Xc,window&&window.location.reload()):a.B=!0,b.fa(null),e=!1)}if(!d&&b.Ab)for(a=b.Ab.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
l.Fb=function(a){var b=a[0],c=0>a[1];a=a[2];this.I=!0;this.j.Y=!0;var d=this.v.power;d&&(d.textContent="Shutdown");this.a&&(gd(this,this.a,b,c,a),this.a.Sa());this.B&&(dd(this,b),b.clear());!c&&this.h&&(this.h.clear(),delete this.h);this.f=0};
function dd(a,b){if(oa("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.c||"";b=b.toString();var d={app:"PC8080",ver:"1.31.1"};d.url=a.H;d.user=c;d.type="bug";d.data=b;ma("http://www.pcjs.org/api/v1/report",d,!0)}}
function hd(a,b,c){var d,e="none";if(a.f)return null;a.f--;var f=new G(a,"1.31.1"),g=new G(a,"1.31.1","validate"),h=la();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.31.1");f.set("url",window?window.location.href:null);f.set("browser",window?window.navigator.userAgent:"");a.a&&a.a.ha&&(c&&Bb(a.a),d=a.a.ha(b,c),"object"===typeof d&&f.set(a.a.id,d),c&&(a.a.j.Y=!1,!1===d&&(e=null)));for(var h=Ka(a.id),k=0;k<h.length;k++){var n=h[k];n.j.Y&&(n.ha&&(d=n.ha(b,c),"object"===typeof d&&f.set(n.id,
d)),c&&(n.j.Y=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.c&&id(a,a.c,f.toString()),fd(g)&&fd(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=3==a.b),d&&f.clear(h)):e=f.toString());c&&(a.j.Y=!1,b=a.v.power)&&(b.textContent="Power");a.f=0;return e}l.reset=function(){this.i&&this.i.reset&&this.i.reset();for(var a=Ka(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.i&&c.reset&&c.reset()}};
l.start=function(a,b){for(var c=Ka(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};l.stop=function(a,b){for(var c=Ka(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
l.U=function(a,b,c){var d=this;switch(b){case "power":return this.v[b]=c,c.onclick=function(){d.f||(d.j.Y?hd(d,!1,!0):ad(d,d.Ta))},!0;case "reset":return this.v[b]=c,c.onclick=function(){if(d.j.Y&&!d.f)if(d.b&&!d.m){var a=oa("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");hd(d,a,!0);!a&&d.A?window&&window.location.reload():d.Ta(Xc)}else d.reset(),d.a&&d.a.Sa()},!0;case "save":if(ea())c.parentNode.removeChild(c);else return this.v[b]=
c,c.onclick=function(){var a=Yc(d,!0);if(a){var b=!!(d.b&&!d.m||d.A),c=hd(d,b);b?id(d,a,c):d.K("Resume disabled, machine state not saved")}},!0}return!1};
function Yc(a,b){var c=a.c;c||((c=ra("user"),void 0!==c)?!c&&b&&(b=null,window&&(b=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=b)&&((c=jd(a,c))||a.K("The user ID is invalid.")):b&&a.K("Browser local storage is not available"));return c}
function jd(a,b){a.c=null;b=ma(fa()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(sa("user",b.data),a.c=b.data)}catch(d){q(d.message+" ("+c+")")}return a.c}function $c(a){var b=null;a.c&&(b=fa()+"/api/v1/user?req=load&user="+a.c+"&state="+kd(a,"1.31.1"));return b}
function id(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=kd(a,"1.31.1");d.data=c;b=ma(fa()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.K("Machine state saved to server"):c&&(c=b&&b.data||"unable to save machine state",c="error"==b.code?"Error: "+c:"Error "+b.code+": "+c,a.K(c),sa("user",""),a.c=null)}}
function C(a,b,c){a=Ka(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}function Fb(a,b){if(a.l.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a=a.l[0];a.P&&a.P.focus();!b&&window&&window.scrollTo(c,d)}}l.ia=function(a){this.a&&this.a.ia(a);this.g&&this.g.ia(a)};
Ca(function(){for(var a=A(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=y(c),c=A(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=y(f),g=new Vc(g,d,!0);Na(g,f);g.u&&ad(g,g.Ta)}});xa.show.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=Ma("Computer",c.id))&&c.I&&!c.j.Y&&c.Ta(-1)}});
xa.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=Ma("Computer",c.id))&&c.j.Y&&hd(c,!(!c.b||c.m),!0)}});function G(a,b,c){this.id=a.id;this.key=kd(a,b,c);this.N=a.N;ed(this,a.Sc)}function kd(a,b,c){a=a.id;if(b){var d=b.indexOf(".");0<d&&(a+=".v"+b.substr(0,d))}c&&(a+="."+c);return a}
G.prototype={constructor:G,set:function(a,b){try{this[this.id][a]=b}catch(c){}},get:function(a){return this[this.id][a]||null},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){ed(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 ed(a,b){a[a.id]={};b&&a.set("parms",b);a.a=!1}function fd(a){var b=!0;if(qa()){var c=JSON.stringify(a[a.id]);sa(a.key,c)||(q("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function cd(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){q(c.message||c),b=!1}return b}function Zc(a,b){return b?(a[a.id]=b,a.a=!0):a.a?!0:qa()&&(b=ra(a.key))?(a[a.id]=b,a.a=!0):!1}var ld=0;
function md(a,b,c,d,e,f){e("Loading "+a+"...");ma(a,null,!0,function(g,h,k){k?(h||(h="unable to load "+a+" ("+k+")"),f(h,null)):nd(h,a,b,c,d,e,f)})}
function nd(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(Ja(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(v){f=null,a=v.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?od(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
var Pa="undefined"!==typeof ArrayBuffer,Qa=[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 Ra(a){u.call(this,"Panel",a)}m(Ra,u);Ra.prototype.S=function(a,b,c,d){return this.F&&this.F.S(a,b,c,d)||this.m&&this.m.S(a,b,c,d)||this.h&&this.h.S(a,b,c,d)?!0:u.prototype.S.call(this,a,b,c,d)};Ra.prototype.qa=function(a,b,c,d){this.F=a;this.u=b;this.m=c;this.J=d;this.h=C(a,"Keyboard")};Ra.prototype.ba=function(a,b){b||Sa();return!0};Ra.prototype.fa=function(){return!0};
function Sa(){for(var a=!1,b=A(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=y(d),f=Ka(e.id);f||(a=!0,f=new Ra(e));Ma(f,d);a&&B(f)}}ya(Sa);
function Ta(a,b,c){u.call(this,"Bus",a);this.m=b;this.J=c;this.s=a.busWidth||16;this.v=Math.pow(2,this.s);this.g=this.v-1|0;this.b=(this.s>>1)+2;10>this.b&&(this.b=10);15<this.b&&(this.b=15);this.c=1<<this.b;this.A=this.c>>2;this.f=this.c-1;this.h=this.v/this.c|0;this.o=this.h-1;this.j=[];this.l=[];this.B=[];this.C=[];a=new D;Va(a,this.J);this.a=Array(this.h);for(b=0;b<this.h;b++)this.a[b]=a;B(this)}m(Ta,u);Ta.prototype.reset=function(){};Ta.prototype.ba=function(a,b){b||this.reset();return!0};
function Wa(a,b,c,d){for(var e=b,f=c,g=e>>>a.b;0<f&&g<a.a.length;){var h=a.a[g],l=g*a.c,n=a.c-(e-l);n>f&&(n=f);if(h&&h.size){if(h.type==d){if(e+f<=h.Pa)return h.fb+=h.Pa-e,h.Pa=e,!0;if(e>=h.Pa+h.fb){n=h.size-(e-l);n>f&&(n=f);h.fb=e-h.Pa+n;e=l+a.c;f-=n;g++;continue}}return Xa(Ya,e,f)}e=new D(e,n,a.c,d);Va(e,a.J,h);a.a[g++]=e;e=l+a.c;f-=n}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Za[d]+" at "+q(b,4,!0)),!0):Xa($a,b,c)}function ab(a,b){return a.a[(b&a.g)>>>a.b].eb(b&a.f,b)}
function bb(a,b){var c=b&a.f,d=(b&a.g)>>>a.b;return c!=a.f?a.a[d].td(c,b):a.a[d++].Sa(c,b)|a.a[d&a.o].Sa(0,b+1)<<8}function cb(a,b,c){a.a[(b&a.g)>>>a.b].Lb(b&a.f,c&255,b)}function db(a,b,c){var d=b&a.f,e=(b&a.g)>>>a.b;d!=a.f?a.a[e].Dd(d,c&65535,b):(a.a[e++].Ta(d,c&255,b),a.a[e&a.o].Ta(0,c>>8&255,b+1))}
function eb(a){for(var b=0,c=[],d=0;d<a.h;d++){var e=a.a[d];if(e.ja||e.Db){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var n=e[g],v=g+1;v<e.length&&e[v]===n;)v++;l[h++]=v-g;l[h++]=n;g=v}l.length<e.length&&(e=l)}c[f]=e}}return c}function fb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var l=+e+d;l<=g;l++)void 0!==f.j[l]?r("Input port "+q(l,4,!0)+" already registered"):f.j[l]=[h,!1]}}
function gb(a,b,c,d){void 0===d&&(d=0);if(c)for(var e in c){var f=a,g=+e+d,h=c[e].bind(b);if(h)for(var l=+e+d;l<=g;l++)void 0!==f.l[l]?r("Output port "+q(l,4,!0)+" already registered"):f.l[l]=[h,!1]}}function Xa(a,b,c){r("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Ya=1,$a=2,hb;if(Pa){var ib=new ArrayBuffer(2);(new DataView(ib)).setUint16(0,256,!0);hb=256===(new Uint16Array(ib))[0]}else hb=!1;var jb=hb;
function D(a,b,c,d){this.id=kb+=2;this.a=null;this.Pa=a;this.fb=b;this.size=c||0;this.type=d||lb;this.w=d==nb;Va(this);this.ja=this.Db=!1;if(c)if(Pa)this.m=new ArrayBuffer(c),this.u=new DataView(this.m,0,c),this.b=new Uint8Array(this.m,0,c),this.g=new Uint16Array(this.m,0,c>>1),this.a=new Int32Array(this.m,0,c>>2),ob(this,jb?pb:qb);else{this.a=Array(c>>2);for(a=0;a<this.a.length;a++)this.a[a]=0;ob(this,rb)}else ob(this)}k=D.prototype;
k.save=function(){var a,b;if(Pa)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.u.getInt32(b<<2,!0);else a=this.a;return a};k.restore=function(a){if(a&&this.size==a.length<<2){var b;if(Pa)for(b=0;b<a.length;b++)this.u.setInt32(b<<2,a[b],!0);else this.a=a;return this.ja=!0}return!1};function ob(a,b){b||(b=sb);tb(a,b,void 0);ub(a,b,void 0)}function tb(a,b,c){c&&a.c||(a.Sa=b[0]||a.Hb,a.td=b[2]||a.Ib);if(c||void 0===c)a.eb=b[0]||a.Hb,a.Jb=b[2]||a.Ib}
function ub(a,b,c){c&&a.f||(a.Ta=!a.w&&b[1]||a.Mb,a.Dd=!a.w&&b[3]||a.Nb);if(c||void 0===c)a.Lb=b[1]||a.Mb,a.h=b[3]||a.Nb}function Va(a,b,c){a.J=b;a.c=a.f=0;c&&((a.c=c.c)&&tb(a,vb,!1),(a.f=c.f)&&ub(a,vb,!1))}k.Hb=function(){return 255};k.Mb=function(){};k.Ib=function(a,b){return this.Sa(a++,b++)|this.Sa(a,b)<<8};k.Nb=function(a,b,c){this.Ta(a++,b&255,c++);this.Ta(a,b>>8,c)};k.sd=function(a){return this.a[a>>2]>>>((a&3)<<3)&255};
k.xd=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};k.Cd=function(a,b){var c=a>>2;a=(a&3)<<3;this.a[c]=this.a[c]&~(255<<a)|b<<a;this.ja=!0};k.Hd=function(a,b){var c=a>>2;a=(a&3)<<3;24>a?this.a[c]=this.a[c]&~(65535<<a)|b<<a:(this.a[c]=this.a[c]&16777215|b<<24,c++,this.a[c]=this.a[c]&-256|b>>8);this.ja=!0};k.qd=function(a,b){return this.eb(a,b)};k.vd=function(a,b){return this.Jb(a,b)};k.Ad=function(a,b,c){this.w||this.Lb(a,b,c)};
k.Fd=function(a,b,c){this.w||this.h(a,b,c)};k.pd=function(a){return this.b[a]};k.rd=function(a){return this.b[a]};k.ud=function(a){return this.u.getUint16(a,!0)};k.wd=function(a){return a&1?this.b[a]|this.b[a+1]<<8:this.g[a>>1]};k.zd=function(a,b){this.b[a]=b;this.ja=!0};k.Bd=function(a,b){this.b[a]=b;this.ja=!0};k.Ed=function(a,b){this.u.setUint16(a,b,!0);this.ja=!0};k.Gd=function(a,b){a&1?(this.b[a]=b,this.b[a+1]=b>>8):this.g[a>>1]=b;this.ja=!0};
var lb=0,nb=2,Za=["NONE","RAM","ROM","VID","H/W"],kb=0,sb=[],rb=[D.prototype.sd,D.prototype.Cd,D.prototype.xd,D.prototype.Hd],vb=[D.prototype.qd,D.prototype.Ad,D.prototype.vd,D.prototype.Fd];if(Pa)var qb=[D.prototype.pd,D.prototype.zd,D.prototype.ud,D.prototype.Ed],pb=[D.prototype.rd,D.prototype.Bd,D.prototype.wd,D.prototype.Gd];
function wb(a,b){u.call(this,"CPU",a);var c=a.multiplier||1;this.na=a.cycles||b;this.O=c;this.Da=Math.round(this.na/1E4)/100;this.X=this.Da*this.O;this.i.ka=!1;this.i.Kb=!1;this.i.Qa=a.autoStart;this.i.Bb=!1;this.i.Za=!1;this.wa=this.da=0;this.xa=a.csStart;this.ha=a.csInterval;this.la=a.csStop;this.H=[];this.jb=this.gb.bind(this);B(this)}m(wb,u);k=wb.prototype;
k.qa=function(a,b,c,d){this.F=a;this.u=b;this.J=d;for(b=0;b<xb.length;b++)(c=this.w[xb[b]])&&this.F.S(null,xb[b],c);this.N=C(a,"ChipSet");a=yb(a,"autoStart");null!=a&&(this.i.Qa="true"==a?!0:"false"==a?!1:!!a);B(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};k.ba=function(a,b){if(!b){if(a&&this.restore){zb(this);if(!this.restore(a))return!1;Ab(this)}else this.reset();this.aa("No debugger detected")}Bb(this);return!0};
k.fa=function(a){return a?this.save():!0};k.Qa=function(){return this.i.Qa||void 0===this.w.run?(this.gb(),!0):!1};k.Eb=function(){return 0};function Ab(a){void 0===a.xa&&(a.xa=0);void 0===a.ha&&(a.ha=-1);void 0===a.la&&(a.la=-1);a.i.Za=0<=a.xa&&0<a.ha;a.i.Za&&(a.wa=0,a.da=a.xa-a.I)}
k.S=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.w[b]=c;a=!0;break;case "run":this.w[b]=c;c.onclick=function(){var a;if(a=d.F)if(a=d.F,a.i.U)a=!0;else{var b=null,c,h=Ja(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.i.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.i.U);c++);c==h.length&&(b=a);r("The "+b.type+" component ("+b.id+") is not "+(b.i.ready?"powered yet":"ready yet"+(b.ab?" (waiting for notification)":""))+".");a=!1}a&&(d.i.ka?Cb(d):d.gb())};a=!0;
break;case "speed":this.w[b]=c;a=!0;break;case "setSpeed":this.w[b]=c,c.onclick=function(){Db(d,d.O<<1,!0)},c.textContent=this.X.toFixed(2)+"Mhz",a=!0}return a};function Eb(a,b){var c=1;b&&1<a.O&&a.R&&(c=a.R/a.Da);a.Na=Math.round(1E3/Fb);a.ya=Math.floor(a.na/Fb*c);b||(a.ma=a.ya);a.Fa=0}function Gb(a){return a.I+a.P+a.ca-a.a}function zb(a){a.R=0;a.Oa=0;a.I=a.P=a.ca=a.a=0;Ab(a);Db(a,1)}
function Db(a,b,c){if(void 0!==b){.8>a.R/a.X&&(b=1);a.O=b;b=a.Da*a.O;if(a.X!=b){a.X=b;b=a.X.toFixed(2)+"Mhz";var d=a.w.setSpeed;d&&(d.textContent=b);a.aa("target speed: "+b)}c&&a.F&&Hb(a.F)}a.I+=a.P;a.P=0;a.L=ka();a.V=0;Eb(a)}function Ib(a,b){var c=a.H.length;a.H.push([-1,b]);return c}function Jb(a,b,c){0<=b&&b<a.H.length&&0>a.H[b][0]&&(c*=a.na*a.O/1E3,a.H[b][0]=c+Kb(a))}function Kb(a,b){var c=a.ca-=a.a;a.a=0;b&&(a.ca=0);return c}
k.gb=function(a){if(Oa(this,!0)){if(!this.i.ka){Db(this);this.F&&this.F.start(this.L,Gb(this));this.i.ka=!0;this.i.Kb=!0;this.N&&this.N.start();var b=this.w.run;b&&(b.textContent="Halt");this.F&&(Lb(this.F,!0),a&&Hb(this.F,!0))}this.Fa>=this.na&&Eb(this,!0);this.oa=0;this.va=ka();this.V&&(a=this.va-this.V,a>this.Na&&(this.L+=a,this.L>this.va&&(this.L=this.va)));try{do{for(var c,d=this.i.Za?1:this.ya,e=this.H.length-1;0<=e;e--){var f=this.H[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.qb(c);c=Kb(this,!0);
this.oa+=c;this.P+=c;a=c;this.i.Za&&(b=!1,this.wa=this.wa+this.Eb()|0,this.da-=a,0>=this.da&&(this.da+=this.ha,b=!0),0<=this.la&&this.la<=Gb(this)&&(this.ha=this.la=-1,Ab(this),Cb(this),b=!0),b&&this.aa(Gb(this)+" cycles: checksum="+q(this.wa)));a=c;for(var g=this.H.length-1;0<=g;g--){var h=this.H[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.ma-=c;if(0>=this.ma){this.ma+=this.ya;++this.Oa>=Mb&&(this.F&&Lb(this.F),this.Oa=0);break}}while(this.i.ka)}catch(l){Cb(this);Bb(this);this.F&&this.F.stop(ka(),
Gb(this));Oa(this,!1);c=l.stack||l.message;this.i.error=!0;this.G(c);return}c=setTimeout;d=this.jb;this.V=ka();e=this.Na;this.oa&&(e=Math.round(e*this.oa/this.ya));e-=this.V-this.va;if(f=this.V-this.L)this.R=Math.round(this.P/(10*f))/100,864E5<=f&&(this.I=0,Db(this));if(0>e||this.R<this.X)-1E3>e&&(this.L-=e),e=0;this.Fa+=this.oa;this.V+=e;c(d,e)}else Bb(this),this.F&&this.F.stop(ka(),Gb(this))};k.qb=function(){return 0};
function Cb(a){a.i.Ya&&(a.i.kb=!0);Kb(a);a.I+=a.P;a.P=0;if(a.i.ka){a.i.ka=!1;a.N&&a.N.stop();var b=a.w.run;b&&(b.textContent="Run")}a.i.complete=void 0}function Bb(a){if(a.F){for(var b=a.F,c=0;c<b.g.length;c++)Nb(b.g[c],void 0);Lb(a.F,void 0)}}var Fb=30,Mb=15,xb=["power","reset"];function Ob(a){wb.call(this,a,1E6);this.Ka=Pb;zb(this);this.i.complete=this.i.Sc=!1;this.Ma=0;this.ra=[];this.La=0;Qb(this)}m(Ob,wb);function Rb(a,b){a.ra.push(b)}k=Ob.prototype;
k.reset=function(){this.i.ka&&Cb(this);Qb(this);zb(this);this.i.error=!1;wb.prototype.reset.call(this)};function Qb(a){a.b=0;a.g=0;a.c=0;a.h=0;a.f=0;a.j=0;a.l=0;a.A=0;F(a,a.La);Sb(a,0);a.C=0}function Tb(a,b){a.La=b;F(a,b)}k.Eb=function(){var a=this.b+this.g+this.c+this.h+this.f+this.j+this.l|0;return a=a+this.A+this.s+Ub(this)|0};
k.save=function(){var a=new G(this);a.set(0,[this.b,this.g,this.c,this.h,this.f,this.j,this.l,this.A,this.s,Ub(this)]);a.set(1,[this.C,this.I,this.O]);a.set(2,eb(this.u));return a.data()};
k.restore=function(a){var b=a[0];this.b=b[0];this.g=b[1];this.c=b[2];this.h=b[3];this.f=b[4];this.j=b[5];this.l=b[6];this.A=b[7]&65535;F(this,b[8]);Sb(this,b[9]);b=a[1];this.C=b[0];this.I=b[1];Db(this,b[3]);a:{b=this.u;a=a[2];var c;for(c=0;c<a.length-1;c+=2){var d=a[c],e=a[c+1];if(e&&e.length<b.A){for(var f=0,g=Array(b.A),h=0;h<e.length-1;)for(var l=e[h++],n=e[h++];l--;)g[f++]=n;e=g}f=b.a[d];if(!f||!f.restore(e)){r("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
k.S=function(a,b,c){switch(b){case "A":case "B":case "C":case "BC":case "D":case "E":case "DE":case "H":case "L":case "HL":case "SP":case "PC":case "PS":case "IF":case "SF":case "ZF":case "AF":case "PF":case "CF":this.w[b]=c;this.Ma++;a=!0;break;default:a=wb.prototype.S.call(this,a,b,c)}return a};function Vb(a){return a.g<<8|a.c}function Xb(a,b){a.g=b>>8&255;a.c=b&255}function Yb(a){return a.h<<8|a.f}function Zb(a,b){a.h=b>>8&255;a.f=b&255}function H(a){return a.j<<8|a.l}
function I(a,b){a.j=b>>8&255;a.l=b&255}function F(a,b){a.s=b&65535}function J(a){return a.o&256?1:0}function $b(a,b){a.o=a.o&255|b}function ac(a){return Qa[a.v&255]?4:0}function Ub(a){return a.D&-214|(a.v&128?128:0)|(a.o&255?0:64)|((a.v^a.B)&16?16:0)|ac(a)|J(a)}function Sb(a,b){a.o=a.v=a.B=0;b&1&&(a.o|=256);b&4||(a.v|=1);b&16&&(a.B|=16);b&64||(a.o|=255);b&128&&(a.v^=192);a.D=a.D&-726|b&512|2}function bc(a,b){a.B=a.b^b;return a.v=(a.o=a.b+b)&255}
function cc(a,b){a.B=a.b^b;return a.v=(a.o=a.b+b+(a.o&256?1:0))&255}function dc(a,b){a.o=a.v=a.B=a.b&b;(a.b|b)&8&&(a.B^=16);return a.o}function ec(a,b){a.B=b^255;b=a.v=b+255&255;a.o=a.o&-256|b;return b}function fc(a,b){a.B=b;b=a.v=b+1&255;a.o=a.o&-256|b;return b}function gc(a,b){return a.v=a.o=a.B=a.b|b}function L(a,b){b^=255;a.B=a.b^b;return a.v=(a.o=a.b+b+1^256)&255}function hc(a,b){b^=255;a.B=a.b^b;return a.v=(a.o=a.b+b+(a.o&256?0:1)^256)&255}function ic(a,b){return a.v=a.o=a.B=a.b^b}
function M(a,b){a=a.u;return a.a[(b&a.g)>>>a.b].Sa(b&a.f,b)}function N(a,b,c){a=a.u;a.a[(b&a.g)>>>a.b].Ta(b&a.f,c&255,b)}function O(a){var b=M(a,a.s);F(a,a.s+1);return b}function P(a){var b=bb(a.u,a.s);F(a,a.s+2);return b}function Q(a){var b=bb(a.u,a.A);a.A=a.A+2&65535;return b}function R(a,b){a.A=a.A-2&65535;db(a.u,a.A,b)}function jc(a){if(a.a&&a.C&255&&a.D&512){for(var b=0;8>b&&!(a.C&1<<b);b++);a.C&=~(0>b?255:1<<b);a.D&=-513;a.C&=-257;a.Ka[199|b<<3].call(a)}return a.C&256?(Kb(a),!1):!0}
function kc(a,b){a.C|=1<<b;a.D&512&&Kb(a)}function T(a,b,c,d){d=d||2;a.w[b]&&(void 0===c&&(a.i.error=!0,a.G("Value for "+b+" is invalid"),Cb(a)),c=!a.i.ka||a.i.Bb?q(c,d):"--------".substr(0,d),a.w[b].textContent!=c&&(a.w[b].textContent=c))}k.qb=function(a){this.i.complete=!0;this.i.Sc=!1;this.i.Kb=!1;this.ca=this.a=a;if(jc(this)){do this.Ka[O(this)].call(this);while(0<this.a)}return this.i.complete?this.ca-this.a:void 0===this.i.complete?0:-1};
ya(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Ob(d);Ma(d,c)}});function lc(){this.a-=4}function mc(){F(this,P(this));this.a-=10}function nc(){F(this,Q(this));this.a-=10}function oc(){var a=P(this);R(this,this.s);F(this,a);this.a-=17}
var Pb=[lc,function(){Xb(this,P(this));this.a-=10},function(){N(this,Vb(this),this.b);this.a-=7},function(){Xb(this,Vb(this)+1);this.a-=5},function(){this.g=fc(this,this.g);this.a-=5},function(){this.g=ec(this,this.g);this.a-=5},function(){this.g=O(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;$b(this,a&256);this.a-=4},lc,function(){var a;I(this,a=H(this)+Vb(this));$b(this,a>>8&256);this.a-=10},function(){this.b=M(this,Vb(this));this.a-=7},function(){Xb(this,Vb(this)-1);this.a-=5},
function(){this.c=fc(this,this.c);this.a-=5},function(){this.c=ec(this,this.c);this.a-=5},function(){this.c=O(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;$b(this,a);this.a-=4},lc,function(){Zb(this,P(this));this.a-=10},function(){N(this,Yb(this),this.b);this.a-=7},function(){Zb(this,Yb(this)+1);this.a-=5},function(){this.h=fc(this,this.h);this.a-=5},function(){this.h=ec(this,this.h);this.a-=5},function(){this.h=O(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|J(this);
$b(this,a&256);this.a-=4},lc,function(){var a;I(this,a=H(this)+Yb(this));$b(this,a>>8&256);this.a-=10},function(){this.b=M(this,Yb(this));this.a-=7},function(){Zb(this,Yb(this)-1);this.a-=5},function(){this.f=fc(this,this.f);this.a-=5},function(){this.f=ec(this,this.f);this.a-=5},function(){this.f=O(this);this.a-=7},function(){var a=this.b<<8;this.b=(J(this)<<8|this.b)>>1;$b(this,a&256);this.a-=4},lc,function(){I(this,P(this));this.a-=10},function(){var a=P(this);db(this.u,a,H(this));this.a-=16},
function(){I(this,H(this)+1);this.a-=5},function(){this.j=fc(this,this.j);this.a-=5},function(){this.j=ec(this,this.j);this.a-=5},function(){this.j=O(this);this.a-=7},function(){var a=0,b=J(this);if((this.v^this.B)&16||9<(this.b&15))a|=6;if(b||154<=this.b)a|=96,b=1;this.b=bc(this,a);$b(this,b?256:0);this.a-=4},lc,function(){var a;I(this,a=H(this)+H(this));$b(this,a>>8&256);this.a-=10},function(){var a;a=P(this);a=bb(this.u,a);I(this,a);this.a-=16},function(){I(this,H(this)-1);this.a-=5},function(){this.l=
fc(this,this.l);this.a-=5},function(){this.l=ec(this,this.l);this.a-=5},function(){this.l=O(this);this.a-=7},function(){this.b=~this.b&255;this.a-=4},lc,function(){this.A=P(this)&65535;this.a-=10},function(){N(this,P(this),this.b);this.a-=13},function(){this.A=this.A+1&65535;this.a-=5},function(){var a=H(this);N(this,a,fc(this,M(this,a)));this.a-=10},function(){var a=H(this);N(this,a,ec(this,M(this,a)));this.a-=10},function(){N(this,H(this),O(this));this.a-=10},function(){this.o|=256;this.a-=4},lc,
function(){var a;I(this,a=H(this)+this.A);$b(this,a>>8&256);this.a-=10},function(){this.b=M(this,P(this));this.a-=13},function(){this.A=this.A-1&65535;this.a-=5},function(){this.b=fc(this,this.b);this.a-=5},function(){this.b=ec(this,this.b);this.a-=5},function(){this.b=O(this);this.a-=7},function(){$b(this,J(this)?0:256);this.a-=4},function(){this.a-=5},function(){this.g=this.c;this.a-=5},function(){this.g=this.h;this.a-=5},function(){this.g=this.f;this.a-=5},function(){this.g=this.j;this.a-=5},function(){this.g=
this.l;this.a-=5},function(){this.g=M(this,H(this));this.a-=7},function(){this.g=this.b;this.a-=5},function(){this.c=this.g;this.a-=5},function(){this.a-=5},function(){this.c=this.h;this.a-=5},function(){this.c=this.f;this.a-=5},function(){this.c=this.j;this.a-=5},function(){this.c=this.l;this.a-=5},function(){this.c=M(this,H(this));this.a-=7},function(){this.c=this.b;this.a-=5},function(){this.h=this.g;this.a-=5},function(){this.h=this.c;this.a-=5},function(){this.a-=5},function(){this.h=this.f;
this.a-=5},function(){this.h=this.j;this.a-=5},function(){this.h=this.l;this.a-=5},function(){this.h=M(this,H(this));this.a-=7},function(){this.h=this.b;this.a-=5},function(){this.f=this.g;this.a-=5},function(){this.f=this.c;this.a-=5},function(){this.f=this.h;this.a-=5},function(){this.a-=5},function(){this.f=this.j;this.a-=5},function(){this.f=this.l;this.a-=5},function(){this.f=M(this,H(this));this.a-=7},function(){this.f=this.b;this.a-=5},function(){this.j=this.g;this.a-=5},function(){this.j=
this.c;this.a-=5},function(){this.j=this.h;this.a-=5},function(){this.j=this.f;this.a-=5},function(){this.a-=5},function(){this.j=this.l;this.a-=5},function(){this.j=M(this,H(this));this.a-=7},function(){this.j=this.b;this.a-=5},function(){this.l=this.g;this.a-=5},function(){this.l=this.c;this.a-=5},function(){this.l=this.h;this.a-=5},function(){this.l=this.f;this.a-=5},function(){this.l=this.j;this.a-=5},function(){this.a-=5},function(){this.l=M(this,H(this));this.a-=7},function(){this.l=this.b;
this.a-=5},function(){N(this,H(this),this.g);this.a-=7},function(){N(this,H(this),this.c);this.a-=7},function(){N(this,H(this),this.h);this.a-=7},function(){N(this,H(this),this.f);this.a-=7},function(){N(this,H(this),this.j);this.a-=7},function(){N(this,H(this),this.l);this.a-=7},function(){var a=this.s-1;if(this.ra.length)for(var b=0;b<this.ra.length;b++)if(this.ra[b](a))return;this.a-=7;this.C|=256;Kb(this);this.D&512||Cb(this)},function(){N(this,H(this),this.b);this.a-=7},function(){this.b=this.g;
this.a-=5},function(){this.b=this.c;this.a-=5},function(){this.b=this.h;this.a-=5},function(){this.b=this.f;this.a-=5},function(){this.b=this.j;this.a-=5},function(){this.b=this.l;this.a-=5},function(){this.b=M(this,H(this));this.a-=7},function(){this.a-=5},function(){this.b=bc(this,this.g);this.a-=4},function(){this.b=bc(this,this.c);this.a-=4},function(){this.b=bc(this,this.h);this.a-=4},function(){this.b=bc(this,this.f);this.a-=4},function(){this.b=bc(this,this.j);this.a-=4},function(){this.b=
bc(this,this.l);this.a-=4},function(){this.b=bc(this,M(this,H(this)));this.a-=7},function(){this.b=bc(this,this.b);this.a-=4},function(){this.b=cc(this,this.g);this.a-=4},function(){this.b=cc(this,this.c);this.a-=4},function(){this.b=cc(this,this.h);this.a-=4},function(){this.b=cc(this,this.f);this.a-=4},function(){this.b=cc(this,this.j);this.a-=4},function(){this.b=cc(this,this.l);this.a-=4},function(){this.b=cc(this,M(this,H(this)));this.a-=7},function(){this.b=cc(this,this.b);this.a-=4},function(){this.b=
L(this,this.g);this.a-=4},function(){this.b=L(this,this.c);this.a-=4},function(){this.b=L(this,this.h);this.a-=4},function(){this.b=L(this,this.f);this.a-=4},function(){this.b=L(this,this.j);this.a-=4},function(){this.b=L(this,this.l);this.a-=4},function(){this.b=L(this,M(this,H(this)));this.a-=7},function(){this.b=L(this,this.b);this.a-=4},function(){this.b=hc(this,this.g);this.a-=4},function(){this.b=hc(this,this.c);this.a-=4},function(){this.b=hc(this,this.h);this.a-=4},function(){this.b=hc(this,
this.f);this.a-=4},function(){this.b=hc(this,this.j);this.a-=4},function(){this.b=hc(this,this.l);this.a-=4},function(){this.b=hc(this,M(this,H(this)));this.a-=7},function(){this.b=hc(this,this.b);this.a-=4},function(){this.b=dc(this,this.g);this.a-=4},function(){this.b=dc(this,this.c);this.a-=4},function(){this.b=dc(this,this.h);this.a-=4},function(){this.b=dc(this,this.f);this.a-=4},function(){this.b=dc(this,this.j);this.a-=4},function(){this.b=dc(this,this.l);this.a-=4},function(){this.b=dc(this,
M(this,H(this)));this.a-=7},function(){this.b=dc(this,this.b);this.a-=4},function(){this.b=ic(this,this.g);this.a-=4},function(){this.b=ic(this,this.c);this.a-=4},function(){this.b=ic(this,this.h);this.a-=4},function(){this.b=ic(this,this.f);this.a-=4},function(){this.b=ic(this,this.j);this.a-=4},function(){this.b=ic(this,this.l);this.a-=4},function(){this.b=ic(this,M(this,H(this)));this.a-=7},function(){this.b=ic(this,this.b);this.a-=4},function(){this.b=gc(this,this.g);this.a-=4},function(){this.b=
gc(this,this.c);this.a-=4},function(){this.b=gc(this,this.h);this.a-=4},function(){this.b=gc(this,this.f);this.a-=4},function(){this.b=gc(this,this.j);this.a-=4},function(){this.b=gc(this,this.l);this.a-=4},function(){this.b=gc(this,M(this,H(this)));this.a-=7},function(){this.b=gc(this,this.b);this.a-=4},function(){L(this,this.g);this.a-=4},function(){L(this,this.c);this.a-=4},function(){L(this,this.h);this.a-=4},function(){L(this,this.f);this.a-=4},function(){L(this,this.j);this.a-=4},function(){L(this,
this.l);this.a-=4},function(){L(this,M(this,H(this)));this.a-=7},function(){L(this,this.b);this.a-=4},function(){this.o&255&&(F(this,Q(this)),this.a-=6);this.a-=5},function(){Xb(this,Q(this));this.a-=10},function(){var a=P(this);this.o&255&&F(this,a);this.a-=10},mc,function(){var a=P(this);this.o&255&&(R(this,this.s),F(this,a),this.a-=6);this.a-=11},function(){R(this,Vb(this));this.a-=11},function(){this.b=bc(this,O(this));this.a-=7},function(){R(this,this.s);F(this,0);this.a-=11},function(){this.o&
255||(F(this,Q(this)),this.a-=6);this.a-=5},nc,function(){var a=P(this);this.o&255||F(this,a);this.a-=10},mc,function(){var a=P(this);this.o&255||(R(this,this.s),F(this,a),this.a-=6);this.a-=11},oc,function(){this.b=cc(this,O(this));this.a-=7},function(){R(this,this.s);F(this,8);this.a-=11},function(){J(this)||(F(this,Q(this)),this.a-=6);this.a-=5},function(){Zb(this,Q(this));this.a-=10},function(){var a=P(this);J(this)||F(this,a);this.a-=10},function(){for(var a=O(this),b=this.u,c=this.b,d=this.s+
-2&65535,e=1,f=0;0<e;){var g=b.l[a],h=b.C[a]||1,l=1==h?255:2==h?65535:-1,l=(c>>>=f)&l;if(void 0!==g&&g[0])g[0](a,l,d);f+=h<<3;a+=h;e-=h}this.a-=10},function(){var a=P(this);J(this)||(R(this,this.s),F(this,a),this.a-=6);this.a-=11},function(){R(this,Yb(this));this.a-=11},function(){this.b=L(this,O(this));this.a-=7},function(){R(this,this.s);F(this,16);this.a-=11},function(){J(this)&&(F(this,Q(this)),this.a-=6);this.a-=5},nc,function(){var a=P(this);J(this)&&F(this,a);this.a-=10},function(){for(var a=
O(this),b=this.u,c=this.s+-2&65535,d=1,e=0,f=0;0<d;){var g=b.j[a],h=b.B[a]||1,l=1==h?255:2==h?65535:-1,n=l;void 0!==g&&g[0]&&(n=g[0](a,c),void 0===n?n=l:n&=l);e|=n<<f;f+=h<<3;a+=h;d-=h}this.b=e&255;this.a-=10},function(){var a=P(this);J(this)&&(R(this,this.s),F(this,a),this.a-=6);this.a-=11},oc,function(){this.b=hc(this,O(this));this.a-=7},function(){R(this,this.s);F(this,24);this.a-=11},function(){ac(this)||(F(this,Q(this)),this.a-=6);this.a-=5},function(){I(this,Q(this));this.a-=10},function(){var a=
P(this);ac(this)||F(this,a);this.a-=10},function(){var a=Q(this);R(this,H(this));I(this,a);this.a-=18},function(){var a=P(this);ac(this)||(R(this,this.s),F(this,a),this.a-=6);this.a-=11},function(){R(this,H(this));this.a-=11},function(){this.b=dc(this,O(this));this.a-=7},function(){R(this,this.s);F(this,32);this.a-=11},function(){ac(this)&&(F(this,Q(this)),this.a-=6);this.a-=5},function(){F(this,H(this));this.a-=5},function(){var a=P(this);ac(this)&&F(this,a);this.a-=10},function(){var a=H(this);
I(this,Yb(this));Zb(this,a);this.a-=5},function(){var a=P(this);ac(this)&&(R(this,this.s),F(this,a),this.a-=6);this.a-=11},oc,function(){this.b=ic(this,O(this));this.a-=7},function(){R(this,this.s);F(this,40);this.a-=11},function(){this.v&128||(F(this,Q(this)),this.a-=6);this.a-=5},function(){var a=Q(this);Sb(this,a&255|this.D&-256);this.b=a>>8;this.a-=10},function(){var a=P(this);this.v&128||F(this,a);this.a-=10},function(){this.D&=-513;this.a-=4},function(){var a=P(this);this.v&128||(R(this,this.s),
F(this,a),this.a-=6);this.a-=11},function(){R(this,Ub(this)&255|this.b<<8);this.a-=11},function(){this.b=gc(this,O(this));this.a-=7},function(){R(this,this.s);F(this,48);this.a-=11},function(){this.v&128&&(F(this,Q(this)),this.a-=6);this.a-=5},function(){this.A=H(this)&65535;this.a-=5},function(){var a=P(this);this.v&128&&F(this,a);this.a-=10},function(){this.D|=512;this.a-=4;jc(this)},function(){var a=P(this);this.v&128&&(R(this,this.s),F(this,a),this.a-=6);this.a-=11},oc,function(){L(this,O(this));
this.a-=7},function(){R(this,this.s);F(this,56);this.a-=11}];function U(a){u.call(this,"ChipSet",a);var b=a.model;b&&!pc[b]&&Ca("Unrecognized ChipSet model: "+b);this.b=pc[b]||{};a.sound&&(this.I=null,window&&(this.I=window.AudioContext||window.webkitAudioContext),this.I&&new this.I);B(this)}m(U,u);k=U.prototype;k.S=function(){return!1};
k.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;this.F=a;this.h=C(a,"Keyboard");this.g=C(a,"SerialPort");this.video=C(a,"Video");fb(b,this,this.b.bb);gb(b,this,this.b.cb)};k.ba=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.fa=function(a){return a?this.save():!0};k.reset=function(){this.b.INIT&&!this.restore(this.b.INIT)&&this.G("reset error")};
k.save=function(){var a=new G(this);switch(this.b.Y){case V.Y:a.set(0,[this.V,this.f,this.X,this.B,this.H,this.P,this.R]);break;case W.Y:a.set(0,[this.N,this.s]),a.set(1,[this.l,this.o]),a.set(2,[this.c,this.C,this.O,this.L]),a.set(3,[this.A,this.a,this.v,this.D,this.j])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.Y){case V.Y:return this.V=b[0],this.f=b[1],this.X=b[2],this.B=b[3],this.H=b[4],this.P=b[5],this.R=b[6],!0;case W.Y:return this.N=b[0],this.s=b[1],b=a[1],this.l=b[0],this.o=b[1],b=a[2],this.c=b[0],this.C=b[1],this.O=b[2],this.L=b[3],b=a[3],this.A=b[0],this.a=b[1],this.v=b[2],this.D=b[3],this.j=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.Xc=function(){return this.V};k.Yc=function(){return this.f};k.Zc=function(){return this.X};
k.Wc=function(){return this.B>>8-this.H&255};k.ed=function(a,b){this.H=b};k.gd=function(a,b){this.P=b};k.fd=function(a,b){this.B=b<<8|this.B>>8};k.hd=function(a,b){this.R=b};k.jd=function(){};function qc(a){var b=0,c=0,d=~a.A;for(a=0;10>a;a++)d&1&&(b=9-a),d>>=1;for(a=0;10>a;a++)d&1&&(c=9-a),d>>=1;return 10*b+c}
k.$c=function(){var a=this.s,a=a&~W.ga.wb;if((Gb(this.m)&64)<<1&&(a|=W.ga.wb,a!=this.s)){var b,c;b=this.v&1;switch(this.v>>1&7){case W.ia.Ca.Pb:this.A=this.A<<1|b;break;case W.ia.Ca.Wb:b=qc(this);this.j[b]=W.ia.Xa;break;case W.ia.Ca.Qb:this.a=this.a<<1|b;break;case W.ia.Ca.Lc:b=qc(this);c=this.a&W.ia.Xa;this.j[b]=c;break;case W.ia.Ca.Bc:b=qc(this);c=this.j[b];null==c&&(c=W.ia.Xa);this.a=c;break;case W.ia.Ca.Dc:this.a<<=1,this.D=this.a&W.ia.Xa+1}}a&=~W.ga.xb;this.D&&(a|=W.ga.xb);a&=~W.ga.sb;if(b=this.h){b=
this.h;if(c=b.h)c=b.m,c=Gb(b.m)>=b.o+c.na*c.O/1E3*1.2731488;c&&(b.h=!1);b=!b.h}b&&(a|=W.ga.sb);a&=~W.ga.zb;this.g&&this.g.T&rc&&(a|=W.ga.zb);return this.s=a};k.kd=function(a,b){this.N=b};k.nd=function(a,b){this.v=b};k.md=function(a,b){a=b&3;switch(b>>2&3){case 0:this.c=this.c&-4|a;break;case 1:this.c=this.c&-13|a<<2;this.video&&(b=this.video,a=this.c,b.la!==a&&((b.la=a)?Nb(b,!0):b.na=!0));break;case 2:switch(a){case 0:this.C=~this.C;break;case 2:case 3:this.O=3-a}break;case 3:this.L=a}};
k.ld=function(a,b){b&W.ua.Ac?(b&=W.ua.yb,this.o!=b&&(this.o=b,this.video&&(this.video.Gb=this.o==W.ua.yb?50:60))):(b&=W.ua.pb,this.l!=b&&(this.l=b,this.video&&(a=this.video,b=this.l==W.ua.pb?132:80,a.C=b,a.M=a.va,80<b&&a.M--,sc(a)&&tc(a))))};
var V={Y:1978.1,Fc:{Z:0,ne:1,re:16,ye:32,He:64,Ge:128,Ha:14},za:{Z:1,Vb:1,yc:2,uc:4,vc:16,wc:32,xc:64,Ha:8},Gc:{Z:2,me:3,Qe:4,oe:8,Ce:16,De:32,Ee:64,pe:128,Ha:0},Le:{Z:3},Je:{Z:2,ze:7},Ne:{Z:3,Re:1,Me:2,Fe:4,we:8,qe:16,Id:32},Ke:{Z:4},Oe:{Z:5,se:1,te:2,ue:4,ve:8,Se:16}},W={Y:100,ga:{Z:66,zb:1,qc:2,rc:4,Be:8,Ae:16,xb:32,wb:64,sb:128},Tb:{Z:66,INIT:0},ua:{Z:194,Ld:0,pb:16,Ac:32,yb:48,cc:0,dc:32},Va:{Z:162,Ie:0,fc:0,bc:0,ec:0,ac:0},ia:{xe:{Z:98},Ca:{Qb:0,Pb:1,Dc:2,Lc:4,Wb:5,Bc:6,Pe:7},Xa:16383}},pc=
{SI1978:V,VT100:W};V.INIT=[[V.Fc.Ha,V.za.Ha,V.Gc.Ha,0,0,0,0]];
W.INIT=[[W.Tb.INIT,W.ga.qc|W.ga.rc],[W.ua.cc,W.ua.dc],[W.Va.fc,W.Va.bc,W.Va.ec,W.Va.ac],[0,0,0,0,[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11776,11984,11888,11776,11808,11776,12E3,12E3,11901,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11904,11776,11784,11918,11808,11984,11856,11776,11808,11776,12E3,12E3,11881,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]];V.bb={0:U.prototype.Xc,1:U.prototype.Yc,2:U.prototype.Zc,3:U.prototype.Wc};
V.cb={2:U.prototype.ed,3:U.prototype.gd,4:U.prototype.fd,5:U.prototype.hd,6:U.prototype.jd};W.bb={66:U.prototype.$c};W.cb={66:U.prototype.kd,98:U.prototype.nd,162:U.prototype.md,194:U.prototype.ld};ya(function(){for(var a=A(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new U(d);Ma(d,c)}});
function uc(a){u.call(this,"ROM",a);this.a=null;this.g=a.addr;this.b=a.size;this.f=a.alias;this.c=a.file;this.h=ba(this.c);if(this.c){a=this.c;var b=da(this.h);"json"!=b&&"hex"!=b&&(a=fa()+"/api/v1/dump?file="+this.c+"&format=bytes&decimal=true");var c=this;ma(a,null,!0,function(a,b,f){vc(c,a,b,f)})}}m(uc,u);uc.prototype.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;wc(this)};uc.prototype.ba=function(){this.sa&&(this.J&&this.J.a(this.id,this.g,this.b,this.sa),delete this.sa);return!0};
uc.prototype.fa=function(){return!0};
function vc(a,b,c,d){if(d)a.G("Unable to load system ROM (error "+d+": "+b+")");else{Ha(a.Ia,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.a=f;else if(g)for(a.a=Array(4*g.length),d=c=0;c<g.length;c++)a.a[d++]=g[c]&255,a.a[d++]=g[c]>>8&255,a.a[d++]=g[c]>>16&255,a.a[d++]=g[c]>>24&255;else a.a=e;a.sa=e.symbols;if(!a.a.length){r("Empty ROM: "+b);return}if(1==a.a.length){r(a.a[0]);return}}catch(h){a.G("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.a=Array(b.length),e=0;e<b.length;e++)a.a[e]=aa(b[e]);wc(a)}}
function wc(a){if(!Na(a))if(!a.c)B(a);else if(a.a&&a.u){a.b||(a.b=a.a.length);if(a.a.length!=a.b){var b="ROM size ("+q(a.a.length,8,!0)+") does not match specified size ("+q(a.b,8,!0)+")";a.i.error=!0;a.G(b)}else{b=a.g;if(Wa(a.u,b,a.b,nb)){var c;for(c=0;c<a.a.length;c++)cb(a.u,b+c,a.a[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.f?b.push(a.f):null!=a.f&&a.f.length&&(b=a.f);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.u,g=d.b,h=[],l=d.g>>>f.b;0<g&&l<f.a.length;)h.push(f.a[l++]),g-=f.c;f=d.u;
d=d.b;g=0;for(e>>>=f.b;0<d&&e<f.a.length;){l=h[g++];if(!l)break;f.a[e++]=l;d-=f.c}}delete a.a}}B(a)}}ya(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new uc(d);Ma(d,c)}});
function xc(a){u.call(this,"RAM",a);this.sa=this.b=null;this.f=a.addr;this.g=a.size;this.Aa=a.load;this.ta=a.exec;this.c=!1;this.a=a.file;this.h=ba(this.a);if(this.a){a=this.a;var b=da(this.h);"json"!=b&&"hex"!=b&&(a=fa()+"/api/v1/dump?file="+this.a+"&format=bytes&decimal=true");var c=this;ma(a,null,!0,function(a,b,f){f?c.G("Unable to load RAM resource (error "+f+": "+a+")"):(Ha(c.Ia,a,b),(a=na(a,b))?(c.b=a.W,c.sa=a.sa,null==c.Aa&&(c.Aa=a.Aa),null==c.ta&&(c.ta=a.ta)):c.a=null,yc(c))})}}m(xc,u);
xc.prototype.qa=function(a,b,c,d){this.u=b;this.m=c;this.J=d;yc(this)};xc.prototype.ba=function(){return!0};xc.prototype.fa=function(){return!0};
function yc(a){!a.c&&a.g&&Wa(a.u,a.f,a.g,1)&&(a.c=!0);if(!Na(a)){if(!a.c)r("No RAM allocated");else if(a.a){if(!a.b||!a.u)return;var b=a.f;null!==a.Aa&&(b=a.Aa);for(var c=0;c<a.b.length;c++)cb(a.u,b+c,a.b[c]);if(null!==a.ta){if(a.ta==zc){for(c=0;c<Ac.length;c++)cb(a.u,Ac[c],118);Rb(a.m,function(a){return function(b){if(0<=Ac.indexOf(b)){var c=!1,d=a.m,e=a.J;if(b==Bc)switch(c=!0,d.c){case Cc:Dc(a,String.fromCharCode(d.f));break;case Ec:for(var l=Yb(d),n="",v=255;v--;){var z=M(a.m,l++);if(36==z)break;
n+=String.fromCharCode(z)}Dc(a,n);break;default:c=!1}c?nc.call(d):e&&(a.aa("\nCP/M vector "+q(b,4,!0)),F(d,b),Cb(e));b=!0}else b=!1;return b}}(a))}Tb(a.m,a.ta)}delete a.b}B(a)}}xc.prototype.reset=function(){};function Dc(a,b){b=b.replace(/\r/g,"");a.pa&&(a.pa.value+=b,a.pa.scrollTop=a.pa.scrollHeight)}var Bc=5,Cc=2,Ec=9,zc=256,Ac=[0,Bc];ya(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new xc(d);Ma(d,c)}});
function Fc(a){u.call(this,"Keyboard",a);(a=a.model)&&!Gc[a]&&Ca("Unrecognized Keyboard8080 model: "+a);this.a=Gc[a]||{};this.reset();B(this)}m(Fc,u);k=Fc.prototype;
k.S=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.w[e]){if("led"==a&&this.a.Ja[b])return this.w[e]=c,!0;switch(b){case "kbd":case "screen":return c.onkeydown=function(a){return Hc(d,a,!0)},c.onkeyup=function(a){return Hc(d,a,!1)},c.onkeypress=function(a){a=a.keyCode;a>=p.Ua&&a<=p.ib?d.c&(Ic|Jc)||(d.c|=Jc,Kc(d,20,!0),Lc(d)):a>=p.Oc&&a<=p.z&&d.c&Jc&&(d.c&=~Jc,Kc(d,20,!1),Lc(d));return!0},c.onpaste=function(a){a:{if(d.g&&d.g.Ba&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),
a=a.clipboardData||window.clipboardData)){Mc(d.g,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.a.Ea&&void 0!==this.a.Ea[b])return this.w[e]=c,c.onclick=function(a,b){return function(c){c.preventDefault&&c.preventDefault();Kc(a,b,!0,!0)}}(this,this.a.Ea[b]),!0}}return!1};k.qa=function(a,b,c,d){this.F=a;this.m=c;this.J=d;var e=this;this.v=Ib(this.m,function(){Nc(e)});this.N=C(a,"ChipSet");this.g=C(a,"SerialPort");fb(b,this,this.a.bb);gb(b,this,this.a.cb)};
k.ba=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.fa=function(a){return a?this.save():!0};k.reset=function(){this.b=[];this.c=0;this.a.INIT&&!this.restore(this.a.INIT)&&this.G("reset error")};k.save=function(){var a=new G(this);switch(this.a.Y){case X.Y:a.set(0,[this.l,this.j,this.h,this.o,-1])}return a.data()};
k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.a.Y){case Oc.Y:return!0;case X.Y:return this.l=b[0],Lc(this,this.l&X.ea.ub),this.j=b[1],this.h=b[2],this.o=b[3],this.f=b[4],!0}return!1};function Lc(a,b){var c;null!=b?a.s=b:b=a.s;for(var d in a.a.Ja)if(c="led-"+d,c=a.w[c]){var e=a.a.Ja[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+q(16711680,6):"#000000"}if(c=a.w["led-caps-lock"])c.style.backgroundColor=a.c&Jc?"#"+q(65280,6):"#000000"}
function Hc(a,b,c){var d=!0,e=b.keyCode,f=2==b.location,g=0;switch(e){case 16:g=f?Pc:Qc;break;case 17:g=f?Rc:Sc;break;case 18:g=f?Tc:Uc;break;case 91:g=f?Wc:Xc;break;case 20:g=Jc}g&&(a.c=c?a.c|g:a.c&~g);var h;a:if(e=a.a.ob[e]||e,a.a.hb[e])h=e;else{for(h in a.a.Ea)if(a.a.Ea[h]===e)break a;h=null}h&&!b.metaKey&&(d=!1,a.c&(Yc|Zc)&&(13==h?(h=118,d=!0):8==h&&(h=46,d=!0),d&&(a.c=c?a.c|Zc:a.c&~Zc)),d=Kc(a,h,c),(!(h>=p.Ua&&h<=p.ib)||a.c|$c)&&b.preventDefault&&b.preventDefault());return d}
function Kc(a,b,c,d){var e;a:{for(e=0;e<a.b.length;e++)if(a.b[e].nb==b)break a;e=-1}if(c)0>e?a.b.push({nb:b,lb:Date.now(),$a:d||!1}):(a.b[e].lb=Date.now(),a.b[e].$a=d||!1),d&&Nc(a);else if(0<=e){if(!a.b[e].$a&&(d=a.b[e].lb)&&Date.now()-d<ad)return a.b[e].$a=!0,Nc(a),!0;a.b.splice(e,1)}if(a.N){d=0;switch(b){case "1p":d=V.za.uc;break;case "2p":d=V.za.yc;break;case "coin":d=V.za.Vb;break;case "left":d=V.za.wc;break;case "right":d=V.za.xc;break;case "fire":d=V.za.vc}d&&(a=a.N,b=d,a.f&=~b,c&&(a.f|=b))}return!0}
function Nc(a){for(var b=0,c=-1;b<a.b.length;){if(a.b[b].$a){var d=a.b[b].nb,e=ad-(Date.now()-a.b[b].lb);if(0<e){if(0>c||c>e)c=e}else{Kc(a,d,!1);b=0;continue}}b++}0<=c&&Jb(a.m,a.v,c)}k.ad=function(){var a=this.j;0<=this.f&&(this.f<this.b.length?(a=this.b[this.f],this.f++,a=X.hb[a.nb],a&128&&(a&=127)):(this.f=-1,a=X.ic),this.j=a,kc(this.m,1));return a};k.od=function(a,b){this.l=b;this.h=!0;this.o=Gb(this.m);Lc(this,b&X.ea.ub);b&X.ea.Ec&&(this.f=0,kc(this.m,1))};
var Pc=1,Qc=2,Ic=3,Rc=4,Sc=8,$c=12,Tc=16,Uc=32,Yc=48,Wc=64,Xc=128,Jc=512,Zc=4096,ad=50,bd={};bd[p.Ua]=37;bd[p.rb]=39;bd[p.tb]=32;
var Oc={Y:1978.1,hb:{},ob:bd,Ja:{},Ea:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},Z={},X={Y:100,hb:(Z[8]=3,Z[p.tc]=5,Z[p.sc]=6,Z[p.Nc]=7,Z[p.Hc]=8,Z[p.Kc]=9,Z[p.Q]=10,Z[39]=16,Z[221]=20,Z[219]=21,Z[p.$b]=22,Z[p.Ic]=23,Z[p.zc]=24,Z[p.E]=25,Z[49]=26,Z[37]=32,Z[40]=34,Z[117]=35,Z[19]=35,Z[192]=36,Z[189]=37,Z[57]=38,Z[55]=39,Z[52]=40,Z[51]=41,Z[27]=42,Z[38]=48,Z[114]=49,Z[112]=50,Z[46]=51,Z[187]=52,Z[48]=53,Z[56]=54,Z[54]=55,Z[53]=56,Z[50]=57,Z[9]=58,Z[103]=64,Z[115]=65,Z[113]=66,Z[96]=67,Z[118]=
68,Z[220]=69,Z[p.tb]=70,Z[p.hc]=71,Z[p.Yb]=72,Z[p.Xb]=73,Z[p.Ua]=74,Z[104]=80,Z[2013]=81,Z[98]=82,Z[97]=83,Z[222]=85,Z[186]=86,Z[p.gc]=87,Z[p.Zb]=88,Z[p.rb]=89,Z[p.Cc]=90,Z[110]=96,Z[116]=97,Z[101]=98,Z[100]=99,Z[13]=100,Z[190]=101,Z[188]=102,Z[p.pc]=103,Z[p.Sb]=104,Z[p.Mc]=105,Z[119]=106,Z[105]=112,Z[99]=113,Z[102]=114,Z[109]=115,Z[191]=117,Z[p.oc]=118,Z[p[" "]]=119,Z[p.Jc]=120,Z[p.Ub]=121,Z[p.ib]=122,Z[120]=123,Z[17]=124,Z[16]=125,Z[20]=126,Z),ob:{},Ja:{},Ea:{"num-comma":116,"break":117,"line-feed":118,
"no-scroll":119,setup:120},Rb:{Z:130,INIT:127},ea:{Z:130,mc:1,lc:2,kc:4,jc:8,nc:16,vb:32,ub:63,Ec:64,Kd:128,INIT:0},ic:127};X.Ja={l4:X.ea.mc,l3:X.ea.lc,l2:X.ea.kc,l1:X.ea.jc,locked:X.ea.nc,local:X.ea.vb,online:~X.ea.vb,"caps-lock":Jc};var Gc={SI1978:Oc,VT100:X};X.INIT=[[X.ea.INIT,X.Rb.INIT,!1,0,-1]];X.bb={130:Fc.prototype.ad};X.cb={130:Fc.prototype.od};ya(function(){for(var a=A(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Fc(d);Ma(d,c)}});
function cd(a,b,c,d,e){u.call(this,"Video",a);var f=this;this.Da=ua("Gecko/");var g=["","moz","ms","webkit"];this.A=a.screenWidth;this.s=a.screenHeight;this.ca=a.bufferAddr;this.Pc=a.bufferRAM;var h=a.bufferFormat;this.P=h&&dd[h.toUpperCase()]||ed;this.C=a.bufferCols;this.R=a.bufferRows;this.va=this.M=a.cellWidth||1;this.K=a.cellHeight||1;this.V=null;this.ya=!1;this.da=a.bufferBits||1;this.Qc=a.bufferLeft||0;if(this.b=a.bufferRotate)this.b=this.b%360,0<this.b&&(this.b-=360),-90!=this.b&&(this.G("unsupported buffer rotation: "+
this.b),this.b=0);this.ha=a.interruptRate;this.Na=a.refreshRate||60;this.o=b;this.c=c;this.L=(this.Tc=d)||b||null;this.jb=this.A;this.Ob=this.s;this.wa=this.A/this.C|0;this.xa=this.s/this.R|0;1<this.K&&(this.R++,this.la=0,this.na=!1);b=a.smoothing;(c=va("smoothing"))&&(b="true"==c);if(null!=b)for(c=0;c<g.length;c++)if(d=(d=g[c])?d+"ImageSmoothingEnabled":"imageSmoothingEnabled",void 0!==this.c[d]){this.c[d]=b;break}if(this.f=a.screenRotate)this.f=this.f%360,0<this.f&&(this.f-=360),-90!=this.f?(this.G("unsupported screen rotation: "+
this.f),this.f=0):(this.c.translate(0,this.s),this.c.rotate(this.f*Math.PI/180),this.c.scale(this.s/this.A,this.A/this.s));if(this.a=e)if(this.a.Ga=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.a.Ga){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){fd(f,!!(document.fullscreenElement||document.msFullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement))},!1);
break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){fd(f,null)},!1);break}}if(this.D=a.fontROM)"json"!=da(this.D)&&(this.D=fa()+"/api/v1/dump?file="+this.D+"&format=bytes"),ma(this.D,null,!0,function(a,b,c){gd(f,a,b,c)});this.ra={}}m(cd,u);
function sc(a){a.j=a.C*a.M;a.B=a.R*a.K;var b=a.j,c=a.B;a.b&&(b=a.B,c=a.j);a.v=0;if(!a.Pc&&(a.v=(a.j*a.da>>3)*a.B,!Wa(a.u,a.ca,a.v,3)))return!1;a.v?(a.Fa=a.c.createImageData(b,c),a.La=16/a.da|0,hd(a,a.v>>1)):hd(a,(a.C+1)*a.R);a.l=document.createElement("canvas");a.l.width=b;a.l.height=c;a.ma=a.l.getContext("2d");a.H={};a.O=1<<a.da;a.I=Array(a.O+id);a.I[0]=[0,0,0,255];a.I[1]=[255,255,255,255];a.P==jd&&(a.I[a.O+kd]=[255,255,0,255],a.I[a.O+ld]=[0,255,0,255]);a.P==md&&(a.Gb=60,a.oa=!1,a.X=Array(a.C));
return!0}cd.prototype.qa=function(a,b,c,d){this.F=a;this.u=b;this.m=c;this.J=d;sc(this);if(this.h=C(a,"Keyboard")){for(var e in this.ra)this.h.S("led",e,this.ra[e]);this.o&&this.h.S(this.Tc?"textarea":"canvas","screen",this.L)}var f=this;this.Oa=Ib(this.m,function(){Nb(f)});Jb(this.m,this.Oa,1E3/Math.max(this.Na,this.ha));this.Ma=0;this.D||B(this)};
function gd(a,b,c,d){if(d)a.G("Unable to load font ROM (error "+d+": "+b+")");else{Ha(a.Ia,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){r("Empty font ROM: "+b);return}if(1==f.length){r(f[0]);return}if(2048==f.length)a.V=f,tc(a);else{a.G("Unrecognized font data length ("+f.length+")");return}}catch(g){a.G("Font ROM data error: "+g.message);return}(a.c||a.J)&&B(a)}}
function tc(a){a.V&&(a.ya=a.P==md,a.H[nd]=[od(a,a.M,a.K),od(a,a.M,a.K,a.oa)],a.H[pd]=[od(a,2*a.M,a.K),od(a,2*a.M,a.K,a.oa)],a.H[qd]=a.H[rd]=[od(a,2*a.M,2*a.K),od(a,2*a.M,2*a.K,a.oa)])}
function od(a,b,c,d){var e=8>=a.va?8:16,f=8<e?15:0,g=a.V.length/e,h=!1===d,l={M:b,K:c};l.canvas=document.createElement("canvas");l.canvas.width=16*b;l.canvas.height=g/16*c;l.context=l.canvas.getContext("2d");for(var n=l.context.createImageData(b,c),v=0;v<g;v++){for(var z=0,K=z;z<a.K;z++)for(var x=v*e+(f+z&e-1),x=d&&8==z?255:a.V[x],t=0;t<c/a.K;t++){for(var E=0,S=0,Y=S;S<a.M;S++){for(var ca=x&128>>(7<S?7:S),E=a.ya&&!ca&&E?E:ca,ta=0;ta<b/a.M;ta++)h&&(E=!E),sd(a,n,Y,K,E?1:0),Y++;E=ca}K++}l.context.putImageData(n,
(v&15)*b,(v>>4)*c)}return l}cd.prototype.ba=function(){return!0};cd.prototype.S=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.ra[b]=c,!0;switch(b){case "fullScreen":return this.w[b]=c,this.a&&this.a.Ga?c.onclick=function(){d.Ga()}:c.parentNode.removeChild(c),!0}return!1};
cd.prototype.Ga=function(){var a=!1;if(this.a){if(this.a.Ga){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.A/this.s;b>c&&(a=Math.round(c/b*100)+"%")}this.Da?(this.o.style.width=a,this.o.style.width=a,this.o.style.display="block",this.o.style.margin="auto"):(this.a.style.width=a,this.a.style.height="auto");this.a.style.backgroundColor="black";this.a.Ga();a=!0}this.L&&this.L.focus()}return a};
function fd(a,b){!b&&a.a&&(a.Da?a.o.style.width=a.o.style.height="":a.a.style.width=a.a.style.height="")}function hd(a,b){a.Ka=b;a.N=!1;if(void 0===a.g||a.g.length!=a.Ka)a.g=Array(a.Ka)}function sd(a,b,c,d,e){d=a.b?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.P==jd&&(208<=c&&236>c?e=a.O+kd:28<=c&&72>c&&(e=a.O+ld));a=a.I[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function Nb(a,b){var c=!0;if(!b){a.ha&&(120==a.ha?a.Ma&1?(kc(a.m,2),c=!1):kc(a.m,1):kc(a.m,4));if(c&&a.N&&a.v){for(var d=a.u,e=a.v,f=!0,g=a.ca>>>d.b;0<e&&g<d.a.length;)d.a[g].ja&&(d.a[g].ja=f=!1,d.a[g].Db=!0),e-=d.c,g++;f&&(c=!1)}Jb(a.m,a.Oa,1E3/Math.max(a.Na,a.ha));a.Ma++}if(c)if(1<a.M)switch(a.P){case md:for(var c=a.ca,d=-1,e=0,f=60==a.Gb?2:5,h=g=0,l=-1;e<a.R;){var n=0,v=c,z=d,K=a.C;for(z!=nd&&(K>>=1);;){var x=ab(a.u,v++);if((x&td)==td){var t=ab(a.u,v++),d=t&ud,c=(t&vd)<<8|ab(a.u,v),c=c+(t&wd?xd:
yd);break}if(n<K)a.X[n++]=x;else break}if(f)f--;else{for(;n<a.X.length;)a.X[n++]=0;if(0<=z)for(v=a.N&&a.g[g]==K,a.g[g++]=K,K=0;K<n;K++){x=a.X[K];if(!v||x!==a.g[g]){a.g[l=g]=x;var t=a,E=a.ma,S=x&127;if(x=t.H[z][x&128?1:0]){var Y=(S&15)*x.M,S=(S>>4)*x.K,ca,ta,Ua,mb,Vc=x.M,Wb=x.K;E?(ca=K*t.M,ta=e*t.K,Ua=t.M,mb=t.K):(ca=K*t.wa,ta=e*t.xa,Ua=t.wa,mb=t.xa);x.M>t.M&&(ca*=2,Ua*=2);x.K>t.K&&(z==rd&&(S+=t.K),Wb=t.K);E?E.drawImage(x.canvas,Y,S,Vc,Wb,ca,ta,Ua,mb):(ca+=0,ta+=0,t.c.drawImage(x.canvas,Y,S,Vc,Wb,
ca,ta,Ua,mb))}h++}g++}e++}}a.N=!0;!b&&a.na&&1==h&&(a.g[l]=-1,h=0);a.na=!1;(h||b)&&a.ma&&a.c.drawImage(a.l,0,a.la,a.j,a.B-a.K,0,0,a.jb,a.Ob)}else{e=a.ca;f=e+a.v;l=h=g=0;b=a.j;n=0;c=a.B;z=d=0;v=a.da;K=(1<<v)-1;a.Qc&&(v=-v,z=16+v);for(;e<f;){t=a.u;E=e;x=E&t.f;Y=(E&t.g)>>>t.b;t=x!=t.f?t.a[Y].Jb(x,E):t.a[Y++].eb(x,E)|t.a[Y&t.o].eb(0,E+1)<<8;if(a.N&&t===a.g[g])h+=a.La;else{a.g[g]=t;(E=z)&&(t=t>>8|(t&255)<<8);h<b&&(b=h);for(x=a.La;x--;)Y=t>>E&K,sd(a,a.Fa,h++,l,Y),E+=v;h>n&&(n=h);l<c&&(c=l);l>=d&&(d=l+1)}e+=
2;g++;if(h>=a.j&&(h=0,l++,l>a.B))break}a.N=!0;b<a.j&&(e=n-b,d-=c,a.b&&(f=b,g=e,b=c,e=d,c=a.j-(f+g),d=g),a.ma.putImageData(a.Fa,0,0,b,c,e,d),a.c.drawImage(a.l,0,0,a.l.width,a.l.height,0,0,a.A,a.s))}}var kd=0,ld=1,id=2,ed=0,jd=1,md=2,dd={SI1978:jd,VT100:md},nd=96,pd=64,qd=32,rd=0,td=127,vd=15,wd=16,ud=96,xd=8192,yd=16384;
ya(function(){for(var a=A(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=y(c),e=document.createElement("canvas");if(!e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=(window?window.navigator.userAgent:"").indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||va("aspect"));f&&.3<=f&&3.33>=f&&(xa("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");ua("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var g=e.getContext("2d"),d=new cd(d,e,g,f,c);Ma(d,c)}});
function zd(a){u.call(this,"SerialPort",a);this.H=+a.adapter;switch(this.H){case 0:this.I=0;this.O=2;break;default:r("Unrecognized serial adapter #"+this.H);return}this.b=this.c=null;this.L=a.tabSize;this.D=a.charBOL;this.f=0;this.B=!1;this.l=!0;var b=a.binding;if("console"==b)this.c="";else{var c;a=Ad;b&&(void 0===c&&(c="Panel"),(c=La(c,this.id))&&(b=c.w[b])&&this.S(null,a,b))}this.g="";this.a=this.Ba=this.s=null;this.exports={connect:this.Fb,receiveData:this.mb,receiveStatus:this.yd}}m(zd,u);
k=zd.prototype;
k.S=function(a,b,c,d){var e=this;switch(b){case Ad:return this.w[b]=this.b=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64<b&&(b-=64),Bd(e,b);return!0},c.onkeypress=function(a){a=a||window.event;Bd(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.w[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.mb(d);return!0},
!0}return!1};k.qa=function(a,b,c,d){this.F=a;this.u=b;this.m=c;this.J=d;var e=this;this.P=Ib(this.m,function(){e.mb()});this.R=Ib(this.m,function(){Mc(e)});this.N=C(a,"ChipSet");fb(b,this,Cd,this.I);gb(b,this,Dd,this.I);B(this)};
k.Fb=function(a){if(!this.a){var b=yb(this.F,"connection");if(b){var c=b.split("->");if(2==c.length){var d=ia(c[0]);if(d!=this.Wa)return;c=ia(c[1]);if(this.a=Ka(c)){var e=this.a.exports;if(e){var f=e.connect;f&&f.call(this.a,this.l);if(this.Ba=e.receiveData){this.l=a;this.s=e.receiveStatus;this.status(this.Ia+"."+d+" connected to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
k.ba=function(a,b){if(!b)if(this.Fb(this.l),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.fa=function(a){return a?this.save():!0};k.reset=function(){Ed(this)};k.save=function(){var a=new G(this),b=0,c=[];c[b++]=this.o;c[b++]=this.A;c[b++]=this.C;c[b++]=this.T;c[b++]=this.h;c[b++]=this.j;c[b]=this.v;a.set(0,c);return a.data()};k.restore=function(a){return Ed(this,a[0])};
function Ed(a,b){var c=0;b||(b=Fd);a.o=b[c++];a.A=b[c++];a.C=b[c++];a.T=b[c++];a.h=b[c++];a.j=b[c++];a.v=b[c];return!0}function Gd(a,b){var c=a.v&b;b&15||(c>>=4);b=Hd[c];c=((a.h&Id)>>2)+6;a.h&Jd&&c++;c+=((a.h&Kd)>>6)+1>>1;return 1E3/Math.round(b/c)}function Bd(a,b){return a.B||a.T&Ld?!1:(a.A=b,a.T|=Ld,kc(a.m,a.O),!0)}
k.mb=function(a){null!=a&&(this.g="number"!=typeof a?a:this.g+String.fromCharCode(a));this.g&&(Bd(this,this.g.charCodeAt(0))&&(this.g=this.g.substr(1)),this.g&&this.m&&Jb(this.m,this.P,Gd(this,Md)));return!0};k.yd=function(a){this.T&=~Nd;a&64&&(this.T|=Nd)};function Mc(a,b){a.T=a.T|rc|Od;b&&a.Ba&&a.Ba.call(a.a,b)}k.Vc=function(){var a=this.A;this.T&=~Ld;return a};k.Uc=function(){return this.T};
k.dd=function(a,b){this.C=b;this.T&=~(rc|Od);if(19==b)this.B=!0;else if(17==b)this.B=!1;else if(this.Ba&&this.Ba.call(this.a,b),this.b)if(8==b)this.b.value=this.b.value.slice(0,-1),0<this.f&&this.f--;else{var c;13!=b&&10!=b&&(c=ja[b]);a=c=c?"<"+c+">":String.fromCharCode(b);c=a.length;9==b?(b=this.L||8,c=b-this.f%b,this.L&&(a=" ".slice(0,c))):13==b&&(this.f=c=0,a="\n");this.D&&!this.f&&c&&(a=String.fromCharCode(this.D)+a);this.b.value+=a;this.b.scrollTop=this.b.scrollHeight;
this.f+=c}else if(null!=this.c){if(10==b||1024<=this.c.length)this.aa(this.c),this.c="";10!=b&&(this.c+=String.fromCharCode(b))}this.m&&Jb(this.m,this.R,Gd(this,Pd))};k.cd=function(a,b){this.o?(this.s&&(b^this.j)&(Qd|Rd)&&(a=0,this.l?(a|=b&Qd?32:0,a|=b&Rd?320:0):(a|=b&Qd?16:0,a|=b&Rd?1048576:0),this.s.call(this.a,a)),this.j=b,this.j&Sd&&(this.o=!1)):(this.h=b,this.o=!0)};k.bd=function(a,b){this.v=b};
var Id=12,Jd=16,Kd=192,Rd=2,Qd=32,Sd=64,rc=1,Ld=2,Od=4,Nd=128,Md=15,Pd=240,Hd=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Fd=[!1,0,0,133,142,39,238],Ad="buffer",Cd={0:zd.prototype.Vc,1:zd.prototype.Uc},Dd={0:zd.prototype.dd,1:zd.prototype.cd,2:zd.prototype.bd};ya(function(){for(var a=A(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new zd(d);Ma(d,c)}});
function Td(a,b,c){u.call(this,"Computer",a);this.i.U=!1;Ud(this,b);this.v=yb(this,"autoPower",a);this.c=0;this.H=a.busWidth||a.buswidth;this.a=Vd;this.o=null;this.j=this.C=!1;this.I=yb(this,"url")||"";(Math.random()+.1).toString(36);this.b=Wd(this);if(this.m=La("CPU",this.id)){this.J=La("Debugger",this.id);this.g=[];for(b=null;b=C(this,"Video",b);)this.g.push(b);this.u=new Ta({id:this.Ia+".bus",busWidth:this.H},this.m,this.J);var d,e=Ja(this.id);if((this.h=La("Panel",this.id))&&this.h.pa)for(b=0;b<
e.length;b++)d=e[b],d.G=this.h.G,d.aa=this.h.aa,d.pa=this.h.pa;this.aa("PC8080 v1.31.1\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>");for(b=0;b<e.length;b++)d=e[b],d.qa&&d.qa(this,this.u,this.m,this.J);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.l=d:this.a=parseInt(d,10));var f;if(a=yb(this,"state")||(f=!0,a.state))b=this.A=a,f||(this.j=!0,this.a=Vd),this.a&&(this.s=new G(this,"1.31.1"),Xd(this.s)?b=null:delete this.s);
!b&&this.a&&(b=Yd(this))&&(this.j=!0);if(b){var g=this;ma(b,null,!0,function(a,b,c){c?(g.l=null,g.j=!1,g.G("Unable to load machine state from server (error "+c+(b?": "+ia(b):"")+")")):(g.o=b,g.C=!0);B(g)})}else B(this);this.w.power||(this.v=!0);!c&&this.v&&Zd(this,this.Ra)}else r("Unable to find CPU component")}m(Td,u);function Ud(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){r(d.message+" ("+c+")")}}a.D=b}
function yb(a,b,c){var d=b.toLowerCase(),d=va(b)||va(d);void 0===d&&a.D&&(d=a.D[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function Zd(a,b,c){for(var d=Ja(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!Na(f)){Na(f,function(){Zd(a,b,c)});return}}b.call(a,c)}
function $d(a,b){var c=new G(a,"1.31.1",ae);if(Xd(c)&&be(c)){var d=c.get(ce),e=b?b.get(ce):"unknown";d!=e&&(a.G("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}k=Td.prototype;
k.Ra=function(a){void 0===a&&(a=this.a||(this.o?de:Vd));if(!this.c){this.c++;var b=!1,c=!1;this.B=!1;var d=this.s||new G(this,"1.31.1");if(a==ee)b=!0;else if(a>Vd){if(Xd(d,this.o)){this.f=new G(this,"1.31.1",fe);Xd(this.f)&&(ge(this,d),a=he,ie(this.f));this.f.set(ce,la());je(this.f);var e=this.a&&!this.j;if(a==de||oa("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=be(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Xd(d,g):("error"==f&&"no machine state"!=
g?(this.G("Error: "+g),"unable to verify user"==g&&(sa(ke,""),this.b=null)):this.aa(f+": "+g),ie(d),Xd(d)?(c=be(d),e=!0):c=!1))}e&&$d(this,c?d:null)}else a==he&&d.clear()}else $d(this);delete this.o;delete this.s}e=Ja(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.m&&(c=le(this,g,d,b,c));b=[d,a,c];a!=ee?Zd(this,this.Cb,b):this.Cb(b)}};
function le(a,b,c,d,e){if(!b.i.U){b.i.U=!0;if(b.ba){var f=null;e&&((f=c.get(b.id))||(f=c.get(b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.ba(f,d)&&f&&(r("Unable to restore state for "+b.type),a.A&&!a.C?(c.clear(),a.a=Vd,window&&window.location.reload()):a.B=!0,b.ba(null),e=!1)}if(!d&&b.Ab)for(a=b.Ab.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
k.Cb=function(a){var b=a[0],c=0>a[1];a=a[2];this.N=!0;this.i.U=!0;var d=this.w.power;d&&(d.textContent="Shutdown");this.m&&(le(this,this.m,b,c,a),this.m.Qa());this.B&&(ge(this,b),b.clear());!c&&this.f&&(this.f.clear(),delete this.f);this.c=0};
function ge(a,b){if(oa("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.b||"";b=b.toString();var d={app:"PC8080",ver:"1.31.1"};d.url=a.I;d.user=c;d.type="bug";d.data=b;ma("http://www.pcjs.org/api/v1/report",d,!0)}}
function me(a,b,c){var d,e="none";if(a.c)return null;a.c--;var f=new G(a,"1.31.1"),g=new G(a,"1.31.1",ae),h=la();g.set(ce,h);f.set(ce,h);f.set(ne,"1.31.1");f.set(oe,window?window.location.href:null);f.set(pe,window?window.navigator.userAgent:"");a.m&&a.m.fa&&(c&&Cb(a.m),d=a.m.fa(b,c),"object"===typeof d&&f.set(a.m.id,d),c&&(a.m.i.U=!1,!1===d&&(e=null)));for(var h=Ja(a.id),l=0;l<h.length;l++){var n=h[l];n.i.U&&(n.fa&&(d=n.fa(b,c),"object"===typeof d&&f.set(n.id,d)),c&&(n.i.U=!1,!1===d&&(e=null)))}e&&
(c?(h=d=!1,b?(a.b&&qe(a,a.b,f.toString()),je(g)&&je(f)||(e=null,d=h=!0)):a.a&&(d=!0,h=a.a==re),d&&f.clear(h)):e=f.toString());c&&(a.i.U=!1,b=a.w.power)&&(b.textContent="Power");a.c=0;return e}k.reset=function(){this.u&&this.u.reset&&this.u.reset();for(var a=Ja(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&c.reset&&c.reset()}};k.start=function(a,b){for(var c=Ja(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=Ja(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
k.S=function(a,b,c){var d=this;switch(b){case "power":return this.w[b]=c,c.onclick=function(){d.c||(d.i.U?me(d,!1,!0):Zd(d,d.Ra))},!0;case "reset":return this.w[b]=c,c.onclick=function(){if(d.i.U&&!d.c)if(d.a&&!d.l){var a=oa("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.A?window&&window.location.reload():d.Ra(Vd)}else d.reset(),d.m&&d.m.Qa()},!0;case "save":if(ea())c.parentNode.removeChild(c);else return this.w[b]=
c,c.onclick=function(){var a=Wd(d,!0);if(a){var b=!!(d.a&&!d.l||d.A),c=me(d,b);b?qe(d,a,c):d.G("Resume disabled, machine state not saved")}},!0}return!1};function Wd(a,b){var c=a.b;c||((c=ra(ke),void 0!==c)?!c&&b&&(b=null,window&&(b=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=b)&&((c=se(a,c))||a.G("The user ID is invalid.")):b&&a.G("Browser local storage is not available"));return c}
function se(a,b){a.b=null;b=ma(fa()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(sa(ke,b.data),a.b=b.data)}catch(d){r(d.message+" ("+c+")")}return a.b}function Yd(a){var b=null;a.b&&(b=fa()+"/api/v1/user?req=load&user="+a.b+"&state="+te(a,"1.31.1"));return b}
function qe(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=te(a,"1.31.1");d.data=c;b=ma(fa()+"/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.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),sa(ke,""),a.b=null)}}
function C(a,b,c){a=Ja(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}function Hb(a,b){if(a.g.length){var c=0,d=0;!b&&window&&(c=window.scrollX,d=window.scrollY);a=a.g[0];a.L&&a.L.focus();!b&&window&&window.scrollTo(c,d)}}
function Lb(a,b){a.m&&(a=a.m,a.Ma&&(b||!a.i.ka||a.i.Bb)&&(T(a,"A",a.b),T(a,"B",a.g),T(a,"C",a.c),T(a,"BC",Vb(a),4),T(a,"D",a.h),T(a,"E",a.f),T(a,"DE",Yb(a),4),T(a,"H",a.j),T(a,"L",a.l),T(a,"HL",H(a),4),T(a,"SP",a.A,4),T(a,"PC",a.s,4),b=Ub(a),T(a,"PS",b,4),T(a,"IF",b&512?1:0,1),T(a,"SF",b&128?1:0,1),T(a,"ZF",b&64?1:0,1),T(a,"AF",b&16?1:0,1),T(a,"PF",b&4?1:0,1),T(a,"CF",b&1?1:0,1)),b=a.w.speed)&&(b.textContent=a.i.ka&&a.R?a.R.toFixed(2)+"Mhz":"Stopped")}
var fe="failsafe",ae="validate",ce="timestamp",ne="version",oe="url",pe="browser",ke="user",ee=-1,Vd=0,de=1,he=2,re=3;ya(function(){for(var a=A(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=y(c),c=A(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=y(f),g=new Td(g,d,!0);Ma(g,f);g.v&&Zd(g,g.Ra)}});za.show.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=La("Computer",c.id))&&c.N&&!c.i.U&&c.Ra(ee)}});
za.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=La("Computer",c.id))&&c.i.U&&me(c,!(!c.a||c.l),!0)}});function G(a,b,c){this.id=a.id;this.J=a.J;this.b="";this.a={};this.m=this.u=!1;this.key=te(a,b,c);ie(this,a.Rc)}k=G.prototype;k.set=function(a,b){try{this.a[a]=b}catch(c){}};k.get=function(a){return this.a[a]||null};k.data=function(){return this.a};
function Xd(a,b){return b?(a.b=b,a.m=!0,a.u=!1,!0):a.m?!0:pa()&&(b=ra(a.key))?(a.b=b,a.m=!0):!1}function be(a){var b=!0;if(!a.u)try{a.a=JSON.parse(a.b),a.u=!0}catch(c){r(c.message||c),b=!1}return b}function je(a){var b=!0;if(pa()){var c=JSON.stringify(a.a);sa(a.key,c)||(r("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}k.toString=function(){return this.a?JSON.stringify(this.a):this.b};function ie(a,b){a.b="";a.a={};a.m=a.u=!1;b&&a.set("parms",b)}
k.clear=function(a){ie(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 te(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}var ue=0;
function ve(a,b,c,d,e,f){e("Loading "+a+"...");ma(a,null,!0,function(g,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),f(h,null)):we(h,a,b,c,d,e,f)})}
function we(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(Ha(c,b,a),(f=b)&&0>f.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(f=window.location.pathname+f),d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{",d+='url:"'+f+'"}',"object"==typeof resources&&(f=null),a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(f?' url="'+f+'"':"")));e||(a=a.replace(/(<xsl:variable name="APPNAME">).*?(<\/xsl:variable>)/,"$1PC8080$2"),
a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));f=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(f=new window.ActiveXObject("Microsoft.XMLDOM"),f.async=!1,f.loadXML(a)):f=(new window.DOMParser).parseFromString(a,"text/xml")}catch(v){f=null,a=v.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?xe(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
null)}
function od(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");ma(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],n,v=/( [a-z]+=)(['"])(.*?)\2/g;n=v.exec(f);)k=0>k.indexOf(n[1])?k.replace(">",n[0]+">"):k.replace(new RegExp(n[1]+"(['\"])(.*?)\\1"),n[0]);h[0]!=k&&(g=g.replace(h[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");
a=a.replace(d[0],g);od(a,b,c)}})}else c(a,null)}
function pd(a,b,c,d){function e(a){if(void 0===h){var b=g&&A(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ha(a))}function f(a){e("Error: "+a);k&&(--ld||Fa(!0));k=!1}var g,h,k=!0;ld++;Ia[a]={};try{if(g=document.getElementById(a)){var n;if("object"==typeof resources&&(n=resources.css)){var v=document.head||document.getElementsByTagName("head")[0],z=document.createElement("style");z.type="text/css";z.styleSheet?z.styleSheet.cssText=n:z.appendChild(document.createTextNode(n));v.appendChild(z)}c||
(c="/versions/pc8080/1.31.1/components.xsl");n=function(d,h){h?md(c,null,null,!1,e,function(d,k){k?(Ja(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--ld||Fa(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(k),(k=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(k,g),--ld||Fa(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?md(b,a,d,!0,e,n):nd(b,null,a,d,!1,e,n)}else f("missing machine element: "+a)}catch(I){f(I.message)}return k}window.embedPC8080=function(a,b,c,d){Fa(!1);return pd(a,b,c,d)};window.enableEvents=Fa;window.sendEvent=Ga;})();
function xe(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");ma(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],n,v=/( [a-z]+=)(['"])(.*?)\2/g;n=v.exec(f);)l=0>l.indexOf(n[1])?l.replace(">",n[0]+">"):l.replace(new RegExp(n[1]+"(['\"])(.*?)\\1"),n[0]);h[0]!=l&&(g=g.replace(h[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}g=g.replace(/<\?xml[^>]*>[\r\n]*/,"");
a=a.replace(d[0],g);xe(a,b,c)}})}else c(a,null)}
function ye(a,b,c,d){function e(a){if(void 0===h){var b=g&&A(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ga(a))}function f(a){e("Error: "+a);l&&(--ue||Da(!0));l=!1}var g,h,l=!0;ue++;Ia[a]={};try{if(g=document.getElementById(a)){var n;if("object"==typeof resources&&(n=resources.css)){var v=document.head||document.getElementsByTagName("head")[0],z=document.createElement("style");z.type="text/css";z.styleSheet?z.styleSheet.cssText=n:z.appendChild(document.createTextNode(n));v.appendChild(z)}c||
(c="/versions/pc8080/1.31.1/components.xsl");n=function(d,h){h?ve(c,null,null,!1,e,function(d,l){l?(Ha(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--ue||Da(!0)):f("transformNodeToObject failed"):document.implementation&&document.implementation.createDocument?(d=new XSLTProcessor,d.importStylesheet(l),(l=d.transformToFragment(h,document))?g.parentNode?(g.parentNode.replaceChild(l,g),--ue||Da(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?ve(b,a,d,!0,e,n):we(b,null,a,d,!1,e,n)}else f("missing machine element: "+a)}catch(K){f(K.message)}return l}window.embedPC8080=function(a,b,c,d){Da(!1);return ye(a,b,c,d)};window.enableEvents=Da;window.sendEvent=Fa;})();