pcjs/versions/pc8080/1.32.0/pc8080-dbg.js
2016-12-30 15:56:01 -08:00

289 lines
108 KiB
JavaScript

(function(){/*
http://pcjs.org/modules/shared/es6/dumpapi.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/es6/reportapi.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/es6/userapi.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/es6/keys.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/es6/strlib.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/es6/weblib.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/cpudef.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/messages.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/es6/state.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/es6/embed.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/es6/defines.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/es6/usrlib.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/es6/component.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/defines.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/panel.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/bus.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/memory.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/cpu.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/cpustate.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/cpuops.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/chipset.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/rom.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/ram.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/keyboard.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/video.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/serial.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/es6/debugger.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2017
*/
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 ya(a){window&&window.alert(a)}function Aa(a){var b=!1;window&&(b=window.confirm(a));return b}
function Ca(){if(null==Da){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}Da=a}return Da}function Ea(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function Fa(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}
function Ga(a){if(window){var b=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 Ha(a){if(!Ia){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," "))}Ia=c}return Ia[a]}function Ja(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}}function La(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Oa(a){Pa.init.push(a)}
function Qa(a){if(Ra)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Sa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Ta(a){!Ra&&a?(Ra=!0,Ua&&Va("init"),Wa&&Va("show")):Ra=a}function Va(a){Pa[a]&&Qa(Pa[a])}var Ia=null,Pa={init:[],show:[],exit:[]},Ua=!1,Wa=!1,Ra=!0,Da=null;La("onload",function(){Ua=!0;Qa(Pa.init)});La("onpageshow",function(){Wa=!0;Qa(Pa.show)});
La(Ga("Opera")||Ga("iOS")?"onunload":"onbeforeunload",function(){Qa(Pa.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;Xa.push(this)}
function ab(a,b,c){bb[a]&&b&&(bb[a][b]=c)}function Sa(a,b,c){!b&&ya&&ya((c?c+": ":"")+a)}function v(a){ya&&ya(a)}function cb(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Xa.length;b++){var d=Xa[b];a&&d.id.indexOf(a)||c.push(d)}return c}function db(a){if(void 0!==a){var b;for(b=0;b<Xa.length;b++)if(Xa[b].id===a)return Xa[b]}return null}
function eb(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<Xa.length;d++)if(c)c==Xa[d]&&(c=null);else if(!(a!=Xa[d].type||b&&Xa[d].id.indexOf(b)))return Xa[d]}return null}function fb(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){v(c.message+" ("+a+")")}return b}
function gb(a,b){b=hb(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=fb(f))&&g.binding&&a.ca(g.type,g.binding,f,g.value),l=h.length}}}}
function hb(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){Sa(a,b,c||this.type)};function ib(a,b){a.G.error=!0;a.aa(b)}function jb(a,b){b&&(a.G.ready?b():a.vb=b);return a.G.ready}function lb(a){if(!a.G.error&&(a.G.ready=!0,a.G.ready)){var b=a.vb;a.vb=null;b&&b()}}function mb(a,b){a.G.jb&&(b?a.G.Eb=!0:void 0===b&&a.i(a.toString()+" busy"));return a.G.jb}function nb(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 ob(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 pb(a,b){a.K&&ob(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),qb(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 bb=window?window.PCjs.Machines:{},Xa=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 sb="undefined"!==typeof ArrayBuffer,tb=[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],ub={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 vb(a){x.call(this,"Panel",a)}ba(vb,x);
vb.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)};vb.prototype.Ea=function(a,b,c,d){this.S=a;this.H=b;this.u=c;this.K=d;this.B=wb(a,"Keyboard")};vb.prototype.ua=function(a,b){b||xb();return!0};vb.prototype.wa=function(){return!0};
function xb(){for(var a=!1,b=hb(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=fb(d),f=db(e.id);f||(a=!0,f=new vb(e));gb(f,d);a&&lb(f)}}Oa(xb);
function yb(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;zb(a,this.K);this.b=Array(this.L);for(b=0;b<this.L;b++)this.b[b]=a;lb(this)}ba(yb,x);yb.prototype.reset=function(){};
yb.prototype.ua=function(a,b){b||this.reset();return!0};function Ab(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 Bb(Cb,e,f)}e=new z(e,p,a.w,d);zb(e,a.K,h);a.b[g++]=e;e=l+a.w;f-=p}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Db[d]+" at "+q(b)),!0):Bb(Eb,b,c)}
function Fb(a,b){return a.b[(b&a.C)>>>a.g].lb(b&a.j,b)}function Gb(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 Hb(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 Ib(a,b,c){a.b[(b&a.C)>>>a.g].nb(b&a.j,c&255,b)}function Jb(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 Kb(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 Lb(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 Ob(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]?ya&&ya("Input port "+q(l)+" already registered"):f.A[l]=[h,!1]}}function Pb(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]&&Qb(a.K,b,p)):a.K&&(qb(a.K,a,b,null,c),a.D&&Qb(a.K,b,p));e|=p<<f;f+=h<<3;b+=h;d-=h}return e}
function Rb(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 Sb(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]?ya&&ya("Output port "+q(l)+" already registered"):f.B[l]=[h,!1]}}
function Tb(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]&&Ub(a.K,b,l)}else a.K&&(qb(a.K,a,b,l,d),a.F&&Ub(a.K,b,l));f+=h<<3;b+=h;e-=h}}function Bb(a,b,c){v("Memory block error ("+a+": "+n(b)+","+n(c)+")");return!1}var Cb=1,Eb=2,Vb;if(sb){var Wb=new ArrayBuffer(2);(new DataView(Wb)).setUint16(0,256,!0);Vb=256===(new Uint16Array(Wb))[0]}else Vb=!1;var Xb=Vb;
function z(a,b,c,d){this.id=Yb+=2;this.b=null;this.J=a;this.mb=b;this.size=c||0;this.type=d||Zb;this.u=d==$b;zb(this);this.Ca=this.gc=!1;if(c)if(sb)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),ac(this,Xb?bc:cc);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;ac(this,dc)}else ac(this)}k=z.prototype;
k.save=function(){var a,b;if(sb)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(sb)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 ac(a,b){b||(b=fc);gc(a,b,void 0);hc(a,b,void 0)}function gc(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 hc(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++||hc(this,ic,!1):this.H++||gc(this,ic,!1)};function sc(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 zb(a,b,c){a.K=b;a.H=a.P=0;c&&((a.H=c.H)&&gc(a,ic,!1),(a.P=c.P)&&hc(a,ic,!1))}k.jc=function(){this.K&&ob(this.K,129)&&this.K.message("attempt to read invalid block %"+n(this.J),!0);return 255};
k.ob=function(a,b){this.K&&ob(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;tc(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;tc(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;tc(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;tc(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 Zb=0,$b=2,Db=["NONE","RAM","ROM","VID","H/W"],Yb=0,fc=[],dc=[z.prototype.Xd,z.prototype.fe,z.prototype.ae,z.prototype.je],ic=[z.prototype.Vd,z.prototype.de,z.prototype.Zd,z.prototype.he];if(sb)var cc=[z.prototype.Ud,z.prototype.ce,z.prototype.Yd,z.prototype.ge],bc=[z.prototype.Wd,z.prototype.ee,z.prototype.$d,z.prototype.ie];
function uc(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);lb(this)}ba(uc,x);k=uc.prototype;
k.Ea=function(a,b,c,d){this.S=a;this.H=b;this.K=d;for(b=0;b<vc.length;b++)(c=this.P[vc[b]])&&this.S.ca(null,vc[b],c);this.W=wb(a,"ChipSet");a=wc(a,"autoStart");null!=a&&(this.G.ib="true"==a?!0:"false"==a?!1:!!a);lb(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){xc(this);if(!this.restore(a))return!1;yc(this)}else this.reset();this.K?(a=this.K,a.i("Type ? for help with PC8080 Debugger commands"),zc(a),a.ea&&(b=a.ea,a.ea=null,Ac(a,b))):this.i("No debugger detected")}Bc(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 yc(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 Cc(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<=Dc(a)&&(a.na=a.sa=-1,yc(a),a.da(),c=!0);c&&a.i(Dc(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=cb(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);ya("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(){Ec(d,d.U<<1,!0)},c.textContent=this.Z.toFixed(2)+"Mhz",a=!0}return a};function Fc(a,b,c){a.la+=b;c&&(a.ga=a.b=0)}function Gc(a,b){var c=1;b&&1<a.U&&a.Y&&(c=a.Y/a.Sa);a.gb=Math.round(1E3/Hc);a.Na=Math.floor(a.Fa/Hc*c);b||(a.va=a.Na);a.Ua=0}function Dc(a){return a.la+a.X+a.ga-a.b}function xc(a){a.Y=0;a.hb=0;a.la=a.X=a.ga=a.b=0;yc(a);Ec(a,1)}
function Ec(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&&Ic(a.S)}Fc(a,a.X);a.X=0;a.V=ra();a.ea=0;Gc(a);return d}function Jc(a,b){var c=a.T.length;a.T.push([-1,b]);return c}function Kc(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+Lc(a))}function Lc(a,b){var c=a.ga-=a.b;a.b=0;b&&(a.ga=0);return c}
k.qb=function(a){if(nb(this,!0)){if(!this.G.ka){Ec(this);this.S&&this.S.start(this.V,Dc(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&&(Mc(this.S,!0),a&&Ic(this.S,!0))}this.Ua>=this.Fa&&Gc(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=Lc(this,!0);
this.Ha+=c;this.X+=c;Cc(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>=Nc&&(this.S&&Mc(this.S),this.hb=0);break}}while(this.G.ka)}catch(l){this.da();Bc(this);this.S&&this.S.stop(ra(),Dc(this));nb(this,!1);ib(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,Ec(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 Bc(this),this.S&&this.S.stop(ra(),Dc(this))};k.Ab=function(){return 0};k.da=function(a){mb(this,!0);Lc(this);Fc(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 Bc(a,b){if(a.S){for(var c=a.S,d=0;d<c.A.length;d++)Oc(c.A[d],b);Mc(a.S,b)}}var Hc=30,Nc=15,vc=["power","reset"];
function Pc(a){var b=+a.model||8080;uc.call(this,a,1E6);this.tb=b;this.cb=Qc;xc(this);this.G.complete=this.G.vd=!1;this.fb=0;this.La=[];this.eb=0;Rc(this)}ba(Pc,uc);function Sc(a,b){a.La.push(b)}k=Pc.prototype;k.reset=function(){this.G.ka&&this.da();Rc(this);xc(this);this.G.error=!1;uc.prototype.reset.call(this)};function Rc(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);Tc(a,0);a.R=0}function Uc(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+Vc(this)|0};k.save=function(){var a=new Wc(this);a.set(0,[this.g,this.w,this.A,this.B,this.C,this.D,this.F,this.M,this.j,Vc(this)]);a.set(1,[this.R,this.la,this.U]);a.set(2,Kb(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]);Tc(this,b[9]);b=a[1];this.R=b[0];this.la=b[1];Ec(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=uc.prototype.ca.call(this,a,b,c)}return a};function Xc(a){return a.w<<8|a.A}function jd(a,b){a.w=b>>8&255;a.A=b&255}function kd(a){return a.B<<8|a.C}function ld(a,b){a.B=b>>8&255;a.C=b&255}function D(a){return a.D<<8|a.F}
function md(a,b){a.D=b>>8&255;a.F=b&255}function C(a,b){a.j=b&65535}function nd(a){return a.I&256?1:0}function od(a,b){a.I=a.I&255|b}function pd(a){return tb[a.L&255]?4:0}function qd(a){return(a.L^a.O)&16?16:0}function rd(a){return a.I&255?0:64}function sd(a){return a.L&128?128:0}function Vc(a){return a.N&-214|sd(a)|rd(a)|qd(a)|pd(a)|nd(a)}function Tc(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 td(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b)&255}function ud(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?1:0))&255}function vd(a,b){a.I=a.L=a.O=a.g&b;(a.g|b)&8&&(a.O^=16);return a.I}function wd(a,b){a.O=b^255;b=a.L=b+255&255;a.I=a.I&-256|b;return b}function xd(a,b){a.O=b;b=a.L=b+1&255;a.I=a.I&-256|b;return b}function yd(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 zd(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 Ad(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 Bd(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=Gb(a.H,a.j);C(a,a.j+2);return b}function Cd(a){var b=Gb(a.H,a.M);a.M=a.M+2&65535;return b}function I(a,b){a.M=a.M-2&65535;Jb(a.H,a.M,b)}
function Dd(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?(Lc(a),!1):!0}function Ed(a,b){a.R|=1<<b;a.N&512&&Lc(a)}function J(a,b,c,d){d=d||2;a.P[b]&&(void 0===c&&(ib(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&&Fd(this.K),c=a?this.G.Mb?0:1:-1;this.G.Mb=!1;this.ga=this.b=a;if(Dd(this)){do{if(b){if(Gd(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};Oa(function(){for(var a=hb(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=fb(c),d=new Pc(d);gb(d,c)}});function Hd(){this.b-=4}function Id(){C(this,H(this));this.b-=10}
function Jd(){C(this,Cd(this));this.b-=10}function Kd(){var a=H(this);I(this,this.j);C(this,a);this.b-=17}
var Qc=[Hd,function(){jd(this,H(this));this.b-=10},function(){Bd(this,Xc(this),this.g);this.b-=7},function(){jd(this,Xc(this)+1);this.b-=5},function(){this.w=xd(this,this.w);this.b-=5},function(){this.w=wd(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;od(this,a&256);this.b-=4},Hd,function(){var a;md(this,a=D(this)+Xc(this));od(this,a>>8&256);this.b-=10},function(){this.g=F(this,Xc(this));this.b-=7},function(){jd(this,Xc(this)-1);this.b-=
5},function(){this.A=xd(this,this.A);this.b-=5},function(){this.A=wd(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;od(this,a);this.b-=4},Hd,function(){ld(this,H(this));this.b-=10},function(){Bd(this,kd(this),this.g);this.b-=7},function(){ld(this,kd(this)+1);this.b-=5},function(){this.B=xd(this,this.B);this.b-=5},function(){this.B=wd(this,this.B);this.b-=5},function(){this.B=G(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|
nd(this);od(this,a&256);this.b-=4},Hd,function(){var a;md(this,a=D(this)+kd(this));od(this,a>>8&256);this.b-=10},function(){this.g=F(this,kd(this));this.b-=7},function(){ld(this,kd(this)-1);this.b-=5},function(){this.C=xd(this,this.C);this.b-=5},function(){this.C=wd(this,this.C);this.b-=5},function(){this.C=G(this);this.b-=7},function(){var a=this.g<<8;this.g=(nd(this)<<8|this.g)>>1;od(this,a&256);this.b-=4},Hd,function(){md(this,H(this));this.b-=10},function(){var a=H(this);Jb(this.H,a,D(this));
this.b-=16},function(){md(this,D(this)+1);this.b-=5},function(){this.D=xd(this,this.D);this.b-=5},function(){this.D=wd(this,this.D);this.b-=5},function(){this.D=G(this);this.b-=7},function(){var a=0,b=nd(this);if(qd(this)||9<(this.g&15))a|=6;if(b||154<=this.g)a|=96,b=1;this.g=td(this,a);od(this,b?256:0);this.b-=4},Hd,function(){var a;md(this,a=D(this)+D(this));od(this,a>>8&256);this.b-=10},function(){var a;a=H(this);a=Gb(this.H,a);md(this,a);this.b-=16},function(){md(this,D(this)-1);this.b-=5},function(){this.F=
xd(this,this.F);this.b-=5},function(){this.F=wd(this,this.F);this.b-=5},function(){this.F=G(this);this.b-=7},function(){this.g=~this.g&255;this.b-=4},Hd,function(){this.M=H(this)&65535;this.b-=10},function(){Bd(this,H(this),this.g);this.b-=13},function(){this.M=this.M+1&65535;this.b-=5},function(){var a=D(this);Bd(this,a,xd(this,F(this,a)));this.b-=10},function(){var a=D(this);Bd(this,a,wd(this,F(this,a)));this.b-=10},function(){Bd(this,D(this),G(this));this.b-=10},function(){this.I|=256;this.b-=
4},Hd,function(){var a;md(this,a=D(this)+this.M);od(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=xd(this,this.g);this.b-=5},function(){this.g=wd(this,this.g);this.b-=5},function(){this.g=G(this);this.b-=7},function(){od(this,nd(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(){Bd(this,D(this),this.w);this.b-=7},function(){Bd(this,D(this),this.A);this.b-=7},function(){Bd(this,D(this),this.B);this.b-=7},function(){Bd(this,D(this),this.C);this.b-=7},function(){Bd(this,D(this),this.D);this.b-=7},function(){Bd(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;Lc(this);this.K&&ob(this,-2147483648)?(C(this,a),this.K.da()):this.N&512||(this.K&&C(this,a),
this.da())},function(){Bd(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=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=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=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=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=vd(this,this.w);this.b-=4},function(){this.g=vd(this,this.A);this.b-=4},function(){this.g=vd(this,this.B);this.b-=4},function(){this.g=vd(this,this.C);this.b-=4},function(){this.g=vd(this,
this.D);this.b-=4},function(){this.g=vd(this,this.F);this.b-=4},function(){this.g=vd(this,F(this,D(this)));this.b-=7},function(){this.g=vd(this,this.g);this.b-=4},function(){this.g=Ad(this,this.w);this.b-=4},function(){this.g=Ad(this,this.A);this.b-=4},function(){this.g=Ad(this,this.B);this.b-=4},function(){this.g=Ad(this,this.C);this.b-=4},function(){this.g=Ad(this,this.D);this.b-=4},function(){this.g=Ad(this,this.F);this.b-=4},function(){this.g=Ad(this,F(this,D(this)));this.b-=7},function(){this.g=
Ad(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(){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(){rd(this)||(C(this,Cd(this)),this.b-=6);this.b-=5},function(){jd(this,Cd(this));this.b-=10},function(){var a=H(this);rd(this)||C(this,a);this.b-=10},Id,function(){var a=H(this);rd(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=11},function(){I(this,Xc(this));this.b-=11},function(){this.g=
td(this,G(this));this.b-=7},function(){I(this,this.j);C(this,0);this.b-=11},function(){rd(this)&&(C(this,Cd(this)),this.b-=6);this.b-=5},Jd,function(){var a=H(this);rd(this)&&C(this,a);this.b-=10},Id,function(){var a=H(this);rd(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Kd,function(){this.g=ud(this,G(this));this.b-=7},function(){I(this,this.j);C(this,8);this.b-=11},function(){nd(this)||(C(this,Cd(this)),this.b-=6);this.b-=5},function(){ld(this,Cd(this));this.b-=10},function(){var a=H(this);
nd(this)||C(this,a);this.b-=10},function(){var a=G(this);Tb(this.H,a,this.g,this.j+-2&65535);this.b-=10},function(){var a=H(this);nd(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=11},function(){I(this,kd(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(){nd(this)&&(C(this,Cd(this)),this.b-=6);this.b-=5},Jd,function(){var a=H(this);nd(this)&&C(this,a);this.b-=10},function(){var a=G(this);this.g=Pb(this.H,a,this.j+-2&65535)&
255;this.b-=10},function(){var a=H(this);nd(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Kd,function(){this.g=zd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,24);this.b-=11},function(){pd(this)||(C(this,Cd(this)),this.b-=6);this.b-=5},function(){md(this,Cd(this));this.b-=10},function(){var a=H(this);pd(this)||C(this,a);this.b-=10},function(){var a=Cd(this);I(this,D(this));md(this,a);this.b-=18},function(){var a=H(this);pd(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=vd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,32);this.b-=11},function(){pd(this)&&(C(this,Cd(this)),this.b-=6);this.b-=5},function(){C(this,D(this));this.b-=5},function(){var a=H(this);pd(this)&&C(this,a);this.b-=10},function(){var a=D(this);md(this,kd(this));ld(this,a);this.b-=5},function(){var a=H(this);pd(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Kd,function(){this.g=Ad(this,G(this));this.b-=7},function(){I(this,
this.j);C(this,40);this.b-=11},function(){sd(this)||(C(this,Cd(this)),this.b-=6);this.b-=5},function(){var a=Cd(this);Tc(this,a&255|this.N&-256);this.g=a>>8;this.b-=10},function(){var a=H(this);sd(this)||C(this,a);this.b-=10},function(){this.N&=-513;this.b-=4},function(){var a=H(this);sd(this)||(I(this,this.j),C(this,a),this.b-=6);this.b-=11},function(){I(this,Vc(this)&255|this.g<<8);this.b-=11},function(){this.g=yd(this,G(this));this.b-=7},function(){I(this,this.j);C(this,48);this.b-=11},function(){sd(this)&&
(C(this,Cd(this)),this.b-=6);this.b-=5},function(){this.M=D(this)&65535;this.b-=5},function(){var a=H(this);sd(this)&&C(this,a);this.b-=10},function(){this.N|=512;this.b-=4;Dd(this)},function(){var a=H(this);sd(this)&&(I(this,this.j),C(this,a),this.b-=6);this.b-=11},Kd,function(){E(this,G(this));this.b-=7},function(){I(this,this.j);C(this,56);this.b-=11}];
function Ld(a){x.call(this,"ChipSet",a,0,32768);var b=a.model;b&&!Md[b]&&Sa("Unrecognized ChipSet model: "+b);this.g=Md[b]||{};a.sound&&(this.U=null,window&&(this.U=window.AudioContext||window.webkitAudioContext),this.U&&new this.U);lb(this)}ba(Ld,x);k=Ld.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=wb(a,"Keyboard");this.C=wb(a,"SerialPort");this.video=wb(a,"Video");Ob(b,this,this.g.xb);Sb(b,this,this.g.yb);if(d){var e=this;Nd(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 Wc(this);switch(this.g.pa){case Od.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 Od.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 Pd(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((Dc(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=Pd(this);this.j[d]=L.Aa.sb;pb(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=Pd(this);e=this.b&L.Aa.sb;this.j[d]=e;pb(this,"doNVRCommand(): write data "+q(e)+" to addr "+q(d));break;case L.Aa.Ja.ad:d=Pd(this);e=this.j[d];
null==e&&(e=L.Aa.sb);this.b=e;pb(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:pb(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=Dc(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&Qd&&(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,pb(b,"updateScrollOffset("+a+")"),b.sa!==a&&((b.sa=a)?Oc(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,pb(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,pb(b,"updateDimensions("+a+","+(80<a&&this.D&L.xa.Xb?14:24)+")"),b.O=a,b.fa=b.Ha,80<a&&b.fa--,Rd(b)&&Sd(b))))};
var Od={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}},Md={SI1978:Od,VT100:L};Od.INIT=[[Od.fd.Za,Od.Oa.Za,Od.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]]];Od.xb={0:Ld.prototype.Bd,1:Ld.prototype.Cd,2:Ld.prototype.Dd,3:Ld.prototype.Ad};
Od.yb={2:Ld.prototype.Kd,3:Ld.prototype.Md,4:Ld.prototype.Ld,5:Ld.prototype.Nd,6:Ld.prototype.Od};L.xb={66:Ld.prototype.Ed};L.yb={66:Ld.prototype.Pd,98:Ld.prototype.Sd,162:Ld.prototype.Rd,194:Ld.prototype.Qd};Oa(function(){for(var a=hb(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=fb(c),d=new Ld(d);gb(d,c)}});
function Td(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){Ud(c,a,b,f)})}}ba(Td,x);Td.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Vd(this)};
Td.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};Td.prototype.wa=function(){return!0};
function Ud(a,b,c,d){if(d)a.aa("Unable to load system ROM (error "+d+": "+b+")");else{ab(a.ab,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,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);Vd(a)}}
function Vd(a){if(!jb(a))if(!a.j)lb(a);else if(a.b&&a.H){a.g||(a.g=a.b.length);if(a.b.length!=a.g)ib(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(Ab(a.H,b,a.g,$b)){var c;for(c=0;c<a.b.length;c++)Ib(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}}lb(a)}}Oa(function(){for(var a=hb(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=fb(c),d=new Td(d);gb(d,c)}});
function Wd(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+")"):(ab(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,Xd(c))})}}ba(Wd,x);
Wd.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Xd(this)};Wd.prototype.ua=function(){return!0};Wd.prototype.wa=function(){return!0};
function Xd(a){!a.j&&a.A&&Ab(a.H,a.w,a.A,1)&&(a.j=!0);if(!jb(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++)Ib(a.H,b+c,a.g[c]);if(null!==a.Ia){if(a.Ia==Yd){for(c=0;c<Zd.length;c++)Ib(a.H,Zd[c],118);Sc(a.u,function(a){return function(b){if(0<=Zd.indexOf(b)){var c=!1,d=a.u,e=a.K;if(b==$d)switch(c=!0,d.A){case ae:be(a,String.fromCharCode(d.C));break;case ce:for(var l=kd(d),p="",r=255;r--;){var t=F(a.u,l++);if(36==t)break;
p+=String.fromCharCode(t)}be(a,p);break;default:c=!1}c?Jd.call(d):e&&(a.i("\nCP/M vector "+q(b)),C(d,b),e.da());b=!0}else b=!1;return b}}(a))}Uc(a.u,a.Ia)}delete a.g}lb(a)}}Wd.prototype.reset=function(){};function be(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}var $d=5,ae=2,ce=9,Yd=256,Zd=[0,$d];Oa(function(){for(var a=hb(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=fb(c),d=new Wd(d);gb(d,c)}});
function de(a){x.call(this,"Keyboard",a,0,65536);(a=a.model)&&!ee[a]&&Sa("Unrecognized Keyboard8080 model: "+a);this.b=ee[a]||{};this.reset();lb(this)}ba(de,x);k=de.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 fe(d,a,!0)},c.onkeyup=function(a){return fe(d,a,!1)},c.onkeypress=function(a){a=a.keyCode;a>=m.pb&&a<=m.Db?d.j&(ge|he)||(d.j|=he,ie(d,20,!0),Ee(d)):a>=m.pd&&a<=m.z&&d.j&he&&(d.j&=~he,ie(d,20,!1),Ee(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)){Fe(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();ie(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=Jc(this.u,function(){Ge(e)});this.W=wb(a,"ChipSet");this.C=wb(a,"SerialPort");Ob(b,this,this.b.xb);Sb(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 Wc(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 He.pa:return!0;case M.pa:return this.D=b[0],Ee(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 Ee(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&he?"#"+n(65280,6):"#000000"}
function fe(a,b,c){var d=!0,e=b.keyCode,f=2==b.location,g=0;switch(e){case 16:g=f?Ie:Je;break;case 17:g=f?Ke:Le;break;case 18:g=f?Me:Ne;break;case 91:g=f?Oe:Pe;break;case 20:g=he}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&(Qe|Re)&&(13==h?(h=118,d=!0):8==h&&(h=46,d=!0),d&&(a.j=c?a.j|Re:a.j&~Re)),d=ie(a,h,c),(!(h>=m.pb&&h<=m.Db)||a.j|Se)&&b.preventDefault&&b.preventDefault());return d}
function ie(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&&Ge(a);else if(0<=e){if(!a.g[e].ub&&(d=a.g[e].Ib)&&Date.now()-d<Te)return a.g[e].ub=!0,Ge(a),!0;a.g.splice(e,1)}if(a.W){d=0;switch(b){case "1p":d=Od.Oa.Uc;break;case "2p":d=Od.Oa.Yc;break;case "coin":d=Od.Oa.uc;break;case "left":d=Od.Oa.Wc;break;case "right":d=Od.Oa.Xc;break;case "fire":d=Od.Oa.Vc}d&&(a=a.W,b=d,a.A&=~b,c&&(a.A|=
b))}return!0}function Ge(a){for(var b=0,c=-1;b<a.g.length;){if(a.g[b].ub){var d=a.g[b].Lb,e=Te-(Date.now()-a.g[b].Ib);if(0<e){if(0>c||c>e)c=e}else{ie(a,d,!1);b=0;continue}}b++}0<=c&&Kc(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,Ed(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=Dc(this.u);Ee(this,b&M.Ba.Vb);b&M.Ba.ed&&(this.w=0,Ed(this.u,1))};var Ie=1,Je=2,ge=3,Ke=4,Le=8,Se=12,Me=16,Ne=32,Qe=48,Oe=64,Pe=128,he=512,Re=4096,Te=50,Ue={};Ue[m.pb]=37;Ue[m.Rb]=39;Ue[m.Ub]=32;
var He={pa:1978.1,Cb:{},Pb:Ue,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":he};var ee={SI1978:He,VT100:M};M.INIT=[[M.Ba.INIT,M.qc.INIT,!1,0,-1]];M.xb={130:de.prototype.Fd};M.yb={130:de.prototype.Td};Oa(function(){for(var a=hb(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=fb(c),d=new de(d);gb(d,c)}});
function Ve(a,b,c,d,e){x.call(this,"Video",a,0,262144);var f=this;this.Sa=Ga("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&&We[h.toUpperCase()]||Xe;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=Ha("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(){Ye(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(){Ye(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){Ze(f,a,b,c)});this.Fa={}}ba(Ve,x);
function Rd(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,!Ab(a.H,a.la,a.L,3)))return!1;a.L?(a.Ua=a.j.createImageData(b,c),a.eb=16/a.na|0,$e(a,a.L>>1)):$e(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+af);a.U[0]=[0,0,0,255];a.U[1]=[255,255,255,255];a.Y==bf&&(a.U[a.X+cf]=[255,255,0,255],a.U[a.X+df]=[0,255,0,255]);a.Y==ef&&(a.gb=60,a.za=!1,a.ga=Array(a.O));
return!0}Ve.prototype.Ea=function(a,b,c,d){this.S=a;this.H=b;this.u=c;this.K=d;Rd(this);if(this.B=wb(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=Jc(this.u,function(){Oc(f)});Kc(this.u,this.tb,1E3/Math.max(this.hb,this.oa));this.fb=0;this.R||lb(this)};
function Ze(a,b,c,d){if(d)a.aa("Unable to load font ROM (error "+d+": "+b+")");else{ab(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,Sd(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)&&lb(a)}}
function Sd(a){a.ea&&(a.Na=a.Y==ef,a.T[ff]=[gf(a,a.fa,a.ba),gf(a,a.fa,a.ba,a.za)],a.T[hf]=[gf(a,2*a.fa,a.ba),gf(a,2*a.fa,a.ba,a.za)],a.T[jf]=a.T[kf]=[gf(a,2*a.fa,2*a.ba),gf(a,2*a.fa,2*a.ba,a.za)])}
function gf(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,R=0,za=R;R<a.fa;R++){for(var K=w&128>>(7<R?7:R),B=a.Na&&!K&&B?B:K,ia=0;ia<b/a.fa;ia++)h&&(B=!B),lf(a,p,za,A,B?1:0),za++;B=K}A++}l.context.putImageData(p,
(r&15)*b,(r>>4)*c)}return l}Ve.prototype.ua=function(){return!0};Ve.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};
Ve.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 Ye(a,b){!b&&a.b&&(a.Sa?a.F.style.width=a.F.style.height="":a.b.style.width=a.b.style.height="");pb(a,"notifyFullScreen("+b+")")}function $e(a,b){a.cb=b;a.W=!1;if(void 0===a.A||a.A.length!=a.cb)a.A=Array(a.cb)}function lf(a,b,c,d,e){d=a.g?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.Y==bf&&(208<=c&&236>c?e=a.X+cf:28<=c&&72>c&&(e=a.X+df));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 Oc(a,b){var c=!0;if(!b){a.oa&&(120==a.oa?a.fb&1?(Ed(a.u,2),c=!1):Ed(a.u,1):Ed(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)}Kc(a.u,a.tb,1E3/Math.max(a.hb,a.oa));a.fb++}if(c)if(1<a.fa)switch(a.Y){case ef: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!=ff&&(A>>=1);;){var w=Fb(a.H,r++);if((w&mf)==mf){var u=Fb(a.H,r++),d=u&nf,c=(u&of)<<8|Fb(a.H,r),c=c+(u&pf?
qf:rf);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,R=w&127;if(w=u.T[t][w&128?1:0]){var za=(R&15)*w.fa,R=(R>>4)*w.ba,K,ia,ta,ma,Ma=w.fa,ec=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==kf&&(R+=u.ba),ec=u.ba);B?B.drawImage(w.canvas,za,R,Ma,ec,K,ia,ta,ma):(K+=0,ia+=0,u.j.drawImage(w.canvas,
za,R,Ma,ec,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=Hb(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--;)za=u>>B&A,lf(a,a.Ua,h++,l,za),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 cf=0,df=1,af=2,Xe=0,bf=1,ef=2,We={SI1978:bf,VT100:ef},ff=96,hf=64,jf=32,kf=0,mf=127,of=15,pf=16,nf=96,qf=8192,rf=16384;
Oa(function(){for(var a=hb(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=fb(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||Ha("aspect"));f&&.3<=f&&3.33>=f&&(La("onresize",function(a,b,c){return function(){b.style.height=(a.clientWidth/c|0)+"px"}}(c,e,f)),window.onresize());c.appendChild(e);f=document.createElement("textarea");Ga("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var g=e.getContext("2d"),d=new Ve(d,e,g,f,c);gb(d,c)}});
function sf(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:ya&&ya("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=tf;b&&(void 0===c&&(c="Panel"),(c=eb(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(sf,x);k=sf.prototype;
k.ca=function(a,b,c,d){var e=this;switch(b){case tf: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),uf(e,b);return!0},c.onkeypress=function(a){a=a||window.event;uf(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=Jc(this.u,function(){e.Kb()});this.Z=Jc(this.u,function(){Fe(e)});this.W=wb(a,"ChipSet");Ob(b,this,vf,this.U);Sb(b,this,wf,this.U);lb(this)};
k.ic=function(a){if(!this.b){var b=wc(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=db(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(){xf(this)};k.save=function(){var a=new Wc(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 xf(this,a[0])};
function xf(a,b){var c=0;b||(b=yf);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 zf(a,b){var c=a.L&b;b&15||(c>>=4);b=Af[c];c=((a.B&Bf)>>2)+6;a.B&Cf&&c++;c+=((a.B&Df)>>6)+1>>1;return 1E3/Math.round(b/c)}function uf(a,b){pb(a,"receiveByte("+ea(b)+"), status="+ea(a.ia));return a.N||a.ia&Ef?!1:(a.M=b,a.ia|=Ef,Ed(a.u,a.X),!0)}
k.Kb=function(a){null!=a&&(this.A="number"!=typeof a?a:this.A+String.fromCharCode(a));this.A&&(uf(this,this.A.charCodeAt(0))&&(this.A=this.A.substr(1)),this.A&&this.u&&Kc(this.u,this.Y,zf(this,Ff)));return!0};k.be=function(a){this.ia&=~Gf;a&64&&(this.ia|=Gf)};function Fe(a,b){a.ia=a.ia|Qd|Hf;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&=~Ef;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&=~(Qd|Hf);pb(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&&Kc(this.u,this.Z,zf(this,If))};k.Id=function(a,b,c){y(this,a,b,c,"CONTROL");this.F?(this.I&&(b^this.C)&(Jf|Kf)&&(a=0,this.D?(a|=b&Jf?32:0,a|=b&Kf?320:0):(a|=b&Jf?16:0,a|=b&Kf?1048576:0),this.I.call(this.b,a)),this.C=b,this.C&Lf&&(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 Bf=12,Cf=16,Df=192,Kf=2,Jf=32,Lf=64,Qd=1,Ef=2,Hf=4,Gf=128,Ff=15,If=240,Af=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],yf=[!1,0,0,133,142,39,238],tf="buffer",vf={0:sf.prototype.zd,1:sf.prototype.yd},wf={0:sf.prototype.Jd,1:sf.prototype.Id,2:sf.prototype.Hd};Oa(function(){for(var a=hb(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=fb(c),d=new sf(d);gb(d,c)}});
function Mf(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(Mf,x);Mf.prototype.Gb=function(){return-1};Mf.prototype.Hb=function(){};
Mf.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 Nf(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 Of(a,b,c){var d;if(b){b=Pf(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=Qf(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&&Rf[r]<Rf[l[l.length-1]]&&Nf(h,l,1);l.push(r);b=b.substr(t+A)}Nf(h,l)&&1==h.length||(f=!0);f?c&&a.i("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&Sf(a,null,
d))}return d}function Pf(a,b){for(var c,d=/\{(.*?)\}/;(c=b.match(d))&&!(0<=c[1].indexOf("{"));){var e=Of(a,c[1]);b=b.replace("{"+c[1]+"}",null!=e?Tf(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 Qf(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 Sf(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 Uf(a,b){if(b)return Sf(a,b,a.R[b]);var c=0;for(b in a.R)Sf(a,b,a.R[b]),c++;return 0<c}function Tf(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 Rf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function Vf(a){Mf.call(this,a);this.style=Wf;this.F=Xf();this.la=Xf();this.O=Xf();this.A=[];this.j=this.I=this.w=[];Yf(this);this.W=0;Zf(this);this.Z={};$f(this,a.messages);this.ea=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Ac(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Ac(b,a)})}ba(Vf,Mf);k=Vf.prototype;
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.S=a;(a=wc(a,"messages"))&&$f(this,a);this.ga=ag;Nd(this,64,function(a){a:{var b=d.H.b,c=a[0],e=a=0,l=b.length;if(c){a=bg(cg(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=Db[c],r&&d.i(n(r.id)+" %"+n(e<<d.H.g)+" %%"+n(r.J)+" "+q(r.mb)+" "+
q(r.size)+" "+p),c!=Zb&&(c=-1),p=0);a+=d.H.w;e++}}});lb(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="",Ac(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,Ka(c,function(){if(d.U){var a=d.U.value;d.U.value=
"";Ac(d,a,!0);return!0}return!1}),!0;case "step":return this.P[b]=c,Ka(c,function(a){var b=!1;mb(d,!0)||(nb(d,!0),b=dg(d,a?1:0),nb(d,!1));return b}),!0}return!1};function bg(a){a=a&&a.J;null==a&&(a=-1);return a}k.Ga=function(a,b){var c=255,d=bg(a);-1!==d&&(c=Fb(this.H,d),b&&eg(a,b));return c};k.Bb=function(a,b){var c=65535,d=bg(a);-1!==d&&(c=Hb(this.H,d),b&&eg(a,b));return c};k.Sb=function(a,b,c){var d=bg(a);-1!==d&&(Ib(this.H,d,b),c&&eg(a,c),Bc(this.u,!0))};
k.vc=function(a,b,c){var d=bg(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&&eg(a,c);Bc(this.u,!0)}};function Xf(a){return{J:a,Da:!1}}function fg(a){return[a.J,a.Da]}function gg(a){return{J:a[0],Da:a[1]}}
function cg(a,b,c){var d;c=(c?a.F:a.la).J;if(void 0!==b){d=b=Pf(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=Xf(d));break}}if(d=e)return d;c=Of(a,b,void 0)}null!=c&&(d=Xf(c));return d}function hg(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.qd=a.wb(b.mc=c[2]))}function eg(a,b){null!=a.J&&(a.J+=b||1)}function ig(a){return n(a,4)}
function jg(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 $f(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 ub)0<=ua(b,c)&&(a.ha|=ub[c],a.i(c+" messages enabled"))}function Nd(a,b,c){for(var d in ub)if(b==ub[d]){a.Z[d]=c;break}}
k.Gb=function(a,b){var c;a=a.toUpperCase();null==b?c=ua(Hg,a):(c=ua(Hg,a.substr(b,2)),0>c&&(c=ua(Hg,a.substr(b,1))));return c};function Jg(a,b){var c=0;a=a.Hb(b);if(void 0!==a)switch(b){case Kg:case Lg:case Mg:case Ng:case Og:case Pg:case Qg:case Rg:c=2;break;case Sg:case Tg:case Ug:case Vg:case Wg:case Xg:case Yg:c=4}return c?n(a,c):"??"}
k.Hb=function(a){var b;if(0<=a){var c=this.u;switch(a){case Kg:b=c.g;break;case Lg:b=c.w;break;case Mg:b=c.A;break;case Sg:b=Xc(c);break;case Ng:b=c.B;break;case Og:b=c.C;break;case Tg:b=kd(c);break;case Pg:b=c.D;break;case Qg:b=c.F;break;case Ug:b=D(c);break;case Rg:b=F(c,D(c));break;case Vg:b=c.M;break;case Wg:b=c.j;break;case Xg:b=Vc(c);break;case Yg:b=Vc(c)&255|c.g<<8}}return b};
function Zg(a,b){b=Pf(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)+Jg(a,e)+b.substr(c+1+Hg[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=cg(a,e))?(d=e+' "'+jg(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=cg(a,e))?(eg(d),d=e+
' "'+jg(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}k.message=function(a,b){b&&(a+=" at "+ig(Xf(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,Lc(a),a.va=0,Bc(a)))};
function qb(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 "+ig(e):""))}
function Zf(a){var b;if(Fd(a)){if(!a.D||!a.D.length){a.D=Array($g);for(b=0;b<a.D.length;b++)a.D[b]=Xf();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 ah(a,b){if(!bh(a))return!1;a.u.qb(b);return!0}
function dg(a,b,c,d){if(!bh(a))return!1;a.C=0;b||Fd(a)&&Gd(a,a.u.j,0);try{var e=a.u.Ab(b);0<e&&(a.C+=e,Fc(a.u,e,!0),Cc(a.u,e),a.N++)}catch(f){"number"!=typeof f&&(a.C=0,ib(a.u,f.stack||f.message))}!1!==d&&Bc(a.u);zc(a,c||!1);return 0<a.C}k.da=function(a){this.u&&this.u.da(a)};function zc(a,b){void 0===b&&(b=!0);a.F=Xf(a.u.j);b&&1!=a.M?ch(a):dh(a)}
function bh(a){var b;if(b=a.u&&jb(a.u))b=a.u,b.G.ja?b=!0:(b.i(b.toString()+" not powered"),b=!1);b&&!mb(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){Zf(this);this.N=this.Y=0;this.V=null;this.C=0;this.F=Xf(this.u.j);this.G.ka=!1;eh(this);a||zc(this)};
k.save=function(){var a=new Wc(this);a.set(0,fg(this.F));a.set(1,fg(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=gg(a[b++]),this.O=gg(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+=" (";Fd(this)&&(b+=this.N+" opcodes, ",this.Y-=this.N,this.N=0);b+=this.C+" cycles, "+a+" ms, "+c+" hz)"}else ob(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.i(b)}zc(this,!0);this.U&&this.U.focus();eh(this,this.u.j)}};function Fd(a){return 1<a.j.length||!!a.W}
function Gd(a,b,c){var d=a.u;if(0<c&&(a.W&&!--a.W||tc(a,b,1,a.j)))return!0;0<=c&&a.B.length&&(a.N++,b=Fb(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 Qb(a,b,c){a.i("break on input from port "+q(b)+": "+n(c));a.da(!0)}function Ub(a,b,c){a.i("break on output to port "+q(b)+": "+n(c));a.da(!0)}
function Yf(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;sc(d.b[bg(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,sc(d.b[bg(c)>>>d.g],!0);a.w=["bw"];a.oa=0}k.Pa=function(a,b,c){var d=!0;c||fh(this,a,b,!1,!0);if(a!=this.j){var e=bg(b);if(-1===e)this.i("invalid address: "+ig(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:(gh(this,a,a.length-1,"set"),Zf(this)));return d};
function fh(a,b,c,d,e){var f=!1;c=bg(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==bg(h)&&(!d||h.Da)){f=!0;h.Da||e||gh(a,b,g,"cleared");b.splice(g,1);b!=a.j&&(d=a.H,sc(d.b[c>>>d.g],b==a.w));h.Da||Zf(a);break}}return f}function hh(a,b){for(var c=1;c<b.length;c++)gh(a,b,c);return b.length-1}function gh(a,b,c,d){c=b[c];a.i(b[0]+" "+ig(c.J)+(d?" "+d:c.mc?' "'+c.mc+'"':""))}
function eh(a,b){if(void 0!==b)tc(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(!fh(a,a.j,c,!0))break;b=0}}}
function tc(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=bg(h),p=0;p<c;p++)if(b+p==l){var r,f=!0;h.Da&&(fh(a,d,h,!0),e=!0);if(r=h.qd){for(var f=!1,t=0;t<r.length;t++)if(!ih(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||gh(a,d,g,"hit");break}}}a.oa--;return f}
function jh(a,b,c,d){for(var e=Xf(b.J),f=a.Ga(b,1),g=a.ga[f],h="",l=(a.style!=kh?lh:mh)[g[0]],p=g.length-1,r=nh,t,A=1;A<=p;A++){var w="";t=g[A];if(void 0!==t&&!(t&O&&a.style==Wf)){var u=t&oh;if(u){var B=t&ph;B?r=B:t|=r;t&qh||(t|=1==A?rh:sh);if(u&P)a:{w=a;u=t;B=b;switch(u&ph){case Q:B=n(w.Ga(B,1),2);break;case th:B=n(w.Ga(B,1)<<24>>24,4);break;case uh:B=n(w.Bb(B,2),4);break;default:w="imm("+q(u)+")";break a}w.style==kh&&u&vh?B="["+B+"]":u&wh||(B=(w.style==Wf?"$":"0x")+B);w=B}else u&wh?(w=(t&xh)>>8,
u=Hg[w],a.style==kh&&t&vh&&(w==Rg&&(u="HL"),u="["+u+"]"),w=u):u&yh&&(w=(f>>3&7).toString());if(!w||!w.length){h="INVALID";break}0<h.length&&(h+=",");h+=w||"???"}}}f="";g=ig(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&zh?"*":" ";g+=na(l,7);h&&(g+=" "+h);c&&(g=na(g,40)+";"+c,g=a.u.G.Va?g+("cycles="+Dc(a.u).toString()+" cs="+n(a.u.ya)):g+(null!=d?"="+d.toString():""));return g}
function Ah(a,b){switch(b){case "IF":a=a.u.N&512;break;case "SF":a=sd(a.u);break;case "ZF":a=rd(a.u);break;case "AF":a=qd(a.u);break;case "PF":a=pd(a.u);break;case "CF":a=nd(a.u);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Bh(a,b){return Hg[b]+"="+Jg(a,b)+" "}function Ch(a){return Bh(a,Kg)+Bh(a,Sg)+Bh(a,Tg)+Bh(a,Ug)+Bh(a,Vg)+Ah(a,"IF")+Ah(a,"SF")+Ah(a,"ZF")+Ah(a,"AF")+Ah(a,"PF")+Ah(a,"CF")}k.dc=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Dh(a,b,c){var d=[],e=bg(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?Eh(a,b,e,d):c&&(e=~e,Eh(a,b,e-1,d),Eh(a,b,e,d));break}}return d}function Eh(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 Fh(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!=kh?lh:mh;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 Gh(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Uf(a)||a.i("no variables"),!0;if(!c[2])return Uf(a,c[1]);if(!c[3])return delete a.R[c[1]],!0;b=Of(a,c[3]);return void 0!==b?(a.R[c[1]]=b,!0):!1}a.i("invalid assignment:"+b);return!1}
function Hh(a,b,c){var d=null;if(b=cg(a,b,!0)){var e=Dh(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.J-e[1])&&(g=" + "+q(f)),f=e[0]+" ("+ig(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]+" ("+ig(e[5])+")"+g,c&&a.i(f),d||(d=f))}else c&&a.i("no symbols")}return d}
function Ih(a,b){switch(b[1]){case "8080":a.style=Wf;break;case "8086":a.style=kh;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&&yc(a.u);a.i("checksums "+(a.u.G.Va?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Ec(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 ch(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=Of(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=Xf(d.j);break;case "PS":Tc(d,f);break;case "PSW":Tc(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?pd(d)||(d.L^=1):pd(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?sd(d)||(d.L^=192):sd(d)&&(d.L^=192);break;case "IF":d.N=
f?d.N|512:d.N&-513;break;default:a.i("unknown register: "+e);return}Bc(d);a.i("updated registers:")}a.i(Ch(a));c&&(a.F=Xf(d.j),dh(a,ig(a.F.J)))}}function Jh(a,b){b=oa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.i(Zg(a,c[2])):Of(a,b,!0)}function Kh(a,b,c){var d="t"!=b;c=Qf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ja(c,function(){return nb(a,!0)&&dg(a,e,d,!1)},function(){Bc(a.u);nb(a,!1)})}
function dh(a,b,c,d){if(b=cg(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=cg(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=mb(a,!1)||a.M?a.C:null;var g=null!=f?"cycles":null,h=Dh(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=jh(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 ih(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.i(">> "+b):(a.L&&(a.i("ended assemble at "+ig(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(jb(a)&&0<b.length){a.L&&(b="a "+ig(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=cg(a,f[1],!0);if(r)if(a.O=
r,void 0===f[2])a.i("begin assemble at "+ig(r.J)),a.L=!0,Bc(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(jh(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 R=w.charAt(1);if("l"==R){var za;za=0+hh(a,a.j);za+=hh(a,a.I);(za+=hh(a,a.w))||a.i("no breakpoints")}else if("n"==R)a.W=Qf(a,u),a.i("break after "+a.W+" instruction(s)");else if(void 0===u)a.i("missing breakpoint address");else{var K=Xf();if("*"!=u&&(K=cg(a,u,!0),!K))break a;u=q(K.J);"c"==R?null==K.J?(Yf(a),a.i("all breakpoints cleared")):fh(a,a.j,K)||fh(a,a.I,K)||fh(a,a.w,K)||a.i("breakpoint missing: "+ig(K.J)):
"i"==R?a.i("breakpoint "+(Lb(a.H,K.J)?"enabled":"cleared")+": port "+u+" (input)"):"o"==R?a.i("breakpoint "+(Rb(a.H,K.J)?"enabled":"cleared")+": port "+u+" (output)"):null!=K.J&&(hg(a,K,B),"p"==R?a.Pa(a.j,K):"r"==R?a.Pa(a.I,K):"w"==R?a.Pa(a.w,K):a.i("unknown breakpoint command: "+R))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var ia,ta=f[0],ma=f[1],Ma=f[2],ec=f[3];if("?"==ma){var Mb="";for(ia in ub)a.Z[ia]&&(Mb&&(Mb+=","),Mb+=ia);Mb+=",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");Mb.length&&a.i("dump extension commands:\n\t"+Mb)}else if("state"==ma){var je=Lh(a.S,!0);"console"==Ma?console.log(je):(a.ta&&(a.ta.value=""),je&&a.i(je))}else if("symbols"==ma)for(var ke=0;ke<a.A.length;ke++){var le=a.A[ke],Nb;for(Nb in le.ra)if("."!=Nb.charAt(0)){var kg=le.ra[Nb].o;if(void 0!==kg){var lg=le.ra[Nb].l;lg&&(Nb=lg);a.i(ig(kg)+" "+
Nb)}}}else{if("d"==ta){for(ia in ub)if(f[1]==ia){var mg=a.Z[ia];mg?(f.shift(),f.shift(),mg(f)):a.i("no dump registered for "+ma);break a}ma||(ta=a.za||"db")}else a.za=ta;if("dh"==ta){var ng=ma,og=Ma,pg="",qg=0,Na=a.T,Ya=a.D;if(Ya.length){var Ba=+ng||a.sa,jc=+og||10;isNaN(Ba)?Ba=jc:pg="more ";Ba>Ya.length&&(a.i("note: only "+Ya.length+" available"),Ba=Ya.length);Na-=Ba;0>Na&&(null==Ya[Ya.length-1].J?(Ba=Na+Ba,Na=0):Na+=Ya.length);var me=[];"call"==og&&(jc=1E5,me=["CALL"]);for(void 0!==ng&&a.i(Ba+" instructions earlier:");0<
jc&&Na!=a.T;){var rg=Ya[Na++];if(null==rg.J)break;var kc=Xf(rg.J),oi=Ba--,sg=jh(a,kc,"history",oi);(!me.length||0<=sg.indexOf(me[0]))&&a.i(sg);kc.Fb&&(Na+=kc.Fb,jc-=kc.Fb,Ba-=kc.Fb);Na>=Ya.length&&(Na=0);a.sa=Ba;qg++;jc--}}qg||(a.i("no "+pg+"history available"),a.sa=void 0)}else{var Yc=cg(a,ma);if(Yc){var Zc=0;Ma&&("l"==Ma.charAt(0)&&(Ma=Ma.substr(1)||ec),Zc=Qf(a,Ma)>>>0,65536<Zc&&(Zc=65536));for(var lc="",$c="dd"==ta?4:"dw"==ta?2:1,ad=$c*Zc||128,pi=ad+15>>4||1;pi--&&0<ad;){var bd=0,ne=0,mc,oe="",
tg="",ma=ig(Yc.J);for(mc=16;0<mc&&0<ad;mc--){var cd=a.Ga(Yc,1),bd=bd|cd<<(ne++<<3);ne==$c&&(oe+=n(bd,2*$c),oe+=1==$c?9==mc?"-":" ":" ",bd=ne=0);tg+=32<=cd&&128>cd?String.fromCharCode(cd):".";ad--}lc&&(lc+="\n");lc+=ma+" "+oe+(mc?"":" "+tg)}lc&&a.i(lc);a.la=Yc}}}}break;case "e":if("else"==f[0])break;var dd=1,ug=255,vg=a.Ga,wg=a.Sb;"ew"==f[0]&&(dd=2,ug=65535,vg=a.Bb,wg=a.vc);var xg=dd<<1,yg=f[1];if(null==yg)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 ed=cg(a,yg);if(ed)for(var fd=2;fd<f.length;fd++){var nc=Of(a,f[fd]);if(void 0===nc){a.i("unrecognized value: "+f[fd]);break}nc&~ug&&a.i("warning: "+n(nc)+" exceeds "+dd+"-byte value");var qi=vg.call(a,ed);a.i("changing "+ig(ed.J)+" from "+n(qi,xg,!0)+" to "+n(nc,xg,!0));wg.call(a,ed,nc,dd)}}break;case "f":Fh(a,f[1]);break;case "g":a:{var zg=f[1],ri=b;if(void 0!==zg){var pe=cg(a,zg,!0);if(!pe)break a;hg(a,pe,ri);a.Pa(a.j,pe,!0)}ah(a,!0)||c||a.i("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var qe;if(a.G.ka)qe="halting",a.da();else{if(mb(a,!0))break a;qe="already halted"}c||a.i(qe)}break;case "i":if("if"==f[0]){var re;var oc=b.substr(2),oc=oa(oc);Of(a,oc)?(c||a.i("true: "+oc),re=!0):(c||a.i("false: "+oc),re=!1);re||(d=!1);break}if("int"==f[0]){var gd;var si=f[1];if(a.u.N&512){var se=Of(a,si);null==se?gd=!1:(a.i("requesting interrupt level "+se),Ed(a.u,se),gd=!0)}else a.i("interrupts disabled (use rif=1 to enable)"),gd=!1;gd||(d=!1);break}var te=f[1];if(te&&"?"!=te){var ue=
Qf(a,te);if(void 0!==ue){var ti=Pb(a.H,ue);a.i(q(ue)+": "+ea(ti))}}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 ui=f[0];if("?"==f[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var ve=0,Ag=Xf(),pc=Xf(a.u.M);for(a.i("stack trace for "+ig(pc.J));10>ve;){for(var rb=null,vi=256;65536>pc.J>>>0;){Ag.J=a.Bb(pc,2);if(null==pc.J||!vi--)break;for(var wi=a,hd=Ag,
Bg=null,qc=hd.J,Cg=qc,we=1;6>=we&&qc;we++){if(2<we){hd.J=qc;var id=jh(wi,hd);if(0<=id.indexOf("CALL")){var Dg=id.indexOf(" ");if(qc+(id.indexOf(" ",Dg+1)-Dg-1)/2==Cg){Bg=id;break}}}qc--}hd.J=Cg;if(rb=Bg)break}if(!rb||null==rb)break;var Eg=null;if("ks"==ui){var Fg=rb.match(/[0-9A-F]+$/);Fg&&(Eg=Hh(a,Fg[0]))}rb=na(rb,50)+" ;"+(Eg||"stack="+ig(pc.J));a.i(rb);ve++}ve||a.i("no return addresses found")}break;case "l":"ln"==f[0]&&Hh(a,f[1],!0);break;case "m":a:{var Za,$a=null,aa=f[1];"?"==aa&&(aa=void 0);
if(void 0!==aa){var kb=0;if("all"==aa)kb=1878917119,aa=null;else if("on"==aa)$a=!0,aa=null;else if("off"==aa)$a=!1,aa=null;else{"keys"==aa&&(aa="key");"kbd"==aa&&(aa="keyboard");for(Za in ub)if(aa==Za){kb=ub[Za];$a=!!(a.ha&kb);break}if(!kb){a.i("unknown message category: "+aa);break a}}if(kb)if("on"==f[2])a.ha|=kb,$a=!0;else if("off"==f[2]&&(a.ha&=~kb,$a=!1,1073741824==kb)){for(var xe=0;xe<a.X.length;xe++)a.i(a.X[xe]);a.X=[]}}var xi=0,rc="";for(Za in ub)if(!aa||aa==Za){var yi=!!(a.ha&ub[Za]);if(null===
$a||$a==yi)rc&&(rc+=","),++xi%10||(rc+="\n\t"),"key"==Za&&(Za="keys"),rc+=Za}void 0===aa&&a.i("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.i((null!==$a?$a?"messages on: ":"messages off: ":"message categories:\n\t")+(rc||"none"));Zf(a)}break;case "o":var ye=f[1],zi=f[2];if(ye&&"?"!=ye){var ze=Qf(a,ye,"port #"),Ae=Qf(a,zi);void 0!==ze&&void 0!==Ae&&(Tb(a.H,ze,Ae),a.i(q(ze)+": "+ea(Ae)))}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]){Jh(a,b.substr(5));break}var Gg="pr"==f[0]?1:0,Ai=1+Gg;if(a.M)a.i("step in progress");else{var Be=Xf(a.u.j);switch(a.Ga(Be)){case 205:a.M=Ai,eg(Be,3)}a.M?(a.Pa(a.j,Be,!0),ah(a)||(a.S&&Ic(a.S),a.M=0)):Kh(a,Gg?"tr":"t")}break;case "r":if("reset"==b){a.S&&a.S.reset();break}ch(a,f);break;case "s":Ih(a,f);break;case "t":Kh(a,f[0],f[1]);break;case "u":dh(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Gh(a,b.substr(3))||(d=!1);break}a.i("PC8080 version 1.32.0 ("+a.u.tb+",RELEASE"+
(sb?",TYPEDARRAYS":",LONGARRAYS")+")");a.i(xa());break;case "?":if(f[1]){Jh(a,b.substr(1));break}var Ce="commands:",De;for(De in Mh)Ce+="\n"+na(De,9)+Mh[De];Fd(a)||(Ce+="\nnote: frequency/history disabled if no exec breakpoints");a.i(Ce);break;default:a.i("unknown command: "+b),d=!1}}}catch(Ig){a.i("debugger error: "+(Ig.stack||Ig.message)),d=!1}return d}function Ac(a,b,c){b=a.wb(b,c);for(var d in b)if(!ih(a,b[+d]))return!1;return!0}
var Mh={"?":"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"},
Wf=8080,kh=8086,lh="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(" "),mh="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(" "),
Lg=0,Mg=1,Ng=2,Og=3,Pg=4,Qg=5,Rg=6,Kg=7,Sg=8,Tg=9,Ug=10,Vg=11,Wg=12,Xg=13,Yg=14,Hg="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),ph=15,oh=240,xh=3840,qh=61440,nh=0,Q=1,th=2,uh=3,wh=16,P=32,vh=64,yh=128,S=Kg<<8|wh|Q,T=Lg<<8|wh|Q,U=Mg<<8|wh|Q,V=Ng<<8|wh|Q,W=Og<<8|wh|Q,X=Pg<<8|wh|Q,Y=Qg<<8|wh|Q,Z=Rg<<8|wh|Q|vh,Nh=Sg<<8|wh|uh,Oh=Tg<<8|wh|uh,Ph=Ug<<8|wh|uh,Qh=Vg<<8|wh|uh,Rh=Yg<<8|wh|uh,sh=4096,rh=8192,O=16384,zh=32768,ag=[[45],[42,Nh,P],[71,Nh|vh,S|O],[29,Nh],[28,T],[22,T],[44,T,P],[63],[45,zh],[21,
Ph|O,Nh],[40,S|O,Nh|vh],[23,Nh],[28,U],[22,U],[44,U,P],[64],[45,zh],[42,Oh,P],[71,Oh|vh,S|O],[29,Oh],[28,V],[22,V],[44,V,P],[52],[45,zh],[21,Ph|O,Oh],[40,S|O,Oh|vh],[23,Oh],[28,W],[22,W],[44,W,P],[53],[45,zh],[42,Ph,P],[68,51|vh,Ph|O],[29,Ph],[28,X],[22,X],[44,X,P],[20],[45,zh],[21,Ph|O,Ph],[41,Ph|O,51|vh],[23,Ph],[28,Y],[22,Y],[44,Y,P],[16,S|O],[45,zh],[42,Qh,P],[70,51|vh,S|O],[29,Qh],[28,Z],[22,Z],[44,Z,P],[72],[45,zh],[21,Ph|O,Qh],[39,S|O,51|vh],[23,Qh],[28,S],[22,S],[44,S,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,S],[43,U,T],[43,U,U],[43,U,V],[43,U,W],[43,U,X],[43,U,Y],[43,U,Z],[43,U,S],[43,V,T],[43,V,U],[43,V,V],[43,V,W],[43,V,X],[43,V,Y],[43,V,Z],[43,V,S],[43,W,T],[43,W,U],[43,W,V],[43,W,W],[43,W,X],[43,W,Y],[43,W,Z],[43,W,S],[43,X,T],[43,X,U],[43,X,V],[43,X,W],[43,X,X],[43,X,Y],[43,X,Z],[43,X,S],[43,Y,T],[43,Y,U],[43,Y,V],[43,Y,W],[43,Y,X],[43,Y,Y],[43,Y,Z],[43,Y,S],[43,Z,T],[43,Z,U],[43,Z,V],[43,Z,W],[43,Z,X],[43,Z,Y],[26],[43,Z,S],[43,S,T],[43,S,
U],[43,S,V],[43,S,W],[43,S,X],[43,S,Y],[43,S,Z],[43,S,S],[3,S|O,T],[3,S|O,U],[3,S|O,V],[3,S|O,W],[3,S|O,X],[3,S|O,Y],[3,S|O,Z],[3,S|O,S],[2,S|O,T],[2,S|O,U],[2,S|O,V],[2,S|O,W],[2,S|O,X],[2,S|O,Y],[2,S|O,Z],[2,S|O,S],[73,S|O,T],[73,S|O,U],[73,S|O,V],[73,S|O,W],[73,S|O,X],[73,S|O,Y],[73,S|O,Z],[73,S|O,S],[66,S|O,T],[66,S|O,U],[66,S|O,V],[66,S|O,W],[66,S|O,X],[66,S|O,Y],[66,S|O,Z],[66,S|O,S],[5,S|O,T],[5,S|O,U],[5,S|O,V],[5,S|O,W],[5,S|O,X],[5,S|O,Y],[5,S|O,Z],[5,S|O,S],[76,S|O,T],[76,S|O,U],[76,S|
O,V],[76,S|O,W],[76,S|O,X],[76,S|O,Y],[76,S|O,Z],[76,S|O,S],[46,S|O,T],[46,S|O,U],[46,S|O,V],[46,S|O,W],[46,S|O,X],[46,S|O,Y],[46,S|O,Z],[46,S|O,S],[18,S|O,T],[18,S|O,U],[18,S|O,V],[18,S|O,W],[18,S|O,X],[18,S|O,Y],[18,S|O,Z],[18,S|O,S],[58],[50,Nh],[34,51],[30,51],[11,51],[51,Nh],[4,S|O,P|Q],[65,yh],[62],[54],[38,51],[30,51|zh],[15,51],[7,51],[1,S|O,P|Q],[65,yh],[57],[50,Oh],[33,51],[48,P|Q,S|O],[10,51],[51,Oh],[74,S|O,P|Q],[65,yh],[55],[54,zh],[31,51],[27,S|O,P|Q],[8,51],[7,51|zh],[67,S|O,P|Q],[65,
yh],[61],[50,Ph],[37,51],[78,Qh|vh|O,Ph|O],[14,51],[51,Ph],[6,S|O,P|Q],[65,yh],[60],[49,Ph],[36,51],[75,Ph|O,Oh|O],[13,51],[7,51|zh],[77,S|O,P|Q],[65,yh],[59],[50,Rh],[35,51],[24],[12,51],[51,Rh],[47,S|O,P|Q],[65,yh],[56],[69,Qh|O,Ph|O],[32,51],[25],[9,51],[7,51|zh],[19,S|O,P|Q],[65,yh]],$g=1E3;Oa(function(){for(var a=hb(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=fb(c),d=new Vf(d);gb(d,c)}});
function Sh(a,b,c){x.call(this,"Computer",a,0,67108864);this.G.ja=!1;Th(this,b);this.L=wc(this,"autoPower",a);this.j=0;this.T=a.busWidth||a.buswidth;this.b=Uh;this.F=null;this.C=this.O=!1;this.U=wc(this,"url")||"";(Math.random()+.1).toString(36);this.g=Vh(this);if(this.u=eb("CPU",this.id)){this.K=eb("Debugger",this.id);this.A=[];for(b=null;b=wb(this,"Video",b);)this.A.push(b);this.H=new yb({id:this.ab+".bus",busWidth:this.T},this.u,this.K);var d,e=cb(this.id);if((this.B=eb("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.32.0\nCopyright \u00a9 2012-2017 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=wc(this,"state")||(f=!0,a.state))b=this.M=a,f||(this.C=!0,this.b=Uh),this.b&&(this.I=new Wc(this,"1.32.0"),Wh(this.I)?b=null:delete this.I);
!b&&this.b&&(b=Xh(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);lb(g)})}else lb(this);this.P.power||(this.L=!0);!c&&this.L&&Yh(this,this.kb)}else v("Unable to find CPU component")}ba(Sh,x);function Th(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 wc(a,b,c){var d=b.toLowerCase(),d=Ha(b)||Ha(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 Yh(a,b,c){for(var d=cb(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!jb(f)){jb(f,function(){Yh(a,b,c)});return}}b.call(a,c)}
function Zh(a,b){var c=new Wc(a,"1.32.0",$h);if(Wh(c)&&ai(c)){var d=c.get(bi),e=b?b.get(bi):"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=Sh.prototype;
k.kb=function(a){void 0===a&&(a=this.b||(this.F?ci:Uh));if(!this.j){this.j++;var b=!1,c=!1;this.N=!1;var d=this.I||new Wc(this,"1.32.0");if(a==di)b=!0;else if(a>Uh){if(Wh(d,this.F)){this.w=new Wc(this,"1.32.0",ei);Wh(this.w)&&(fi(this,d),a=gi,hi(this.w));this.w.set(bi,sa());ii(this.w);var e=this.b&&!this.C;if(a==ci||Aa("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ai(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Wh(d,g):("error"==f&&"no machine state"!=
g?(this.aa("Error: "+g),"unable to verify user"==g&&(Fa(ji,""),this.g=null)):this.i(f+": "+g),hi(d),Wh(d)?(c=ai(d),e=!0):c=!1))}e&&Zh(this,c?d:null)}else a==gi&&d.clear()}else Zh(this);delete this.F;delete this.I}e=cb(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.u&&(c=ki(this,g,d,b,c));b=[d,a,c];a!=di?Yh(this,this.fc,b):this.fc(b)}};
function ki(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=Uh,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&&(ki(this,this.u,b,c,a),this.u.ib());this.N&&(fi(this,b),b.clear());!c&&this.w&&(this.w.clear(),delete this.w);this.j=0};
function fi(a,b){if(Aa("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.32.0"};d.url=a.U;d.user=c;d.type="bug";d.data=b;va("http://www.pcjs.org/api/v1/report",d,!0)}}
function Lh(a,b,c){var d,e="none";if(a.j)return null;a.j--;var f=new Wc(a,"1.32.0"),g=new Wc(a,"1.32.0",$h),h=sa();g.set(bi,h);f.set(bi,h);f.set(li,"1.32.0");f.set(mi,window?window.location.href:null);f.set(ni,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=cb(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&&Bi(a,
a.g,f.toString()),ii(g)&&ii(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Ci),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&&(pb(this,"Resetting "+this.H.type),this.H.reset());for(var a=cb(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(pb(this,"Resetting "+c.type),c.reset())}};
k.start=function(a,b){for(var c=cb(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=cb(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?Lh(d,!1,!0):Yh(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=Aa("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Lh(d,a,!0);!a&&d.M?window&&window.location.reload():d.kb(Uh)}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=Vh(d,!0);if(a){var b=!!(d.b&&!d.D||d.M),c=Lh(d,b);b?Bi(d,a,c):d.aa("Resume disabled, machine state not saved")}},!0}return!1};
function Vh(a,b){var c=a.g;c||((c=Ea(ji),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=Di(a,c))||a.aa("The user ID is invalid.")):b&&a.aa("Browser local storage is not available"));return c}
function Di(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&&(Fa(ji,b.data),a.g=b.data)}catch(d){v(d.message+" ("+c+")")}return a.g}function Xh(a){var b=null;a.g&&(b=ja()+"/api/v1/user?req=load&user="+a.g+"&state="+Ei(a,"1.32.0"));return b}
function Bi(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Ei(a,"1.32.0");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),Fa(ji,""),a.g=null)}}
function wb(a,b,c){a=cb(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 Ic(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 Mc(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",Xc(a),4),J(a,"D",a.B),J(a,"E",a.C),J(a,"DE",kd(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=Vc(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 ei="failsafe",$h="validate",bi="timestamp",li="version",mi="url",ni="browser",ji="user",di=-1,Uh=0,ci=1,gi=2,Ci=3;Oa(function(){for(var a=hb(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=fb(c),c=hb(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=fb(f),g=new Sh(g,d,!0);gb(g,f);g.L&&Yh(g,g.kb)}});Pa.show.push(function(){for(var a=hb(document,"pc8080","computer"),b=0;b<a.length;b++){var c=fb(a[b]);(c=eb("Computer",c.id))&&c.W&&!c.G.ja&&c.kb(di)}});
Pa.exit.push(function(){for(var a=hb(document,"pc8080","computer"),b=0;b<a.length;b++){var c=fb(a[b]);(c=eb("Computer",c.id))&&c.G.ja&&Lh(c,!(!c.b||c.D),!0)}});function Wc(a,b,c){this.id=a.id;this.K=a.K;this.g="";this.b={};this.u=this.H=!1;this.key=Ei(a,b,c);hi(this,a.wd)}k=Wc.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 Wh(a,b){return b?(a.g=b,a.u=!0,a.H=!1,!0):a.u?!0:Ca()&&(b=Ea(a.key))?(a.g=b,a.u=!0):!1}function ai(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 ii(a){var b=!0;if(Ca()){var c=JSON.stringify(a.b);Fa(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 hi(a,b){a.g="";a.b={};a.u=a.H=!1;b&&a.set("parms",b)}
k.clear=function(a){hi(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 Ei(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 Fi=0;
function Gi(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)):Hi(h,a,b,c,d,e,f)})}
function Hi(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(ab(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?Ii(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
null)}
function Ii(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);Ii(a,b,c)}})}else c(a,null)}
function Ji(a,b,c,d){function e(a){if(void 0===h){var b=g&&hb(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=ka(a))}function f(a){e("Error: "+a);l&&(--Fi||Ta(!0));l=!1}var g,h,l=!0;Fi++;bb[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.32.0/components.xsl");p=function(d,h){h?Gi(c,null,null,!1,e,function(d,l){l?(ab(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--Fi||Ta(!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),--Fi||Ta(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?Gi(b,a,d,!0,e,p):Hi(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){Ta(!1);return Ji(a,b,c,d)};window.enableEvents=Ta;window.sendEvent=Va;})();