pcjs/versions/pc8080/1.32.2/pc8080-dbg.js
2017-01-30 15:44:43 -08:00

296 lines
110 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/component.js (C) Jeff Parsons 2012-2017
http://pcjs.org/modules/shared/es6/usrlib.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 aa(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={Be:0,Ee:1,Fe:2,Ge:3,He:4,Ie:5,Je:6,Ke:7,Le:8,Me:9,Ne:10,Oe:11,Pe:12,Qe:13,Re:14,Se:15,Te:16,Ue:17,Ve:18,We:19,Xe:20,Ye:21,Ze:22,$e:23,af:24,bf:25,cf: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,ab:65,Ub:66,Vb:67,Fb:68,E:69,Yb:70,Zb:71,$b:72,ac:73,bc:74,cc:75,Hb:76,gc:77,hc:78,lc:79,mc:80,Q:81,nc:82,pc:83,qc:84,rc:85,tc:86,uc:87,
wc:88,xc:89,wb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,yc:97,ud:98,xd:99,d:100,e:101,Bd:102,Dd:103,Ed:104,Fd:105,Od:106,k:107,Pd:108,Rd:109,n:110,Sd:111,p:112,q:113,r:114,oe:115,t:116,pe:117,qe:118,re:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,df:127},ca={59:186,61:187,173:189,224:91};
function n(a,b,c){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.vc=b.comment;this.Ad=b;this.exports={};this.P=this.bindings={};a=this.id.indexOf(".");0>a?this.cb=this.id:(this.eb=this.id.substr(0,a),this.cb=this.id.substr(a+1));this.G={ready:!1,mb:!1,Ib:!1,ja:!1,error:!1};this.zb=null;this.G.error=!1;this.ha=c||0;this.K=this.u=this.H=this.R=this.ta=null;da.push(this)}function ea(a,b,c){fa[a]&&b&&(fa[a][b]=c)}function ga(){return Date.now()||+new Date}
function ha(a,b,c){b||p((c?c+": ":"")+a)}function p(a){window&&window.alert(a)}function ia(a){var b=!1;window&&(b=window.confirm(a));return b}function ka(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<da.length;b++){var d=da[b];a&&d.id.indexOf(a)||c.push(d)}return c}function la(a){if(void 0!==a){var b;for(b=0;b<da.length;b++)if(da[b].id===a)return da[b]}return null}
function ma(a,b){var c;if(void 0!==a){var d;b&&(b=0<(d=b.indexOf("."))?b.substr(0,d+1):"");for(d=0;d<da.length;d++)if(c)c==da[d]&&(c=null);else if(!(a!=da[d].type||b&&da[d].id.indexOf(b)))return da[d]}return null}function oa(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){p(c.message+" ("+a+")")}return b}
function pa(a,b){b=qa(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=oa(f))&&g.binding&&a.ca(g.type,g.binding,f,g.value),l=h.length}}}}
function qa(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=n.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.cb)}),!0;default:return!1}};k.log=function(){};k.i=function(){};
k.status=function(a){this.i(this.cb+": "+a)};k.aa=function(a,b,c){ha(a,b,c||this.type)};function ra(a,b){a.G.error=!0;a.aa(b)}function sa(a,b){b&&(a.G.ready?b():a.zb=b);return a.G.ready}function ta(a){if(!a.G.error&&(a.G.ready=!0,a.G.ready)){var b=a.zb;a.zb=null;b&&b()}}function va(a,b){a.G.mb&&(b?a.G.Ib=!0:void 0===b&&a.i(a.toString()+" busy"));return a.G.mb}function wa(a,b){if(a.G.Ib)return a.G.mb=!1,a.G.Ib=!1;if(a.G.error)return a.i(a.toString()+" error"),!1;a.G.mb=b;return a.G.mb}
k.va=function(){return this.G.ja=!0};k.ua=function(a,b){b&&(this.G.ja=!1);return!0};function xa(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.wd)}return!1}function ya(a,b){a.K&&xa(a,0)&&a.K.message(b,void 0)}function q(a,b,c,d,e,f,g){a.K&&(!0===g?g=0:null==g&&(g=a.ha),Aa(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 fa=window?window.PCjs.Machines:{},da=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});
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 t(a,b,c){var d="";b?8<b&&(b=8):b=a&-65536?8:4;if(null==a||isNaN(a))for(;0<b--;)d="?"+d;else for(;0<b--;){var e=a&15,e=e+(0<=e&&9>=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}
function Ea(a){return t(a,2,!0)}function x(a){return t(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=Ia();return-1!==a.indexOf("pcjs.org",a.length-8)}function Ja(a){return a.replace(/[&<>"']/g,function(a){return Ka[a]})}function La(a,b){return(a+" ").slice(0,b)}
function Oa(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var Ka={"&":"&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(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
function Sa(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1}
function Ta(a,b,c,d){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="",r;for(r in b)b.hasOwnProperty(r)&&(l&&(l+="&"),l+=r+"="+encodeURIComponent(b[r]));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 Ua(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&&(p(d.ma[0]),d=null):(p("Empty resource: "+a),d=null)}catch(h){p("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)){p("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.ma=e)}return d}
function Ia(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Va(){return window?window.navigator.userAgent:""}function Wa(){if(null==Xa){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}Xa=a}return Xa}function Ya(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}
function bb(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function cb(a){if(window){var b=Va();return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}function db(a){if(!eb){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," "))}eb=c}return eb[a]}
function fb(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}function gb(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 hb(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}
function ib(a){jb.init.push(a)}function kb(a){if(lb)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){ha("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function nb(a){!lb&&a?(lb=!0,ob&&pb("init"),qb&&pb("show")):lb=a}function pb(a){jb[a]&&kb(jb[a])}var eb=null,jb={init:[],show:[],exit:[]},ob=!1,qb=!1,lb=!0,Xa=null;hb("onload",function(){ob=!0;kb(jb.init)});hb("onpageshow",function(){qb=!0;kb(jb.show)});
hb(cb("Opera")||cb("iOS")?"onunload":"onbeforeunload",function(){kb(jb.exit)});
var rb="undefined"!==typeof ArrayBuffer,sb=[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,
0,0,1,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1],tb={cpu:1,bus:64,mem:128,port:256,nvr:16384,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:268435456,warn:536870912,buffer:1073741824,halt:-2147483648};function vb(a){n.call(this,"Panel",a)}aa(vb,n);
vb.prototype.ca=function(a,b,c,d){return this.R&&this.R.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:n.prototype.ca.call(this,a,b,c,d)};vb.prototype.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;this.B=wb(a,"Keyboard")};vb.prototype.va=function(a,b){b||xb();return!0};vb.prototype.ua=function(){return!0};
function xb(){for(var a=!1,b=qa(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=oa(d),f=la(e.id);f||(a=!0,f=new vb(e));pa(f,d);a&&ta(f)}}ib(xb);
function yb(a,b,c){n.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.S=[];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;ta(this)}aa(yb,n);yb.prototype.reset=function(){};
yb.prototype.va=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,r=a.w-(e-l);r>f&&(r=f);if(h&&h.size){if(h.type==d){if(e+f<=h.J)return h.pb+=h.J-e,h.J=e,!0;if(e>=h.J+h.pb){r=h.size-(e-l);r>f&&(r=f);h.pb=e-h.J+r;e=l+a.w;f-=r;g++;continue}}return Bb(Cb,e,f)}e=new z(e,r,a.w,d);zb(e,a.K,h);a.b[g++]=e;e=l+a.w;f-=r}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Db[d]+" at "+x(b)),!0):Bb(Eb,b,c)}
function Fb(a,b){return a.b[(b&a.C)>>>a.g].ob(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].Hc(c,b):a.b[d++].Ya(c,b)|a.b[d&a.I].Ya(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].Nb(c,b):a.b[d++].ob(c,b)|a.b[d&a.I].ob(0,b+1)<<8}function Ib(a,b,c){a.b[(b&a.C)>>>a.g].qb(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].Kc(d,c&65535,b):(a.b[e++].$a(d,c&255,b),a.b[e&a.I].$a(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.Dc){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,l=[];g<e.length;){for(var r=e[g],u=g+1;u<e.length&&e[u]===r;)u++;l[h++]=u-g;l[h++]=r;g=u}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]?p("Input port "+x(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.S[b]||1,l=1==h?255:2==h?65535:-1,r=l;void 0!==g?(g[0]&&(r=g[0](b,c),void 0===r?r=l:r&=l),a.K&&a.D!=g[1]&&Qb(a.K,b,r)):a.K&&(Aa(a.K,a,b,null,c),a.D&&Qb(a.K,b,r));e|=r<<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]?p("Output port "+x(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&&(Aa(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){p("Memory block error ("+a+": "+t(b)+","+t(c)+")");return!1}var Cb=1,Eb=2,Vb;if(rb){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.pb=b;this.size=c||0;this.type=d||Zb;this.u=d==$b;zb(this);this.Ca=this.Dc=!1;if(c)if(rb)this.j=new ArrayBuffer(c),this.R=new DataView(this.j,0,c),this.g=new Uint8Array(this.j,0,c),this.w=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(rb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.R.getInt32(b<<2,!0);else a=this.b;return a};k.restore=function(a){if(a&&this.size==a.length<<2){var b;if(rb)for(b=0;b<a.length;b++)this.R.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.Ya=b[0]||a.Gc,a.Hc=b[2]||a.Ic);if(c||void 0===c)a.ob=b[0]||a.Gc,a.Nb=b[2]||a.Ic}
function hc(a,b,c){c&&a.P||(a.$a=!a.u&&b[1]||a.rb,a.Kc=!a.u&&b[3]||a.Rb);if(c||void 0===c)a.qb=b[1]||a.rb,a.Sb=b[3]||a.Rb}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.$a=a.u?a.rb:a.qb,a.Kc=a.u?a.Rb:a.Sb):--a.H||(a.Ya=a.ob,a.Hc=a.Nb)}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.Gc=function(){this.K&&xa(this.K,129)&&this.K.message("attempt to read invalid block %"+t(this.J),!0);return 255};
k.rb=function(a,b){this.K&&xa(this.K,129)&&this.K.message("attempt to write "+x(b)+" to invalid block %"+t(this.J),!0)};k.Ic=function(a,b){return this.Ya(a++,b++)|this.Ya(a,b)<<8};k.Rb=function(a,b,c){this.$a(a++,b&255,c++);this.$a(a,b>>8,c)};k.ie=function(a){return this.b[a>>2]>>>((a&3)<<3)&255};k.me=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.ve=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.ze=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.ge=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.ob(a,b)};k.ke=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.Nb(a,b)};
k.te=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.rb(0,b):this.qb(a,b,c)};k.xe=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.rb(0,b):this.Sb(a,b,c)};k.fe=function(a){return this.g[a]};k.he=function(a){return this.g[a]};k.je=function(a){return this.R.getUint16(a,!0)};k.le=function(a){return a&1?this.g[a]|this.g[a+1]<<8:this.w[a>>1]};k.se=function(a,b){this.g[a]=b;this.Ca=!0};
k.ue=function(a,b){this.g[a]=b;this.Ca=!0};k.we=function(a,b){this.R.setUint16(a,b,!0);this.Ca=!0};k.ye=function(a,b){a&1?(this.g[a]=b,this.g[a+1]=b>>8):this.w[a>>1]=b;this.Ca=!0};var Zb=0,$b=2,Db=["NONE","RAM","ROM","VID","H/W"],Yb=0,fc=[],dc=[z.prototype.ie,z.prototype.ve,z.prototype.me,z.prototype.ze],ic=[z.prototype.ge,z.prototype.te,z.prototype.ke,z.prototype.xe];if(rb)var cc=[z.prototype.fe,z.prototype.se,z.prototype.je,z.prototype.we],bc=[z.prototype.he,z.prototype.ue,z.prototype.le,z.prototype.ye];
function uc(a,b){n.call(this,"CPU",a,1);var c=a.multiplier||1;this.Fa=a.cycles||b;this.U=c;this.Ta=Math.round(this.Fa/1E4)/100;this.Z=this.Ta*this.U;this.G.ka=!1;this.G.Qb=!1;this.G.lb=a.autoStart;this.G.Bc=!1;this.G.Wa=!1;this.ya=this.oa=0;this.za=a.csStart;this.na=a.csInterval;this.sa=a.csStop;this.T=[];this.Db=this.tb.bind(this);ta(this)}aa(uc,n);k=uc.prototype;
k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.K=d;for(b=0;b<vc.length;b++)(c=this.P[vc[b]])&&this.R.ca(null,vc[b],c);this.W=wb(a,"ChipSet");a=wc(a,"autoStart");null!=a&&(this.G.lb="true"==a?!0:"false"==a?!1:!!a);ta(this)};k.reset=function(){};k.save=function(){return null};k.restore=function(){return!1};
k.va=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.ua=function(a){return a?this.save():!0};k.lb=function(){return this.G.lb||!this.K&&void 0===this.P.run?(this.tb(),!0):!1};k.Ec=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.Wa=0<=a.za&&0<a.na;a.G.Wa&&(a.ya=0,a.oa=a.za-a.la)}function Cc(a,b){if(a.G.Wa){var c=!1;a.ya=a.ya+a.Ec()|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="+t(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.R)if(a=d.R,a.G.ja)a=!0;else{var b=null,c,h=ka(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);p("The "+b.type+" component ("+b.id+") is not "+(b.G.ready?"powered yet":"ready yet"+(b.zb?" (waiting for notification)":""))+".");a=!1}a&&(d.G.ka?d.da():d.tb())};
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.Ta);a.jb=Math.round(1E3/Hc);a.Na=Math.floor(a.Fa/Hc*c);b||(a.wa=a.Na);a.Va=0}function Dc(a){return a.la+a.X+a.ga-a.b}function xc(a){a.Y=0;a.kb=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.Ta*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.R&&a.R.Za()}Fc(a,a.X);a.X=0;a.V=ga();a.ea=0;Gc(a);return d}function Ic(a,b){var c=a.T.length;a.T.push([-1,b]);return c}function Jc(a,b,c){0<=b&&b<a.T.length&&0>a.T[b][0]&&(c*=a.Fa*a.U/1E3,a.T[b][0]=c+Kc(a))}function Kc(a,b){var c=a.ga-=a.b;a.b=0;b&&(a.ga=0);return c}
k.tb=function(a){if(wa(this,!0)){if(!this.G.ka){Ec(this);this.R&&this.R.start(this.V,Dc(this));this.G.ka=!0;this.G.Qb=!0;this.W&&this.W.start();var b=this.P.run;b&&(b.textContent="Halt");this.R&&(Lc(this.R,!0),a&&this.R.Za(!0))}this.Va>=this.Fa&&Gc(this,!0);this.Ha=0;this.Ma=ga();this.ea&&(a=this.Ma-this.ea,a>this.jb&&(this.V+=a,this.V>this.Ma&&(this.V=this.Ma)));try{do{for(var c,d=this.G.Wa?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.Eb(c);c=Kc(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.wa-=c;if(0>=this.wa){this.wa+=this.Na;++this.kb>=Mc&&(this.R&&Lc(this.R),this.kb=0);break}}while(this.G.ka)}catch(l){this.da();Bc(this);this.R&&this.R.stop(ga(),Dc(this));wa(this,!1);ra(this,l.stack||l.message);return}c=setTimeout;d=this.Db;this.ea=ga();e=this.jb;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.Va+=this.Ha;this.ea+=e;c(d,e)}else Bc(this),this.R&&this.R.stop(ga(),Dc(this))};k.Eb=function(){return 0};k.da=function(a){va(this,!0);Kc(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.R){for(var c=a.R,d=0;d<c.A.length;d++)Nc(c.A[d],b);Lc(a.R,b)}}var Hc=30,Mc=15,vc=["power","reset"];
function Oc(a){var b=+a.model||8080;uc.call(this,a,1E6);this.xb=b;this.gb=Pc;xc(this);this.G.complete=this.G.zd=!1;this.ib=0;this.La=[];this.hb=0;Qc(this)}aa(Oc,uc);function Rc(a,b){a.La.push(b)}k=Oc.prototype;k.reset=function(){this.G.ka&&this.da();Qc(this);xc(this);this.G.error=!1;uc.prototype.reset.call(this)};function Qc(a){a.g=0;a.w=0;a.A=0;a.B=0;a.C=0;a.D=0;a.F=0;a.M=0;A(a,a.hb);Sc(a,0);a.S=0}function Tc(a,b){a.hb=b;A(a,b)}
k.Ec=function(){var a=this.g+this.w+this.A+this.B+this.C+this.D+this.F|0;return a=a+this.M+this.j+Uc(this)|0};k.save=function(){var a=new Vc(this);a.set(0,[this.g,this.w,this.A,this.B,this.C,this.D,this.F,this.M,this.j,Uc(this)]);a.set(1,[this.S,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;A(this,b[8]);Sc(this,b[9]);b=a[1];this.S=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++],r=e[h++];l--;)g[f++]=r;e=g}f=b.b[d];if(!f||!f.restore(e)){p("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.ib++;a=!0;break;default:a=uc.prototype.ca.call(this,a,b,c)}return a};function Wc(a){return a.w<<8|a.A}function id(a,b){a.w=b>>8&255;a.A=b&255}function jd(a){return a.B<<8|a.C}function kd(a,b){a.B=b>>8&255;a.C=b&255}function D(a){return a.D<<8|a.F}
function ld(a,b){a.D=b>>8&255;a.F=b&255}function A(a,b){a.j=b&65535}function md(a){return a.I&256?1:0}function nd(a,b){a.I=a.I&255|b}function od(a){return sb[a.L&255]?4:0}function pd(a){return(a.L^a.O)&16?16:0}function qd(a){return a.I&255?0:64}function rd(a){return a.L&128?128:0}function Uc(a){return a.N&-214|rd(a)|qd(a)|pd(a)|od(a)|md(a)}function Sc(a,b){a.I=a.L=a.O=0;b&1&&(a.I|=256);b&4||(a.L|=1);b&16&&(a.O|=16);b&64||(a.I|=255);b&128&&(a.L^=192);a.N=a.N&-726|b&512|2}
function sd(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b)&255}function td(a,b){a.O=a.g^b;return a.L=(a.I=a.g+b+(a.I&256?1:0))&255}function ud(a,b){a.I=a.L=a.O=a.g&b;(a.g|b)&8&&(a.O^=16);return a.I}function vd(a,b){a.O=b^255;b=a.L=b+255&255;a.I=a.I&-256|b;return b}function wd(a,b){a.O=b;b=a.L=b+1&255;a.I=a.I&-256|b;return b}function xd(a,b){return a.L=a.I=a.O=a.g|b}function yd(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 E(a,b){a=a.H;return a.b[(b&a.C)>>>a.g].Ya(b&a.j,b)}function Bd(a,b,c){a=a.H;a.b[(b&a.C)>>>a.g].$a(b&a.j,c&255,b)}function F(a){var b=E(a,a.j);A(a,a.j+1);return b}function G(a){var b=Gb(a.H,a.j);A(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 H(a,b){a.M=a.M-2&65535;Jb(a.H,a.M,b)}
function Dd(a){if(a.b&&a.S&255&&a.N&512){for(var b=0;8>b&&!(a.S&1<<b);b++);a.S&=~(0>b?255:1<<b);a.N&=-513;a.S&=-257;a.gb[199|b<<3].call(a)}return a.S&256?(Kc(a),!1):!0}function Ed(a,b){a.S|=1<<b;a.N&512&&Kc(a)}function I(a,b,c,d){d=d||2;a.P[b]&&(void 0===c&&(ra(a,"Value for "+b+" is invalid"),a.da()),c=!a.G.ka||a.G.Bc?t(c,d):"--------".substr(0,d),a.P[b].textContent!=c&&(a.P[b].textContent=c))}
k.Eb=function(a){this.G.complete=!0;var b=this.G.zd=this.K&&Fd(this.K),c=a?this.G.Qb?0:1:-1;this.G.Qb=!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.gb[F(this)].call(this)}while(0<this.b)}return this.G.complete?this.ga-this.b:void 0===this.G.complete?0:-1};ib(function(){for(var a=qa(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Oc(d);pa(d,c)}});function Hd(){this.b-=4}function Id(){A(this,G(this));this.b-=10}
function Jd(){A(this,Cd(this));this.b-=10}function Kd(){var a=G(this);H(this,this.j);A(this,a);this.b-=17}
var Pc=[Hd,function(){id(this,G(this));this.b-=10},function(){Bd(this,Wc(this),this.g);this.b-=7},function(){id(this,Wc(this)+1);this.b-=5},function(){this.w=wd(this,this.w);this.b-=5},function(){this.w=vd(this,this.w);this.b-=5},function(){this.w=F(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|a>>8;nd(this,a&256);this.b-=4},Hd,function(){var a;ld(this,a=D(this)+Wc(this));nd(this,a>>8&256);this.b-=10},function(){this.g=E(this,Wc(this));this.b-=7},function(){id(this,Wc(this)-1);this.b-=
5},function(){this.A=wd(this,this.A);this.b-=5},function(){this.A=vd(this,this.A);this.b-=5},function(){this.A=F(this);this.b-=7},function(){var a=this.g<<8&256;this.g=(a|this.g)>>1;nd(this,a);this.b-=4},Hd,function(){kd(this,G(this));this.b-=10},function(){Bd(this,jd(this),this.g);this.b-=7},function(){kd(this,jd(this)+1);this.b-=5},function(){this.B=wd(this,this.B);this.b-=5},function(){this.B=vd(this,this.B);this.b-=5},function(){this.B=F(this);this.b-=7},function(){var a=this.g<<1;this.g=a&255|
md(this);nd(this,a&256);this.b-=4},Hd,function(){var a;ld(this,a=D(this)+jd(this));nd(this,a>>8&256);this.b-=10},function(){this.g=E(this,jd(this));this.b-=7},function(){kd(this,jd(this)-1);this.b-=5},function(){this.C=wd(this,this.C);this.b-=5},function(){this.C=vd(this,this.C);this.b-=5},function(){this.C=F(this);this.b-=7},function(){var a=this.g<<8;this.g=(md(this)<<8|this.g)>>1;nd(this,a&256);this.b-=4},Hd,function(){ld(this,G(this));this.b-=10},function(){var a=G(this);Jb(this.H,a,D(this));
this.b-=16},function(){ld(this,D(this)+1);this.b-=5},function(){this.D=wd(this,this.D);this.b-=5},function(){this.D=vd(this,this.D);this.b-=5},function(){this.D=F(this);this.b-=7},function(){var a=0,b=md(this);if(pd(this)||9<(this.g&15))a|=6;if(b||154<=this.g)a|=96,b=1;this.g=sd(this,a);nd(this,b?256:0);this.b-=4},Hd,function(){var a;ld(this,a=D(this)+D(this));nd(this,a>>8&256);this.b-=10},function(){var a;a=G(this);a=Gb(this.H,a);ld(this,a);this.b-=16},function(){ld(this,D(this)-1);this.b-=5},function(){this.F=
wd(this,this.F);this.b-=5},function(){this.F=vd(this,this.F);this.b-=5},function(){this.F=F(this);this.b-=7},function(){this.g=~this.g&255;this.b-=4},Hd,function(){this.M=G(this)&65535;this.b-=10},function(){Bd(this,G(this),this.g);this.b-=13},function(){this.M=this.M+1&65535;this.b-=5},function(){var a=D(this);Bd(this,a,wd(this,E(this,a)));this.b-=10},function(){var a=D(this);Bd(this,a,vd(this,E(this,a)));this.b-=10},function(){Bd(this,D(this),F(this));this.b-=10},function(){this.I|=256;this.b-=
4},Hd,function(){var a;ld(this,a=D(this)+this.M);nd(this,a>>8&256);this.b-=10},function(){this.g=E(this,G(this));this.b-=13},function(){this.M=this.M-1&65535;this.b-=5},function(){this.g=wd(this,this.g);this.b-=5},function(){this.g=vd(this,this.g);this.b-=5},function(){this.g=F(this);this.b-=7},function(){nd(this,md(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.w=this.A;this.b-=5},function(){this.w=this.B;this.b-=5},function(){this.w=this.C;this.b-=5},function(){this.w=this.D;this.b-=
5},function(){this.w=this.F;this.b-=5},function(){this.w=E(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=E(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=E(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=E(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=E(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=E(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.S|=256;Kc(this);this.K&&xa(this,-2147483648)?(A(this,a),this.K.da()):this.N&512||(this.K&&A(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=E(this,D(this));this.b-=7},function(){this.b-=5},function(){this.g=sd(this,this.w);this.b-=4},function(){this.g=sd(this,this.A);this.b-=4},function(){this.g=sd(this,this.B);this.b-=4},function(){this.g=sd(this,
this.C);this.b-=4},function(){this.g=sd(this,this.D);this.b-=4},function(){this.g=sd(this,this.F);this.b-=4},function(){this.g=sd(this,E(this,D(this)));this.b-=7},function(){this.g=sd(this,this.g);this.b-=4},function(){this.g=td(this,this.w);this.b-=4},function(){this.g=td(this,this.A);this.b-=4},function(){this.g=td(this,this.B);this.b-=4},function(){this.g=td(this,this.C);this.b-=4},function(){this.g=td(this,this.D);this.b-=4},function(){this.g=td(this,this.F);this.b-=4},function(){this.g=td(this,
E(this,D(this)));this.b-=7},function(){this.g=td(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,E(this,D(this)));this.b-=7},function(){this.g=yd(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,E(this,D(this)));this.b-=7},function(){this.g=zd(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,E(this,D(this)));this.b-=7},function(){this.g=ud(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,E(this,D(this)));this.b-=7},function(){this.g=
Ad(this,this.g);this.b-=4},function(){this.g=xd(this,this.w);this.b-=4},function(){this.g=xd(this,this.A);this.b-=4},function(){this.g=xd(this,this.B);this.b-=4},function(){this.g=xd(this,this.C);this.b-=4},function(){this.g=xd(this,this.D);this.b-=4},function(){this.g=xd(this,this.F);this.b-=4},function(){this.g=xd(this,E(this,D(this)));this.b-=7},function(){this.g=xd(this,this.g);this.b-=4},function(){yd(this,this.w);this.b-=4},function(){yd(this,this.A);this.b-=4},function(){yd(this,this.B);this.b-=
4},function(){yd(this,this.C);this.b-=4},function(){yd(this,this.D);this.b-=4},function(){yd(this,this.F);this.b-=4},function(){yd(this,E(this,D(this)));this.b-=7},function(){yd(this,this.g);this.b-=4},function(){qd(this)||(A(this,Cd(this)),this.b-=6);this.b-=5},function(){id(this,Cd(this));this.b-=10},function(){var a=G(this);qd(this)||A(this,a);this.b-=10},Id,function(){var a=G(this);qd(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=11},function(){H(this,Wc(this));this.b-=11},function(){this.g=
sd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,0);this.b-=11},function(){qd(this)&&(A(this,Cd(this)),this.b-=6);this.b-=5},Jd,function(){var a=G(this);qd(this)&&A(this,a);this.b-=10},Id,function(){var a=G(this);qd(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Kd,function(){this.g=td(this,F(this));this.b-=7},function(){H(this,this.j);A(this,8);this.b-=11},function(){md(this)||(A(this,Cd(this)),this.b-=6);this.b-=5},function(){kd(this,Cd(this));this.b-=10},function(){var a=G(this);
md(this)||A(this,a);this.b-=10},function(){var a=F(this);Tb(this.H,a,this.g,this.j+-2&65535);this.b-=10},function(){var a=G(this);md(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=11},function(){H(this,jd(this));this.b-=11},function(){this.g=yd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,16);this.b-=11},function(){md(this)&&(A(this,Cd(this)),this.b-=6);this.b-=5},Jd,function(){var a=G(this);md(this)&&A(this,a);this.b-=10},function(){var a=F(this);this.g=Pb(this.H,a,this.j+-2&65535)&
255;this.b-=10},function(){var a=G(this);md(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Kd,function(){this.g=zd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,24);this.b-=11},function(){od(this)||(A(this,Cd(this)),this.b-=6);this.b-=5},function(){ld(this,Cd(this));this.b-=10},function(){var a=G(this);od(this)||A(this,a);this.b-=10},function(){var a=Cd(this);H(this,D(this));ld(this,a);this.b-=18},function(){var a=G(this);od(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=
11},function(){H(this,D(this));this.b-=11},function(){this.g=ud(this,F(this));this.b-=7},function(){H(this,this.j);A(this,32);this.b-=11},function(){od(this)&&(A(this,Cd(this)),this.b-=6);this.b-=5},function(){A(this,D(this));this.b-=5},function(){var a=G(this);od(this)&&A(this,a);this.b-=10},function(){var a=D(this);ld(this,jd(this));kd(this,a);this.b-=5},function(){var a=G(this);od(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Kd,function(){this.g=Ad(this,F(this));this.b-=7},function(){H(this,
this.j);A(this,40);this.b-=11},function(){rd(this)||(A(this,Cd(this)),this.b-=6);this.b-=5},function(){var a=Cd(this);Sc(this,a&255|this.N&-256);this.g=a>>8;this.b-=10},function(){var a=G(this);rd(this)||A(this,a);this.b-=10},function(){this.N&=-513;this.b-=4},function(){var a=G(this);rd(this)||(H(this,this.j),A(this,a),this.b-=6);this.b-=11},function(){H(this,Uc(this)&255|this.g<<8);this.b-=11},function(){this.g=xd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,48);this.b-=11},function(){rd(this)&&
(A(this,Cd(this)),this.b-=6);this.b-=5},function(){this.M=D(this)&65535;this.b-=5},function(){var a=G(this);rd(this)&&A(this,a);this.b-=10},function(){this.N|=512;this.b-=4;Dd(this)},function(){var a=G(this);rd(this)&&(H(this,this.j),A(this,a),this.b-=6);this.b-=11},Kd,function(){yd(this,F(this));this.b-=7},function(){H(this,this.j);A(this,56);this.b-=11}];
function Ld(a){n.call(this,"ChipSet",a,32768);var b=a.model;b&&!Md[b]&&ha("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);ta(this)}aa(Ld,n);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.R=a;this.B=wb(a,"Keyboard");this.C=wb(a,"SerialPort");this.video=wb(a,"Video");Ob(b,this,this.g.Bb);Sb(b,this,this.g.Cb);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+=x(e.j[b]);e.K.i(a)})}};k.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){this.g.INIT&&!this.restore(this.g.INIT)&&this.aa("reset error")};
k.save=function(){var a=new Vc(this);switch(this.g.pa){case Od.pa:a.set(0,[this.ea,this.A,this.ga,this.N,this.T,this.Y,this.Z]);break;case J.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.S,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 J.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.S=b[3],this.j=b[4],!0}return!1};k.start=function(){};k.stop=function(){};k.Jd=function(a,b){var c=this.ea;q(this,a,null,b,"STATUS0",c,!0);return c};
k.Kd=function(a,b){var c=this.A;q(this,a,null,b,"STATUS1",c,!0);return c};k.Ld=function(a,b){var c=this.ga;q(this,a,null,b,"STATUS2",c,!0);return c};k.Id=function(a,b){var c=this.N>>8-this.T&255;q(this,a,null,b,"SHIFT.RESULT",c,!0);return c};k.Wd=function(a,b,c){q(this,a,b,c,"SHIFT.COUNT",null,!0);this.T=b};k.Yd=function(a,b,c){q(this,a,b,c,"SOUND1",null,!0);this.Y=b};k.Xd=function(a,b,c){q(this,a,b,c,"SHIFT.DATA",null,!0);this.N=b<<8|this.N>>8};
k.Zd=function(a,b,c){q(this,a,b,c,"SOUND2",null,!0);this.Z=b};k.$d=function(a,b,c){q(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.Md=function(a,b){var c=this.D,c=c&~J.xa.jc;if((Dc(this.u)&64)<<1&&(c|=J.xa.jc,c!=this.D)){var d,e;d=this.L&1;e=this.L>>1&7;switch(e){case J.Aa.Ja.nd:break;case J.Aa.Ja.Lc:this.M=this.M<<1|d;break;case J.Aa.Ja.Rc:d=Pd(this);this.j[d]=J.Aa.vb;ya(this,"doNVRCommand(): erase data at addr "+x(d));break;case J.Aa.Ja.Mc:this.b=this.b<<1|d;break;case J.Aa.Ja.rd:d=Pd(this);e=this.b&J.Aa.vb;this.j[d]=e;ya(this,"doNVRCommand(): write data "+x(e)+" to addr "+x(d));break;case J.Aa.Ja.ld:d=Pd(this);e=this.j[d];
null==e&&(e=J.Aa.vb);this.b=e;ya(this,"doNVRCommand(): read data "+x(e)+" from addr "+x(d));break;case J.Aa.Ja.md:this.b<<=1;this.S=this.b&J.Aa.vb+1;break;default:ya(this,"doNVRCommand(): unrecognized command "+Ea(e))}}c&=~J.xa.kc;this.S&&(c|=J.xa.kc);c&=~J.xa.dc;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|=J.xa.dc);c&=~J.xa.sc;this.C&&this.C.ia&Qd&&(c|=J.xa.sc);this.D=c;q(this,a,null,b,"FLAGS",c);return c};
k.ae=function(a,b,c){q(this,a,b,c,"BRIGHTNESS");this.W=b};k.de=function(a,b,c){q(this,a,b,c,"NVR.LATCH");this.L=b};k.ce=function(a,b,c){q(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,ya(b,"updateScrollOffset("+a+")"),b.sa!==a&&((b.sa=a)?Nc(b,!0):b.ya=!0));break;case 2:switch(a){case 0:this.O=~this.O;break;case 2:case 3:this.X=3-a}break;case 3:this.V=a}};
k.be=function(a,b,c){q(this,a,b,c,"DC011");b&J.Ka.kd?(b&=J.Ka.oc,this.I!=b&&(this.I=b,this.video&&(a=this.video,b=this.I==J.Ka.oc?50:60,ya(a,"updateRate("+b+")"),a.jb=b))):(b&=J.Ka.Wb,this.F!=b&&(this.F=b,this.video&&(a=this.F==J.Ka.Wb?132:80,b=this.video,ya(b,"updateDimensions("+a+","+(80<a&&this.D&J.xa.ic?14:24)+")"),b.O=a,b.fa=b.Ha,80<a&&b.fa--,Rd(b)&&Sd(b))))};
var Od={pa:1978.1,pd:{qa:0,ff:1,kf:16,sf:32,Bf:64,Af:128,bb:14},Oa:{qa:1,Pc:1,jd:2,ed:4,fd:16,gd:32,hd:64,bb:8},qd:{qa:2,ef:3,Jf:4,gf:8,wf:16,xf:32,yf:64,hf:128,bb:0},Ff:{qa:3},Df:{qa:2,tf:7},Hf:{qa:3,Kf:1,Gf:2,zf:4,qf:8,jf:16,Ae:32},Ef:{qa:4},If:{qa:5,lf:1,mf:2,nf:4,pf:8,Lf:16}},J={pa:100,xa:{qa:66,sc:1,ic:2,dd:4,vf:8,uf:16,kc:32,jc:64,dc:128},Oc:{qa:66,INIT:0},Ka:{qa:194,De:0,Wb:16,kd:32,oc:48,Uc:0,Vc:32},ub:{qa:162,Cf:0,Xc:0,Tc:0,Wc:0,Sc:0},Aa:{rf:{qa:98},Ja:{Mc:0,Lc:1,md:2,rd:4,Rc:5,ld:6,nd:7},
vb:16383}},Md={SI1978:Od,VT100:J};Od.INIT=[[Od.pd.bb,Od.Oa.bb,Od.qd.bb,0,0,0,0]];
J.INIT=[[J.Oc.INIT,J.xa.ic|J.xa.dd],[J.Ka.Uc,J.Ka.Vc],[J.ub.Xc,J.ub.Tc,J.ub.Wc,J.ub.Sc],[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.Bb={0:Ld.prototype.Jd,1:Ld.prototype.Kd,2:Ld.prototype.Ld,3:Ld.prototype.Id};
Od.Cb={2:Ld.prototype.Wd,3:Ld.prototype.Yd,4:Ld.prototype.Xd,5:Ld.prototype.Zd,6:Ld.prototype.$d};J.Bb={66:Ld.prototype.Md};J.Cb={66:Ld.prototype.ae,98:Ld.prototype.de,162:Ld.prototype.ce,194:Ld.prototype.be};ib(function(){for(var a=qa(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Ld(d);pa(d,c)}});
function Td(a){n.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=Ia()+"/api/v1/dump?file="+this.j+"&format=bytes&decimal=true");var c=this;Ta(a,null,!0,function(a,b,f){Ud(c,a,b,f)})}}aa(Td,n);Td.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Vd(this)};
Td.prototype.va=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,r=h.a;if(void 0!==l){var u=f,l=[l>>>0,g],v=Qa(u,l,a.Ac);0>v&&u.splice(-(v+1),0,l)}r&&(h.a=r.replace(/''/g,'"'))}a.A.push({Mf:b,J:c,Qd:d,ra:e,zc:f})}delete this.ra}return!0};Td.prototype.ua=function(){return!0};
function Ud(a,b,c,d){if(d)a.aa("Unable to load system ROM (error "+d+": "+b+")");else{ea(a.eb,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){p("Empty ROM: "+b);return}if(1==a.b.length){p(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(!sa(a))if(!a.j)ta(a);else if(a.b&&a.H){a.g||(a.g=a.b.length);if(a.b.length!=a.g)ra(a,"ROM size ("+t(a.b.length,8,!0)+") does not match specified size ("+t(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}}ta(a)}}ib(function(){for(var a=qa(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Td(d);pa(d,c)}});
function Wd(a){n.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=Ia()+"/api/v1/dump?file="+this.b+"&format=bytes&decimal=true");var c=this;Ta(a,null,!0,function(a,b,f){f?c.aa("Unable to load RAM resource (error "+f+": "+a+")"):(ea(c.eb,a,b),(a=Ua(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))})}}aa(Wd,n);
Wd.prototype.Ea=function(a,b,c,d){this.H=b;this.u=c;this.K=d;Xd(this)};Wd.prototype.va=function(){return!0};Wd.prototype.ua=function(){return!0};
function Xd(a){!a.j&&a.A&&Ab(a.H,a.w,a.A,1)&&(a.j=!0);if(!sa(a)){if(!a.j)p("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);Rc(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=jd(d),r="",u=255;u--;){var v=E(a.u,l++);if(36==v)break;
r+=String.fromCharCode(v)}be(a,r);break;default:c=!1}c?Jd.call(d):e&&(a.i("\nCP/M vector "+x(b)),A(d,b),e.da());b=!0}else b=!1;return b}}(a))}Tc(a.u,a.Ia)}delete a.g}ta(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];ib(function(){for(var a=qa(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Wd(d);pa(d,c)}});
function de(a){n.call(this,"Keyboard",a,65536);(a=a.model)&&!ee[a]&&ha("Unrecognized Keyboard8080 model: "+a);this.b=ee[a]||{};this.reset();ta(this)}aa(de,n);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.fb[b])return this.P[e]=c,!0;switch(b){case "kbd":case "screen":return cb("iOS")?(c.onkeypress=function(a){var b=!1;if(a=d.b.sb[a.keyCode||a.charCode]){a&128&&(a&=127,b=!0);var c;a:{for(c in d.b.Sa)if(d.b.Sa[c]==a){c=+c;break a}c=0}c&&(b?fe(d,16,!0,!0):fe(d,16,!1),fe(d,c,!0,!0))}return!0},c.onkeydown=function(a){return ge(d,a,!0)},c.onkeyup=function(a){return ge(d,a,!1)}):(c.onkeydown=function(a){return he(d,a,!0)},
c.onkeyup=function(a){return he(d,a,!1)},c.onkeypress=function(a){a=a.keyCode||a.charCode;a>=m.ab&&a<=m.wb?d.g&(De|Ee)||(d.g|=Ee,fe(d,20,!0),Fe(d)):a>=m.yc&&a<=m.z&&d.g&Ee&&(d.g&=~Ee,fe(d,20,!1),Fe(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)){Ge(d.C,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.b.Ua&&void 0!==this.b.Ua[b])return this.P[e]=c,c.onclick=
function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=0;17==b?e=He:20==b&&(e=Ee);if(e){c.style.fontWeight="normal";if(d=!(a.g&e))c.style.fontWeight="bold";Ie(a,b,d)}fe(a,b,d,!e);a.R&&a.R.Za()}}(this,this.b.Ua[b]),!0}}return!1};k.Ea=function(a,b,c,d){this.R=a;this.u=c;this.K=d;var e=this;this.L=Ic(this.u,function(){Je(e)});this.W=wb(a,"ChipSet");this.C=wb(a,"SerialPort");Ob(b,this,this.b.Bb);Sb(b,this,this.b.Cb)};
k.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){this.j=[];this.g=0;this.b.INIT&&!this.restore(this.b.INIT)&&this.aa("reset error")};k.save=function(){var a=new Vc(this);switch(this.b.pa){case K.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 Ke.pa:return!0;case K.pa:return this.D=b[0],Fe(this,this.D&K.Ba.ec),this.B=b[1],this.A=b[2],this.F=b[3],this.w=b[4],!0}return!1};function Fe(a,b){var c;null!=b?a.I=b:b=a.I;for(var d in a.b.fb)if(c="led-"+d,c=a.P[c]){var e=a.b.fb[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+t(16711680,6):"#000000"}if(c=a.P["led-caps-lock"])c.style.backgroundColor=a.g&Ee?"#"+t(65280,6):"#000000"}
function Ie(a,b,c,d){var e=0;switch(b){case 16:e=d?Le:Me;break;case 17:e=d?Ne:He;break;case 18:e=d?Oe:Pe;break;case 91:e=d?Qe:Re;break;case 20:e=Ee,c=!(a.g&e)}e&&(a.g=c?a.g|e:a.g&~e);return c}
function he(a,b,c){var d=!0,e=b.keyCode,e=ca[e]||e;c=Ie(a,e,c,2==b.location);var f;a:if(e=a.b.Tb[e]||e,a.b.Sa[e])f=e;else{for(f in a.b.Ua)if(a.b.Ua[f]===e)break a;f=null}f&&!b.metaKey&&(d=!1,a.g&(Se|Te)&&(13==f?(f=118,d=!0):8==f&&(f=46,d=!0),d&&(a.g=c?a.g|Te:a.g&~Te)),d=fe(a,f,c),(!(f>=m.ab&&f<=m.wb)||a.g|Ue)&&b.preventDefault&&b.preventDefault());return d}
function ge(a,b,c){var d=!0;if(c){b=b.keyCode;var e=a.b.Sa[b];if(e){var f;a:{for(f in a.b.sb)if(a.b.sb[f]==e){f=+f;break a}f=0}f||(d=fe(a,b,c,!0))}}return d}
function fe(a,b,c,d){var e;a:{for(e=0;e<a.j.length;e++)if(a.j[e].Pb==b)break a;e=-1}if(c)0>e?a.j.push({Pb:b,Mb:Date.now(),yb:d||!1}):(a.j[e].Mb=Date.now(),a.j[e].yb=d||!1),d&&Je(a);else if(0<=e){if(!a.j[e].yb&&(d=a.j[e].Mb)&&Date.now()-d<Ve)return a.j[e].yb=!0,Je(a),!0;a.j.splice(e,1)}if(a.W){d=0;switch(b){case "1p":d=Od.Oa.ed;break;case "2p":d=Od.Oa.jd;break;case "coin":d=Od.Oa.Pc;break;case "left":d=Od.Oa.gd;break;case "right":d=Od.Oa.hd;break;case "fire":d=Od.Oa.fd}d&&(a=a.W,b=d,a.A&=~b,c&&(a.A|=
b))}return!0}function Je(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].yb){var d=a.j[b].Pb,e=Ve-(Date.now()-a.j[b].Mb);if(0<e){if(0>c||c>e)c=e}else{fe(a,d,!1);b=0;continue}}b++}0<=c&&Jc(a.u,a.L,c)}k.Nd=function(a,b){var c=this.B;0<=this.w&&(this.w<this.j.length?(c=this.j[this.w],this.w++,c=K.Sa[c.Pb],c&128&&(c&=127)):(this.w=-1,c=K.Yc),this.B=c,Ed(this.u,1));q(this,a,null,b,"KBDUART.ADDRESS",c);return c};
k.ee=function(a,b,c){q(this,a,b,c,"KBDUART.STATUS");this.D=b;this.A=!0;this.F=Dc(this.u);Fe(this,b&K.Ba.ec);b&K.Ba.od&&(this.w=0,Ed(this.u,1))};var Le=1,Me=2,De=3,Ne=4,He=8,Ue=12,Oe=16,Pe=32,Se=48,Qe=64,Re=128,Ee=512,Te=4096,Ve=50,We={};We[m.ab]=37;We[m.Fb]=39;We[m.Hb]=32;
var Ke={pa:1978.1,Sa:{},sb:{},Tb:We,fb:{},Ua:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},M={},N={},K={pa:100,Sa:(M[8]=3,M[m.mc]=5,M[m.lc]=6,M[m.xc]=7,M[m.qc]=8,M[m.uc]=9,M[m.Q]=10,M[39]=16,M[221]=20,M[219]=21,M[m.ac]=22,M[m.rc]=23,M[m.nc]=24,M[m.E]=25,M[49]=26,M[37]=32,M[40]=34,M[117]=35,M[19]=35,M[192]=36,M[189]=37,M[57]=38,M[55]=39,M[52]=40,M[51]=41,M[27]=42,M[38]=48,M[114]=49,M[112]=50,M[46]=51,M[187]=52,M[48]=53,M[56]=54,M[54]=55,M[53]=56,M[50]=57,M[9]=58,M[103]=64,M[115]=65,M[113]=66,
M[96]=67,M[118]=68,M[220]=69,M[m.Hb]=70,M[m.cc]=71,M[m.Zb]=72,M[m.Yb]=73,M[m.ab]=74,M[104]=80,M[2013]=81,M[98]=82,M[97]=83,M[222]=85,M[186]=86,M[m.bc]=87,M[m.$b]=88,M[m.Fb]=89,M[m.pc]=90,M[110]=96,M[116]=97,M[101]=98,M[100]=99,M[13]=100,M[190]=101,M[188]=102,M[m.hc]=103,M[m.Ub]=104,M[m.wc]=105,M[119]=106,M[105]=112,M[99]=113,M[102]=114,M[109]=115,M[191]=117,M[m.gc]=118,M[m[" "]]=119,M[m.tc]=120,M[m.Vb]=121,M[m.wb]=122,M[120]=123,M[17]=124,M[16]=125,M[20]=126,M),sb:(N[m.p]=5,N[m.Sd]=6,N[m.y]=7,N[m.t]=
8,N[m.re]=9,N[m.q]=10,N[m["]"]]=20,N[m["["]]=21,N[m.Fd]=22,N[m.pe]=23,N[m.r]=24,N[m.e]=25,N[m["1"]]=26,N[m["`"]]=36,N[m["-"]]=37,N[m["9"]]=38,N[m["7"]]=39,N[m["4"]]=40,N[m["3"]]=41,N[m["="]]=52,N[m["0"]]=53,N[m["8"]]=54,N[m["6"]]=55,N[m["5"]]=56,N[m["2"]]=57,N[m["\\"]]=69,N[m.Pd]=70,N[m.k]=71,N[m.Dd]=72,N[m.Bd]=73,N[m.yc]=74,N[m["'"]]=85,N[m[";"]]=86,N[m.Od]=87,N[m.Ed]=88,N[m.d]=89,N[m.oe]=90,N[13]=100,N[m["."]]=101,N[m[","]]=102,N[m.n]=103,N[m.ud]=104,N[m.x]=105,N[m["/"]]=117,N[m.Rd]=118,N[m[" "]]=
119,N[m.qe]=120,N[m.xd]=121,N[m.z]=122,N[m.mc]=133,N[m.lc]=134,N[m.xc]=135,N[m.qc]=136,N[m.uc]=137,N[m.Q]=138,N[m["}"]]=148,N[m["{"]]=149,N[m.ac]=150,N[m.rc]=151,N[m.nc]=152,N[m.E]=153,N[m["!"]]=154,N[m["~"]]=164,N[m._]=165,N[m["("]]=166,N[m["&"]]=167,N[m.$]=168,N[m["#"]]=169,N[m["+"]]=180,N[m[")"]]=181,N[m["*"]]=182,N[m["^"]]=183,N[m["%"]]=184,N[m["@"]]=185,N[m["|"]]=197,N[m.Hb]=198,N[m.cc]=199,N[m.Zb]=200,N[m.Yb]=201,N[m.ab]=202,N[m['"']]=213,N[m[":"]]=214,N[m.bc]=215,N[m.$b]=216,N[m.Fb]=217,N[m.pc]=
218,N[m[">"]]=229,N[m["<"]]=230,N[m.hc]=231,N[m.Ub]=232,N[m.wc]=233,N[m["?"]]=245,N[m.gc]=246,N[m.tc]=248,N[m.Vb]=249,N[m.wb]=250,N),Tb:{},fb:{},Ua:{"caps-lock":20,ctrl:17,esc:27,tab:9,"num-comma":116,"break":117,"line-feed":118,"no-scroll":119,setup:120},Nc:{qa:130,INIT:127},Ba:{qa:130,bd:1,ad:2,$c:4,Zc:8,cd:16,fc:32,ec:63,od:64,Ce:128,INIT:0},Yc:127};K.fb={l4:K.Ba.bd,l3:K.Ba.ad,l2:K.Ba.$c,l1:K.Ba.Zc,locked:K.Ba.cd,local:K.Ba.fc,online:~K.Ba.fc,"caps-lock":Ee};var ee={SI1978:Ke,VT100:K};
K.INIT=[[K.Ba.INIT,K.Nc.INIT,!1,0,-1]];K.Bb={130:de.prototype.Nd};K.Cb={130:de.prototype.ee};ib(function(){for(var a=qa(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new de(d);pa(d,c)}});
function Xe(a,b,c,d,e){n.call(this,"Video",a,262144);var f=this;this.Ta=cb("Gecko/");var g=["","moz","ms","webkit"];this.M=a.screenWidth;this.I=a.screenHeight;this.la=a.bufferAddr;this.vd=a.bufferRAM;var h=a.bufferFormat;this.Y=h&&Ye[h.toUpperCase()]||Ze;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.yd=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.kb=a.refreshRate||60;this.F=b;this.j=c;this.V=(this.Cd=d)||b||null;this.Db=this.M;this.td=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=db("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.Xa=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.b.Xa){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){$e(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(){$e(f,null)},!1);break}}if(this.S=a.fontROM)"json"!=Ga(this.S)&&(this.S=Ia()+"/api/v1/dump?file="+this.S+"&format=bytes"),Ta(this.S,null,!0,function(a,b,c){af(f,a,b,c)});this.Fa={}}aa(Xe,n);
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.vd&&(a.L=(a.C*a.na>>3)*a.N,!Ab(a.H,a.la,a.L,3)))return!1;a.L?(a.Va=a.j.createImageData(b,c),a.hb=16/a.na|0,bf(a,a.L>>1)):bf(a,(a.O+1)*a.Z);a.D=document.createElement("canvas");a.D.width=b;a.D.height=c;a.wa=a.D.getContext("2d");a.T={};a.X=1<<a.na;a.U=Array(a.X+cf);a.U[0]=[0,0,0,255];a.U[1]=[255,255,255,255];a.Y==df&&(a.U[a.X+ef]=[255,255,0,255],a.U[a.X+ff]=[0,255,0,255]);a.Y==gf&&(a.jb=60,a.za=!1,a.ga=Array(a.O));
return!0}k=Xe.prototype;k.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.Xa?c.onclick=function(){d.Xa()}:c.parentNode.removeChild(c),!0}return!1};
k.Ea=function(a,b,c,d){this.R=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.Cd?"textarea":"canvas","screen",this.V)}var f=this;this.xb=Ic(this.u,function(){Nc(f)});Jc(this.u,this.xb,1E3/Math.max(this.kb,this.oa));this.ib=0;this.S||ta(this)};
function af(a,b,c,d){if(d)a.aa("Unable to load font ROM (error "+d+": "+b+")");else{ea(a.eb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){p("Empty font ROM: "+b);return}if(1==f.length){p(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)&&ta(a)}}
function Sd(a){a.ea&&(a.Na=a.Y==gf,a.T[hf]=[jf(a,a.fa,a.ba),jf(a,a.fa,a.ba,a.za)],a.T[kf]=[jf(a,2*a.fa,a.ba),jf(a,2*a.fa,a.ba,a.za)],a.T[lf]=a.T[mf]=[jf(a,2*a.fa,2*a.ba),jf(a,2*a.fa,2*a.ba,a.za)])}
function jf(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 r=l.context.createImageData(b,c),u=0;u<g;u++){for(var v=0,B=v;v<a.ba;v++)for(var y=u*e+(f+v&e-1),y=d&&8==v?255:a.ea[y],w=0;w<c/a.ba;w++){for(var C=0,T=0,za=T;T<a.fa;T++){for(var L=y&128>>(7<T?7:T),C=a.Na&&!L&&C?C:L,ja=0;ja<b/a.fa;ja++)h&&(C=!C),nf(a,r,za,B,C?1:0),za++;C=L}B++}l.context.putImageData(r,
(u&15)*b,(u>>4)*c)}return l}k.va=function(a,b){return b||!a||this.restore(a)?!0:!1};k.ua=function(a){return!a||this.save()};k.save=function(){var a=new Vc(this);a.set(0,[]);return a.data()};k.restore=function(){return!0};
k.Xa=function(){var a=!1;if(this.b){if(this.b.Xa){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.Ta?(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.Xa();a=!0}this.V&&this.V.focus()}return a};
function $e(a,b){!b&&a.b&&(a.Ta?a.F.style.width=a.F.style.height="":a.b.style.width=a.b.style.height="");ya(a,"notifyFullScreen("+b+")")}function bf(a,b){a.gb=b;a.W=!1;if(void 0===a.A||a.A.length!=a.gb)a.A=Array(a.gb)}function nf(a,b,c,d,e){d=a.g?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.Y==df&&(208<=c&&236>c?e=a.X+ef:28<=c&&72>c&&(e=a.X+ff));a=a.U[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function Nc(a,b){var c=!0;if(!b){a.oa&&(120==a.oa?a.ib&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].Dc=!0),e-=d.w,g++;f&&(c=!1)}Jc(a.u,a.xb,1E3/Math.max(a.kb,a.oa));a.ib++}if(c)if(1<a.fa)switch(a.Y){case gf:for(var c=a.la,d=-1,e=0,f=60==a.jb?2:5,h=g=0,l=-1;e<a.Z;){var r=0,u=c,v=d,B=a.O;for(v!=hf&&(B>>=1);;){var y=Fb(a.H,u++);if((y&of)==of){var w=Fb(a.H,u++),d=w&pf,c=(w&qf)<<8|Fb(a.H,u),c=c+(w&rf?
sf:tf);break}if(r<B)a.ga[r++]=y;else break}if(f)f--;else{for(;r<a.ga.length;)a.ga[r++]=0;if(0<=v)for(u=a.W&&a.A[g]==B,a.A[g++]=B,B=0;B<r;B++){y=a.ga[B];if(!u||y!==a.A[g]){a.A[l=g]=y;var w=a,C=a.wa,T=y&127;if(y=w.T[v][y&128?1:0]){var za=(T&15)*y.fa,T=(T>>4)*y.ba,L,ja,ua,na,Ma=y.fa,ec=y.ba;C?(L=B*w.fa,ja=e*w.ba,ua=w.fa,na=w.ba):(L=B*w.La,ja=e*w.Ma,ua=w.La,na=w.Ma);y.fa>w.fa&&(L*=2,ua*=2);y.ba>w.ba&&(v==mf&&(T+=w.ba),ec=w.ba);C?C.drawImage(y.canvas,za,T,Ma,ec,L,ja,ua,na):(L+=0,ja+=0,w.j.drawImage(y.canvas,
za,T,Ma,ec,L,ja,ua,na))}h++}g++}e++}}a.W=!0;!b&&a.ya&&1==h&&(a.A[l]=-1,h=0);a.ya=!1;(h||b)&&a.wa&&a.j.drawImage(a.D,0,a.sa,a.C,a.N-a.ba,0,0,a.Db,a.td)}else{e=a.la;f=e+a.L;l=h=g=0;b=a.C;r=0;c=a.N;v=d=0;u=a.na;B=(1<<u)-1;a.yd&&(u=-u,v=16+u);for(;e<f;){w=Hb(a.H,e);if(a.W&&w===a.A[g])h+=a.hb;else{a.A[g]=w;(C=v)&&(w=w>>8|(w&255)<<8);h<b&&(b=h);for(y=a.hb;y--;)za=w>>C&B,nf(a,a.Va,h++,l,za),C+=u;h>r&&(r=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=r-b,d-=c,a.g&&
(f=b,g=e,b=c,e=d,c=a.C-(f+g),d=g),a.wa.putImageData(a.Va,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 ef=0,ff=1,cf=2,Ze=0,df=1,gf=2,Ye={SI1978:df,VT100:gf},hf=96,kf=64,lf=32,mf=0,of=127,qf=15,rf=16,pf=96,sf=8192,tf=16384;
ib(function(){for(var a=qa(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=oa(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<=Va().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||db("aspect"));f&&.3<=f&&3.33>=f&&(hb("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");cb("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new Xe(d,e,g,f,c);pa(d,c)}});
function uf(a){n.call(this,"SerialPort",a,8388608);this.T=+a.adapter;switch(this.T){case 0:this.U=0;this.X=2;break;default:p("Unrecognized serial adapter #"+this.T);return}this.g=this.j=null;this.V=a.tabSize;this.S=a.charBOL;this.w=0;this.N=!1;this.D=!0;var b=a.binding;if("console"==b)this.j="";else{var c;a=vf;b&&(void 0===c&&(c="Panel"),(c=ma(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.Fc,receiveData:this.Ob,receiveStatus:this.ne}}
aa(uf,n);k=uf.prototype;
k.ca=function(a,b,c,d){var e=this;switch(b){case vf: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),wf(e,b);return!0},c.onkeypress=function(a){a=a||window.event;wf(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.Ob(d);return!0},
!0}return!1};k.Ea=function(a,b,c,d){this.R=a;this.H=b;this.u=c;this.K=d;var e=this;this.Y=Ic(this.u,function(){e.Ob()});this.Z=Ic(this.u,function(){Ge(e)});this.W=wb(a,"ChipSet");Ob(b,this,xf,this.U);Sb(b,this,yf,this.U);ta(this)};
k.Fc=function(a){if(!this.b){var b=wc(this.R,"connection");if(b){var c=b.split("->");if(2==c.length){var d=Oa(c[0]);if(d!=this.cb)return;c=Oa(c[1]);if(this.b=la(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("Connected "+this.eb+"."+d+" to "+c);return}}}}this.status("Unable to establish connection: "+b)}}};
k.va=function(a,b){if(!b)if(this.Fc(this.D),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){zf(this)};k.save=function(){var a=new Vc(this),b=0,c=[];c[b++]=this.F;c[b++]=this.M;c[b++]=this.O;c[b++]=this.ia;c[b++]=this.B;c[b++]=this.C;c[b]=this.L;a.set(0,c);return a.data()};k.restore=function(a){return zf(this,a[0])};
function zf(a,b){var c=0;b||(b=Af);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 Bf(a,b){var c=a.L&b;b&15||(c>>=4);b=Cf[c];c=((a.B&Df)>>2)+6;a.B&Ef&&c++;c+=((a.B&Ff)>>6)+1>>1;return 1E3/Math.round(b/c)}function wf(a,b){ya(a,"receiveByte("+Ea(b)+"), status="+Ea(a.ia));return a.N||a.ia&Gf?!1:(a.M=b,a.ia|=Gf,Ed(a.u,a.X),!0)}
k.Ob=function(a){null!=a&&(this.A="number"!=typeof a?a:this.A+String.fromCharCode(a));this.A&&(wf(this,this.A.charCodeAt(0))&&(this.A=this.A.substr(1)),this.A&&this.u&&Jc(this.u,this.Y,Bf(this,Hf)));return!0};k.ne=function(a){this.ia&=~If;a&64&&(this.ia|=If)};function Ge(a,b){a.ia=a.ia|Qd|Jf;b&&a.Ra&&a.Ra.call(a.b,b)}k.Hd=function(a,b){var c=this.M;q(this,a,null,b,"DATA",c);this.ia&=~Gf;return c};k.Gd=function(a,b){var c=this.ia;q(this,a,null,b,"STATUS",c);return c};
k.Vd=function(a,b,c){q(this,a,b,c,"DATA");this.O=b;this.ia&=~(Qd|Jf);ya(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=La("",c))):13==b&&(this.w=c=0,a="\n");this.S&&!this.w&&c&&(a=String.fromCharCode(this.S)+a);this.g.value+=a;this.g.scrollTop=
this.g.scrollHeight;this.w+=c}else if(null!=this.j){if(10==b||1024<=this.j.length)this.i(this.j),this.j="";10!=b&&(this.j+=String.fromCharCode(b))}this.u&&Jc(this.u,this.Z,Bf(this,Kf))};k.Ud=function(a,b,c){q(this,a,b,c,"CONTROL");this.F?(this.I&&(b^this.C)&(Lf|Mf)&&(a=0,this.D?(a|=b&Lf?32:0,a|=b&Mf?320:0):(a|=b&Lf?16:0,a|=b&Mf?1048576:0),this.I.call(this.b,a)),this.C=b,this.C&Nf&&(this.F=!1)):(this.B=b,this.F=!0)};k.Td=function(a,b,c){q(this,a,b,c,"BAUDRATES");this.L=b};
var Df=12,Ef=16,Ff=192,Mf=2,Lf=32,Nf=64,Qd=1,Gf=2,Jf=4,If=128,Hf=15,Kf=240,Cf=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Af=[!1,0,0,133,142,39,238],vf="buffer",xf={0:uf.prototype.Hd,1:uf.prototype.Gd},yf={0:uf.prototype.Vd,1:uf.prototype.Ud,2:uf.prototype.Td};ib(function(){for(var a=qa(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new uf(d);pa(d,c)}});
function Of(a){n.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.S={}}aa(Of,n);Of.prototype.Kb=function(){return-1};Of.prototype.Lb=function(){};
Of.prototype.Ab=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 Pf(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 Qf(a,b,c){var d;if(b){b=Rf(a,b);for(var e=0,f=!1,g=b,h=[],l=[],r=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<r.length;){var u=r[e++],v=u.length,u=Oa(u);if(!u){f=!0;break}u=Sf(a,u,null,!1===c);if(void 0===u){f=!0;c=!1;break}h.push(u);if(e==r.length)break;var u=r[e++],B=u.length;l.length&&Tf[u]<Tf[l[l.length-1]]&&Pf(h,l,1);l.push(u);b=b.substr(v+B)}Pf(h,l)&&1==h.length||(f=!0);f?c&&a.i("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&Uf(a,null,
d))}return d}function Rf(a,b){for(var c,d=/\{(.*?)\}/;(c=b.match(d))&&!(0<=c[1].indexOf("{"));){var e=Qf(a,c[1]);b=b.replace("{"+c[1]+"}",null!=e?Vf(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 Sf(a,b,c,d){var e;null!=b?(e=a.Kb(b),0<=e?e=a.Lb(e):(e=a.S[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 Uf(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,r=void 0,u=8,v="";u?32<u&&(u=32):u=32;for(var B=null==l||isNaN(l),y=r=r||u;0<u--;)y||(v=","+v,y=r),v=(B?"?":l&1?"1":"0")+v,l>>=1,y--;g=v+g;d>>=8}d=t(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 Wf(a,b){if(b)return Uf(a,b,a.S[b]);var c=0;for(b in a.S)Uf(a,b,a.S[b]),c++;return 0<c}function Vf(a,b){switch(a.na){case 8:a=Da(b,NaN);break;case 10:a=b.toString();break;default:a=t(b,NaN)}return a}var Tf={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};
function Xf(a){Of.call(this,a);this.style=Yf;this.F=Zf();this.la=Zf();this.O=Zf();this.A=[];this.j=this.I=this.w=[];$f(this);this.W=0;ag(this);this.Z={};bg(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)})}aa(Xf,Of);k=Xf.prototype;
k.Ea=function(a,b,c,d){this.H=b;this.u=c;this.R=a;(a=wc(a,"messages"))&&bg(this,a);this.ga=cg;Nd(this,64,function(a){a:{var b=d.H.b,c=a[0],e=a=0,l=b.length;if(c){a=dg(eg(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,r=0;l--;){var u=b[e];u.type==c?r++||d.i("..."):(c=u.type,r=Db[c],u&&d.i(t(u.id)+" %"+t(e<<d.H.g)+" %%"+t(u.J)+" "+x(u.pb)+" "+
x(u.size)+" "+r),c!=Zb&&(c=-1),r=0);a+=d.H.w;e++}}});ta(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,gb(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,gb(c,function(a){var b=!1;va(d,!0)||(wa(d,!0),b=fg(d,a?1:0),wa(d,!1));return b}),!0}return!1};k.Za=function(){this.U&&this.U.focus()};function dg(a){a=a&&a.J;null==a&&(a=-1);return a}k.Ga=function(a,b){var c=255,d=dg(a);-1!==d&&(c=Fb(this.H,d),b&&gg(a,b));return c};k.Gb=function(a,b){var c=65535,d=dg(a);-1!==d&&(c=Hb(this.H,d),b&&gg(a,b));return c};k.Xb=function(a,b,c){var d=dg(a);-1!==d&&(Ib(this.H,d,b),c&&gg(a,c),Bc(this.u,!0))};
k.Qc=function(a,b,c){var d=dg(a);if(-1!==d){var e=this.H,f=d&e.j,g=(d&e.C)>>>e.g;f!=e.j?e.b[g].Sb(f,b&65535,d):(e.b[g++].qb(f,b&255,d),e.b[g&e.I].qb(0,b>>8&255,d+1));c&&gg(a,c);Bc(this.u,!0)}};function Zf(a){return{J:a,Da:!1}}function hg(a){return[a.J,a.Da]}function ig(a){return{J:a[0],Da:a[1]}}
function eg(a,b,c){var d;c=(c?a.F:a.la).J;if(void 0!==b){d=b=Rf(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=Zf(d));break}}if(d=e)return d;c=Qf(a,b,void 0)}null!=c&&(d=Zf(c));return d}function jg(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.sd=a.Ab(b.Jc=c[2]))}function gg(a,b){null!=a.J&&(a.J+=b||1)}function kg(a){return t(a,4)}
function lg(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 bg(a,b){a.K=a;a.ha=a.wd=536870912;a.V=null;a.X=[];b=a.Ab(b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in tb)0<=Sa(b,c)&&(a.ha|=tb[c],a.i(c+" messages enabled"))}function Nd(a,b,c){for(var d in tb)if(b==tb[d]){a.Z[d]=c;break}}
k.Kb=function(a,b){var c;a=a.toUpperCase();null==b?c=Sa(Jg,a):(c=Sa(Jg,a.substr(b,2)),0>c&&(c=Sa(Jg,a.substr(b,1))));return c};function Lg(a,b){var c=0;a=a.Lb(b);if(void 0!==a)switch(b){case Mg:case Ng:case Og:case Pg:case Qg:case Rg:case Sg:case Tg:c=2;break;case Ug:case Vg:case Wg:case Xg:case Yg:case Zg:case $g:c=4}return c?t(a,c):"??"}
k.Lb=function(a){var b;if(0<=a){var c=this.u;switch(a){case Mg:b=c.g;break;case Ng:b=c.w;break;case Og:b=c.A;break;case Ug:b=Wc(c);break;case Pg:b=c.B;break;case Qg:b=c.C;break;case Vg:b=jd(c);break;case Rg:b=c.D;break;case Sg:b=c.F;break;case Wg:b=D(c);break;case Tg:b=E(c,D(c));break;case Xg:b=c.M;break;case Yg:b=c.j;break;case Zg:b=Uc(c);break;case $g:b=Uc(c)&255|c.g<<8}}return b};
function ah(a,b){b=Rf(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Kb(b,c+1),0<=e&&(b=b.substr(0,c)+Lg(a,e)+b.substr(c+1+Jg[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=eg(a,e))?(d=e+' "'+lg(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=eg(a,e))?(gg(d),d=e+
' "'+lg(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}k.message=function(a,b){b&&(a+=" at "+kg(Zf(this.u.j).J));this.ha&1073741824?this.X.push(a):this.V&&a==this.V||(this.V=a,this.ha&-2147483648&&(this.da(),a+=" (cpu halted)"),this.i(a),this.u&&(a=this.u,Kc(a),a.wa=0,Bc(a)))};
function Aa(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.ha&h)!=h||a.message(b.cb+"."+(null!=d?"outPort":"inPort")+"("+x(c)+","+(f?f:"unknown")+(null!=d?","+Ea(d):"")+")"+(null!=g?": "+Ea(g):"")+(null!=e?" at "+kg(e):""))}
function ag(a){var b;if(Fd(a)){if(!a.D||!a.D.length){a.D=Array(bh);for(b=0;b<a.D.length;b++)a.D[b]=Zf();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 ch(a,b){if(!dh(a))return!1;a.u.tb(b);return!0}
function fg(a,b,c,d){if(!dh(a))return!1;a.C=0;b||Fd(a)&&Gd(a,a.u.j,0);try{var e=a.u.Eb(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,ra(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=Zf(a.u.j);b&&1!=a.M?eh(a):fh(a)}
function dh(a){var b;if(b=a.u&&sa(a.u))b=a.u,b.G.ja?b=!0:(b.i(b.toString()+" not powered"),b=!1);b&&!va(a.u)?(a=a.u,a.G.error?(a.i(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}k.va=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};k.ua=function(a,b){b&&this.i(a?"suspending":"shutting down");return a?this.save():!0};k.reset=function(a){ag(this);this.N=this.Y=0;this.V=null;this.C=0;this.F=Zf(this.u.j);this.G.ka=!1;gh(this);a||zc(this)};
k.save=function(){var a=new Vc(this);a.set(0,hg(this.F));a.set(1,hg(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=ig(a[b++]),this.O=ig(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.wa=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.wa;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 xa(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.i(b)}zc(this,!0);this.Za();gh(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 "+x(b)+": "+t(c));a.da(!0)}function Ub(a,b,c){a.i("break on output to port "+x(b)+": "+t(c));a.da(!0)}
function $f(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[dg(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[dg(c)>>>d.g],!0);a.w=["bw"];a.oa=0}k.Pa=function(a,b,c){var d=!0;c||hh(this,a,b,!1,!0);if(a!=this.j){var e=dg(b);if(-1===e)this.i("invalid address: "+kg(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:(ih(this,a,a.length-1,"set"),ag(this)));return d};
function hh(a,b,c,d,e){var f=!1;c=dg(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==dg(h)&&(!d||h.Da)){f=!0;h.Da||e||ih(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||ag(a);break}}return f}function jh(a,b){for(var c=1;c<b.length;c++)ih(a,b,c);return b.length-1}function ih(a,b,c,d){c=b[c];a.i(b[0]+" "+kg(c.J)+(d?" "+d:c.Jc?' "'+c.Jc+'"':""))}
function gh(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(!hh(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=dg(h),r=0;r<c;r++)if(b+r==l){var u,f=!0;h.Da&&(hh(a,d,h,!0),e=!0);if(u=h.sd){for(var f=!1,v=0;v<u.length;v++)if(!kh(a,u[v],!0)){if(u[v].indexOf("if")){f=!0;break}for(var B=v+1;B<u.length&&u[B].indexOf("else");B++)v++;if(B==u.length){f=!0;break}}a.u.G.ka||(f=!0)}if(f){e||ih(a,d,g,"hit");break}}}a.oa--;return f}
function lh(a,b,c,d){for(var e=Zf(b.J),f=a.Ga(b,1),g=a.ga[f],h="",l=(a.style!=mh?nh:oh)[g[0]],r=g.length-1,u=ph,v,B=1;B<=r;B++){var y="";v=g[B];if(void 0!==v&&!(v&O&&a.style==Yf)){var w=v&qh;if(w){var C=v&rh;C?u=C:v|=u;v&sh||(v|=1==B?th:uh);if(w&P)a:{y=a;w=v;C=b;switch(w&rh){case Q:C=t(y.Ga(C,1),2);break;case vh:C=t(y.Ga(C,1)<<24>>24,4);break;case wh:C=t(y.Gb(C,2),4);break;default:y="imm("+x(w)+")";break a}y.style==mh&&w&xh?C="["+C+"]":w&yh||(C=(y.style==Yf?"$":"0x")+C);y=C}else w&yh?(y=(v&zh)>>8,
w=Jg[y],a.style==mh&&v&xh&&(y==Tg&&(w="HL"),w="["+w+"]"),y=w):w&Ah&&(y=(f>>3&7).toString());if(!y||!y.length){h="INVALID";break}0<h.length&&(h+=",");h+=y||"???"}}}f="";g=kg(e.J)+" ";if(-1!==e.J&&-1!==b.J){do if(f+=t(a.Ga(e,1),2),null==e.J)break;while(e.J!=b.J)}g+=La(f,10);g+=v&Bh?"*":" ";g+=La(l,7);h&&(g+=" "+h);c&&(g=La(g,40)+";"+c,g=a.u.G.Wa?g+("cycles="+Dc(a.u).toString()+" cs="+t(a.u.ya)):g+(null!=d?"="+d.toString():""));return g}
function Ch(a,b){switch(b){case "IF":a=a.u.N&512;break;case "SF":a=rd(a.u);break;case "ZF":a=qd(a.u);break;case "AF":a=pd(a.u);break;case "PF":a=od(a.u);break;case "CF":a=md(a.u);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Dh(a,b){return Jg[b]+"="+Lg(a,b)+" "}function Eh(a){return Dh(a,Mg)+Dh(a,Ug)+Dh(a,Vg)+Dh(a,Wg)+Dh(a,Xg)+Ch(a,"IF")+Ch(a,"SF")+Ch(a,"ZF")+Ch(a,"AF")+Ch(a,"PF")+Ch(a,"CF")}k.Ac=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Fh(a,b,c){var d=[],e=dg(b)>>>0;for(b=0;b<a.A.length;b++){var f=a.A[b],g=f.J>>>0,h=f.Qd;if(e>=g&&e<g+h){e=Qa(f.zc,[e-g],a.Ac);0<=e?Gh(a,b,e,d):c&&(e=~e,Gh(a,b,e-1,d),Gh(a,b,e,d));break}}return d}function Gh(a,b,c,d){var e={},f=a.A[b].zc,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 Hh(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!=mh?nh:oh;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 Ih(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Wf(a)||a.i("no variables"),!0;if(!c[2])return Wf(a,c[1]);if(!c[3])return delete a.S[c[1]],!0;b=Qf(a,c[3]);return void 0!==b?(a.S[c[1]]=b,!0):!1}a.i("invalid assignment:"+b);return!1}
function Jh(a,b,c){var d=null;if(b=eg(a,b,!0)){var e=Fh(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.J-e[1])&&(g=" + "+x(f)),f=e[0]+" ("+kg(e[1])+")"+g,c&&a.i(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.J)&&(g=" - "+x(f)),f=e[4]+" ("+kg(e[5])+")"+g,c&&a.i(f),d||(d=f))}else c&&a.i("no symbols")}return d}
function Kh(a,b){switch(b[1]){case "8080":a.style=Yf;break;case "8086":a.style=mh;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.Wa?"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 eh(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=Qf(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":A(d,f);a.F=Zf(d.j);break;case "PS":Sc(d,f);break;case "PSW":Sc(d,f&255|d.N&-256);d.g=f>>8;break;case "CF":d.I=f?d.I|256:d.I&255;break;case "PF":f?od(d)||(d.L^=1):od(d)&&(d.L^=1);break;case "AF":d.O=f?~d.L&16|d.O&-17:d.L&16|d.O&-17;break;case "ZF":d.I=f?d.I&-256:d.I|255;break;case "SF":f?rd(d)||(d.L^=192):rd(d)&&(d.L^=192);break;case "IF":d.N=
f?d.N|512:d.N&-513;break;default:a.i("unknown register: "+e);return}Bc(d);a.i("updated registers:")}a.i(Eh(a));c&&(a.F=Zf(d.j),fh(a,kg(a.F.J)))}}function Lh(a,b){b=Oa(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.i(ah(a,c[2])):Qf(a,b,!0)}function Mh(a,b,c){var d="t"!=b;c=Sf(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);fb(c,function(){return wa(a,!0)&&fg(a,e,d,!1)},function(){Bc(a.u);wa(a,!1)})}
function fh(a,b,c,d){if(b=eg(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=eg(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=va(a,!1)||a.M?a.C:null;var g=null!=f?"cycles":null,h=Fh(a,b),l=b.J;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var r=h[0]+":";h[2]&&(r+=" "+h[2]);a.i(r)}h[3]&&(g=h[3],f=null);f=lh(a,b,g,f);a.i(f);a.F=b;e-=b.J-l;c++}}}
k.Ab=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 kh(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.i(">> "+b):(a.L&&(a.i("ended assemble at "+kg(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(sa(a)&&0<b.length){a.L&&(b="a "+kg(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 r=g.charAt(l);if("?"==h||"r"==h||"a">r||"z"<r){f[0]=g.substr(l);f.unshift(g.substr(0,l));break}}switch(f[0].charAt(0)){case "a":var u=eg(a,f[1],!0);if(u)if(a.O=
u,void 0===f[2])a.i("begin assemble at "+kg(u.J)),a.L=!0,Bc(a.u);else{var v;a.i("not supported yet");v=[];if(v.length){for(var B=0;B<v.length;B++)a.Xb(u,v[B],1);a.i(lh(a,a.O))}}break;case "b":a:{var y=f[0],w=f[1],C=b;if("?"==w)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 T=y.charAt(1);if("l"==T){var za;za=0+jh(a,a.j);za+=jh(a,a.I);(za+=jh(a,a.w))||a.i("no breakpoints")}else if("n"==T)a.W=Sf(a,w),a.i("break after "+a.W+" instruction(s)");else if(void 0===w)a.i("missing breakpoint address");else{var L=Zf();if("*"!=w&&(L=eg(a,w,!0),!L))break a;w=x(L.J);"c"==T?null==L.J?($f(a),a.i("all breakpoints cleared")):hh(a,a.j,L)||hh(a,a.I,L)||hh(a,a.w,L)||a.i("breakpoint missing: "+kg(L.J)):
"i"==T?a.i("breakpoint "+(Lb(a.H,L.J)?"enabled":"cleared")+": port "+w+" (input)"):"o"==T?a.i("breakpoint "+(Rb(a.H,L.J)?"enabled":"cleared")+": port "+w+" (output)"):null!=L.J&&(jg(a,L,C),"p"==T?a.Pa(a.j,L):"r"==T?a.Pa(a.I,L):"w"==T?a.Pa(a.w,L):a.i("unknown breakpoint command: "+T))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var ja,ua=f[0],na=f[1],Ma=f[2],ec=f[3];if("?"==na){var Mb="";for(ja in tb)a.Z[ja]&&(Mb&&(Mb+=","),Mb+=ja);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"==na){var ie=Nh(a.R,!0);"console"==Ma?console.log(ie):(a.ta&&(a.ta.value=""),ie&&a.i(ie))}else if("symbols"==na)for(var je=0;je<a.A.length;je++){var ke=a.A[je],Nb;for(Nb in ke.ra)if("."!=Nb.charAt(0)){var mg=ke.ra[Nb].o;if(void 0!==mg){var ng=ke.ra[Nb].l;ng&&(Nb=ng);a.i(kg(mg)+" "+
Nb)}}}else{if("d"==ua){for(ja in tb)if(f[1]==ja){var og=a.Z[ja];og?(f.shift(),f.shift(),og(f)):a.i("no dump registered for "+na);break a}na||(ua=a.za||"db")}else a.za=ua;if("dh"==ua){var pg=na,qg=Ma,rg="",sg=0,Na=a.T,Za=a.D;if(Za.length){var Ba=+pg||a.sa,jc=+qg||10;isNaN(Ba)?Ba=jc:rg="more ";Ba>Za.length&&(a.i("note: only "+Za.length+" available"),Ba=Za.length);Na-=Ba;0>Na&&(null==Za[Za.length-1].J?(Ba=Na+Ba,Na=0):Na+=Za.length);var le=[];"call"==qg&&(jc=1E5,le=["CALL"]);for(void 0!==pg&&a.i(Ba+" instructions earlier:");0<
jc&&Na!=a.T;){var tg=Za[Na++];if(null==tg.J)break;var kc=Zf(tg.J),qi=Ba--,ug=lh(a,kc,"history",qi);(!le.length||0<=ug.indexOf(le[0]))&&a.i(ug);kc.Jb&&(Na+=kc.Jb,jc-=kc.Jb,Ba-=kc.Jb);Na>=Za.length&&(Na=0);a.sa=Ba;sg++;jc--}}sg||(a.i("no "+rg+"history available"),a.sa=void 0)}else{var Xc=eg(a,na);if(Xc){var Yc=0;Ma&&("l"==Ma.charAt(0)&&(Ma=Ma.substr(1)||ec),Yc=Sf(a,Ma)>>>0,65536<Yc&&(Yc=65536));for(var lc="",Zc="dd"==ua?4:"dw"==ua?2:1,$c=Zc*Yc||128,ri=$c+15>>4||1;ri--&&0<$c;){var ad=0,me=0,mc,ne="",
vg="",na=kg(Xc.J);for(mc=16;0<mc&&0<$c;mc--){var bd=a.Ga(Xc,1),ad=ad|bd<<(me++<<3);me==Zc&&(ne+=t(ad,2*Zc),ne+=1==Zc?9==mc?"-":" ":" ",ad=me=0);vg+=32<=bd&&128>bd?String.fromCharCode(bd):".";$c--}lc&&(lc+="\n");lc+=na+" "+ne+(mc?"":" "+vg)}lc&&a.i(lc);a.la=Xc}}}}break;case "e":if("else"==f[0])break;var cd=1,wg=255,xg=a.Ga,yg=a.Xb;"ew"==f[0]&&(cd=2,wg=65535,xg=a.Gb,yg=a.Qc);var zg=cd<<1,Ag=f[1];if(null==Ag)a.i("edit memory commands:"),a.i("\teb [a] [...] edit bytes at address a"),a.i("\tew [a] [...] edit words at address a");
else{var dd=eg(a,Ag);if(dd)for(var ed=2;ed<f.length;ed++){var nc=Qf(a,f[ed]);if(void 0===nc){a.i("unrecognized value: "+f[ed]);break}nc&~wg&&a.i("warning: "+t(nc)+" exceeds "+cd+"-byte value");var si=xg.call(a,dd);a.i("changing "+kg(dd.J)+" from "+t(si,zg,!0)+" to "+t(nc,zg,!0));yg.call(a,dd,nc,cd)}}break;case "f":Hh(a,f[1]);break;case "g":a:{var Bg=f[1],ti=b;if(void 0!==Bg){var oe=eg(a,Bg,!0);if(!oe)break a;jg(a,oe,ti);a.Pa(a.j,oe,!0)}ch(a,!0)||c||a.i("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var pe;if(a.G.ka)pe="halting",a.da();else{if(va(a,!0))break a;pe="already halted"}c||a.i(pe)}break;case "i":if("if"==f[0]){var qe;var oc=b.substr(2),oc=Oa(oc);Qf(a,oc)?(c||a.i("true: "+oc),qe=!0):(c||a.i("false: "+oc),qe=!1);qe||(d=!1);break}if("int"==f[0]){var fd;var ui=f[1];if(a.u.N&512){var re=Qf(a,ui);null==re?fd=!1:(a.i("requesting interrupt level "+re),Ed(a.u,re),fd=!0)}else a.i("interrupts disabled (use rif=1 to enable)"),fd=!1;fd||(d=!1);break}var se=f[1];if(se&&"?"!=se){var te=
Sf(a,se);if(void 0!==te){var vi=Pb(a.H,te);a.i(x(te)+": "+Ea(vi))}}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 wi=f[0];if("?"==f[1])a.i("stack trace commands:"),a.i("\tk\tshow frame addresses"),a.i("\tks\tshow symbol information");else{var ue=0,Cg=Zf(),pc=Zf(a.u.M);for(a.i("stack trace for "+kg(pc.J));10>ue;){for(var ub=null,xi=256;65536>pc.J>>>0;){Cg.J=a.Gb(pc,2);if(null==pc.J||!xi--)break;for(var yi=a,gd=Cg,
Dg=null,qc=gd.J,Eg=qc,ve=1;6>=ve&&qc;ve++){if(2<ve){gd.J=qc;var hd=lh(yi,gd);if(0<=hd.indexOf("CALL")){var Fg=hd.indexOf(" ");if(qc+(hd.indexOf(" ",Fg+1)-Fg-1)/2==Eg){Dg=hd;break}}}qc--}gd.J=Eg;if(ub=Dg)break}if(!ub||null==ub)break;var Gg=null;if("ks"==wi){var Hg=ub.match(/[0-9A-F]+$/);Hg&&(Gg=Jh(a,Hg[0]))}ub=La(ub,50)+" ;"+(Gg||"stack="+kg(pc.J));a.i(ub);ue++}ue||a.i("no return addresses found")}break;case "l":"ln"==f[0]&&Jh(a,f[1],!0);break;case "m":a:{var $a,ab=null,ba=f[1];"?"==ba&&(ba=void 0);
if(void 0!==ba){var mb=0;if("all"==ba)mb=1878917119,ba=null;else if("on"==ba)ab=!0,ba=null;else if("off"==ba)ab=!1,ba=null;else{"keys"==ba&&(ba="key");"kbd"==ba&&(ba="keyboard");for($a in tb)if(ba==$a){mb=tb[$a];ab=!!(a.ha&mb);break}if(!mb){a.i("unknown message category: "+ba);break a}}if(mb)if("on"==f[2])a.ha|=mb,ab=!0;else if("off"==f[2]&&(a.ha&=~mb,ab=!1,1073741824==mb)){for(var we=0;we<a.X.length;we++)a.i(a.X[we]);a.X=[]}}var zi=0,rc="";for($a in tb)if(!ba||ba==$a){var Ai=!!(a.ha&tb[$a]);if(null===
ab||ab==Ai)rc&&(rc+=","),++zi%10||(rc+="\n\t"),"key"==$a&&($a="keys"),rc+=$a}void 0===ba&&a.i("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.i((null!==ab?ab?"messages on: ":"messages off: ":"message categories:\n\t")+(rc||"none"));ag(a)}break;case "o":var xe=f[1],Bi=f[2];if(xe&&"?"!=xe){var ye=Sf(a,xe,"port #"),ze=Sf(a,Bi);void 0!==ye&&void 0!==ze&&(Tb(a.H,ye,ze),a.i(x(ye)+": "+Ea(ze)))}else a.i("output commands:"),a.i("\to [p] [b]\twrite byte [b] to port [p]"),a.i("warning: port accesses can affect hardware state");
break;case "p":if("print"==f[0]){Lh(a,b.substr(5));break}var Ig="pr"==f[0]?1:0,Ci=1+Ig;if(a.M)a.i("step in progress");else{var Ae=Zf(a.u.j);switch(a.Ga(Ae)){case 205:a.M=Ci,gg(Ae,3)}a.M?(a.Pa(a.j,Ae,!0),ch(a)||(a.R&&a.R.Za(),a.M=0)):Mh(a,Ig?"tr":"t")}break;case "r":if("reset"==b){a.R&&a.R.reset();break}eh(a,f);break;case "s":Kh(a,f);break;case "t":Mh(a,f[0],f[1]);break;case "u":fh(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Ih(a,b.substr(3))||(d=!1);break}a.i("PC8080 version 1.32.2 ("+a.u.xb+",RELEASE"+
(rb?",TYPEDARRAYS":",LONGARRAYS")+")");a.i(Va());break;case "?":if(f[1]){Lh(a,b.substr(1));break}var Be="commands:",Ce;for(Ce in Oh)Be+="\n"+La(Ce,9)+Oh[Ce];Fd(a)||(Be+="\nnote: frequency/history disabled if no exec breakpoints");a.i(Be);break;default:a.i("unknown command: "+b),d=!1}}}catch(Kg){a.i("debugger error: "+(Kg.stack||Kg.message)),d=!1}return d}function Ac(a,b,c){b=a.Ab(b,c);for(var d in b)if(!kh(a,b[+d]))return!1;return!0}
var Oh={"?":"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"},
Yf=8080,mh=8086,nh="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(" "),oh="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(" "),
Ng=0,Og=1,Pg=2,Qg=3,Rg=4,Sg=5,Tg=6,Mg=7,Ug=8,Vg=9,Wg=10,Xg=11,Yg=12,Zg=13,$g=14,Jg="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),rh=15,qh=240,zh=3840,sh=61440,ph=0,Q=1,vh=2,wh=3,yh=16,P=32,xh=64,Ah=128,R=Mg<<8|yh|Q,S=Ng<<8|yh|Q,U=Og<<8|yh|Q,V=Pg<<8|yh|Q,W=Qg<<8|yh|Q,X=Rg<<8|yh|Q,Y=Sg<<8|yh|Q,Z=Tg<<8|yh|Q|xh,Ph=Ug<<8|yh|wh,Qh=Vg<<8|yh|wh,Rh=Wg<<8|yh|wh,Sh=Xg<<8|yh|wh,Th=$g<<8|yh|wh,uh=4096,th=8192,O=16384,Bh=32768,cg=[[45],[42,Ph,P],[71,Ph|xh,R|O],[29,Ph],[28,S],[22,S],[44,S,P],[63],[45,Bh],[21,
Rh|O,Ph],[40,R|O,Ph|xh],[23,Ph],[28,U],[22,U],[44,U,P],[64],[45,Bh],[42,Qh,P],[71,Qh|xh,R|O],[29,Qh],[28,V],[22,V],[44,V,P],[52],[45,Bh],[21,Rh|O,Qh],[40,R|O,Qh|xh],[23,Qh],[28,W],[22,W],[44,W,P],[53],[45,Bh],[42,Rh,P],[68,51|xh,Rh|O],[29,Rh],[28,X],[22,X],[44,X,P],[20],[45,Bh],[21,Rh|O,Rh],[41,Rh|O,51|xh],[23,Rh],[28,Y],[22,Y],[44,Y,P],[16,R|O],[45,Bh],[42,Sh,P],[70,51|xh,R|O],[29,Sh],[28,Z],[22,Z],[44,Z,P],[72],[45,Bh],[21,Rh|O,Sh],[39,R|O,51|xh],[23,Sh],[28,R],[22,R],[44,R,P],[17],[43,S,S],[43,
S,U],[43,S,V],[43,S,W],[43,S,X],[43,S,Y],[43,S,Z],[43,S,R],[43,U,S],[43,U,U],[43,U,V],[43,U,W],[43,U,X],[43,U,Y],[43,U,Z],[43,U,R],[43,V,S],[43,V,U],[43,V,V],[43,V,W],[43,V,X],[43,V,Y],[43,V,Z],[43,V,R],[43,W,S],[43,W,U],[43,W,V],[43,W,W],[43,W,X],[43,W,Y],[43,W,Z],[43,W,R],[43,X,S],[43,X,U],[43,X,V],[43,X,W],[43,X,X],[43,X,Y],[43,X,Z],[43,X,R],[43,Y,S],[43,Y,U],[43,Y,V],[43,Y,W],[43,Y,X],[43,Y,Y],[43,Y,Z],[43,Y,R],[43,Z,S],[43,Z,U],[43,Z,V],[43,Z,W],[43,Z,X],[43,Z,Y],[26],[43,Z,R],[43,R,S],[43,R,
U],[43,R,V],[43,R,W],[43,R,X],[43,R,Y],[43,R,Z],[43,R,R],[3,R|O,S],[3,R|O,U],[3,R|O,V],[3,R|O,W],[3,R|O,X],[3,R|O,Y],[3,R|O,Z],[3,R|O,R],[2,R|O,S],[2,R|O,U],[2,R|O,V],[2,R|O,W],[2,R|O,X],[2,R|O,Y],[2,R|O,Z],[2,R|O,R],[73,R|O,S],[73,R|O,U],[73,R|O,V],[73,R|O,W],[73,R|O,X],[73,R|O,Y],[73,R|O,Z],[73,R|O,R],[66,R|O,S],[66,R|O,U],[66,R|O,V],[66,R|O,W],[66,R|O,X],[66,R|O,Y],[66,R|O,Z],[66,R|O,R],[5,R|O,S],[5,R|O,U],[5,R|O,V],[5,R|O,W],[5,R|O,X],[5,R|O,Y],[5,R|O,Z],[5,R|O,R],[76,R|O,S],[76,R|O,U],[76,R|
O,V],[76,R|O,W],[76,R|O,X],[76,R|O,Y],[76,R|O,Z],[76,R|O,R],[46,R|O,S],[46,R|O,U],[46,R|O,V],[46,R|O,W],[46,R|O,X],[46,R|O,Y],[46,R|O,Z],[46,R|O,R],[18,R|O,S],[18,R|O,U],[18,R|O,V],[18,R|O,W],[18,R|O,X],[18,R|O,Y],[18,R|O,Z],[18,R|O,R],[58],[50,Ph],[34,51],[30,51],[11,51],[51,Ph],[4,R|O,P|Q],[65,Ah],[62],[54],[38,51],[30,51|Bh],[15,51],[7,51],[1,R|O,P|Q],[65,Ah],[57],[50,Qh],[33,51],[48,P|Q,R|O],[10,51],[51,Qh],[74,R|O,P|Q],[65,Ah],[55],[54,Bh],[31,51],[27,R|O,P|Q],[8,51],[7,51|Bh],[67,R|O,P|Q],[65,
Ah],[61],[50,Rh],[37,51],[78,Sh|xh|O,Rh|O],[14,51],[51,Rh],[6,R|O,P|Q],[65,Ah],[60],[49,Rh],[36,51],[75,Rh|O,Qh|O],[13,51],[7,51|Bh],[77,R|O,P|Q],[65,Ah],[59],[50,Th],[35,51],[24],[12,51],[51,Th],[47,R|O,P|Q],[65,Ah],[56],[69,Sh|O,Rh|O],[32,51],[25],[9,51],[7,51|Bh],[19,R|O,P|Q],[65,Ah]],bh=1E3;ib(function(){for(var a=qa(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=oa(c),d=new Xf(d);pa(d,c)}});
function Uh(a,b,c){n.call(this,"Computer",a,67108864);this.G.ja=!1;Vh(this,b);this.L=wc(this,"autoPower",a);this.j=0;this.T=a.busWidth||a.buswidth;this.b=Wh;this.F=null;this.C=this.O=!1;this.U=wc(this,"url")||"";(Math.random()+.1).toString(36);this.g=Xh(this);if(this.u=ma("CPU",this.id)){this.K=ma("Debugger",this.id);this.A=[];for(b=null;b=wb(this,"Video",b);)this.A.push(b);this.H=new yb({id:this.eb+".bus",busWidth:this.T},this.u,this.K);var d,e=ka(this.id);if((this.B=ma("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.2\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=wc(this,"resume",a);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=Wh),this.b&&(this.I=new Vc(this,"1.32.2"),Yh(this.I)?
b=null:delete this.I);!b&&this.b&&(b=Zh(this))&&(this.C=!0);if(b){var g=this;Ta(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);ta(g)})}else ta(this);this.P.power||(this.L=!0);!c&&this.L&&$h(this,this.nb)}else p("Unable to find CPU component")}aa(Uh,n);function Vh(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){p(d.message+" ("+c+")")}}a.S=b}
function wc(a,b,c){var d=b.toLowerCase(),d=db(b)||db(d);void 0===d&&a.S&&(d=a.S[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function $h(a,b,c){for(var d=ka(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!sa(f)){sa(f,function(){$h(a,b,c)});return}}b.call(a,c)}
function ai(a,b){var c=new Vc(a,"1.32.2",bi);if(Yh(c)&&ci(c)){var d=c.get(di),e=b?b.get(di):"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=Uh.prototype;
k.nb=function(a){void 0===a&&(a=this.b||(this.F?ei:Wh));if(!this.j){this.j++;var b=!1,c=!1;this.N=!1;var d=this.I||new Vc(this,"1.32.2");if(a==fi)b=!0;else if(a>Wh){if(Yh(d,this.F)){this.w=new Vc(this,"1.32.2",gi);Yh(this.w)&&(hi(this,d),a=ii,ji(this.w));this.w.set(di,Ra());ki(this.w);var e=this.b&&!this.C;if(a==ei||ia("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ci(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?Yh(d,g):("error"==f&&"no machine state"!=
g?(this.aa("Error: "+g),"unable to verify user"==g&&(bb(li,""),this.g=null)):this.i(f+": "+g),ji(d),Yh(d)?(c=ci(d),e=!0):c=!1))}e&&ai(this,c?d:null)}else a==ii&&d.clear()}else ai(this);delete this.F;delete this.I}e=ka(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.u&&(c=mi(this,g,d,b,c));b=[d,a,c];a!=fi?$h(this,this.Cc,b):this.Cc(b)}};
function mi(a,b,c,d,e){if(!b.G.ja){b.G.ja=!0;if(b.va){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.va(f,d)&&f&&(p("Unable to restore state for "+b.type),a.M&&!a.O?(c.clear(),a.b=Wh,window&&window.location.reload()):a.N=!0,b.va(null),e=!1)}if(!d&&b.vc)for(a=b.vc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
k.Cc=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&&(mi(this,this.u,b,c,a),this.u.lb());this.N&&(hi(this,b),b.clear());!c&&this.w&&(this.w.clear(),delete this.w);this.j=0};
function hi(a,b){if(ia("There may be a problem with your PC8080 machine.\n\nTo help us diagnose it, click OK to send this PC8080 machine state to http://www.pcjs.org.")){var c=a.g||"";b=b.toString();var d={app:"PC8080",ver:"1.32.2"};d.url=a.U;d.user=c;d.type="bug";d.data=b;Ta("http://www.pcjs.org/api/v1/report",d,!0)}}
function Nh(a,b,c){var d,e="none";if(a.j)return null;a.j--;var f=new Vc(a,"1.32.2"),g=new Vc(a,"1.32.2",bi),h=Ra();g.set(di,h);f.set(di,h);f.set(ni,"1.32.2");f.set(oi,window?window.location.href:null);f.set(pi,Va());a.u&&a.u.ua&&(c&&a.u.da(),d=a.u.ua(b,c),"object"===typeof d&&f.set(a.u.id,d),c&&(a.u.G.ja=!1,!1===d&&(e=null)));for(var h=ka(a.id),l=0;l<h.length;l++){var r=h[l];r.G.ja&&(r.ua&&(d=r.ua(b,c),"object"===typeof d&&f.set(r.id,d)),c&&(r.G.ja=!1,!1===d&&(e=null)))}e&&(c?(h=d=!1,b?(a.g&&Di(a,
a.g,f.toString()),ki(g)&&ki(f)||(e=null,d=h=!0)):a.b&&(d=!0,h=a.b==Ei),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&&(ya(this,"Resetting "+this.H.type),this.H.reset());for(var a=ka(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.H&&c.reset&&(ya(this,"Resetting "+c.type),c.reset())}};
k.start=function(a,b){for(var c=ka(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};k.stop=function(a,b){for(var c=ka(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
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?Nh(d,!1,!0):$h(d,d.nb))},!0;case "reset":return this.P[b]=c,c.onclick=function(){if(d.G.ja&&!d.j)if(d.b&&!d.D){var a=ia("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Nh(d,a,!0);!a&&d.M?window&&window.location.reload():d.nb(Wh)}else d.reset(),d.u&&d.u.lb()},!0;case "save":if(Ha())c.parentNode.removeChild(c);else return this.P[b]=
c,c.onclick=function(){var a=Xh(d,!0);if(a){var b=!!(d.b&&!d.D||d.M),c=Nh(d,b);b?Di(d,a,c):d.aa("Resume disabled, machine state not saved")}},!0}return!1};
function Xh(a,b){var c=a.g;c||((c=Ya(li),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=Fi(a,c))||a.aa("The user ID is invalid.")):b&&a.aa("Browser local storage is not available"));return c}
function Fi(a,b){a.g=null;b=Ta(Ia()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(bb(li,b.data),a.g=b.data)}catch(d){p(d.message+" ("+c+")")}return a.g}function Zh(a){var b=null;a.g&&(b=Ia()+"/api/v1/user?req=load&user="+a.g+"&state="+Gi(a,"1.32.2"));return b}
function Di(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=Gi(a,"1.32.2");d.data=c;b=Ta(Ia()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.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),bb(li,""),a.g=null)}}
function wb(a,b,c){a=ka(a.id);for(var d=0;d<a.length;d++){var e=a[d];if(c)c==e&&(c=null);else if(e.type==b)return e}return null}k.Za=function(a){if(this.A.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.A[0];d.V&&d.V.focus();!a&&window&&window.scrollTo(b,c)}};
function Lc(a,b){a.u&&(a=a.u,a.ib&&(b||!a.G.ka||a.G.Bc)&&(I(a,"A",a.g),I(a,"B",a.w),I(a,"C",a.A),I(a,"BC",Wc(a),4),I(a,"D",a.B),I(a,"E",a.C),I(a,"DE",jd(a),4),I(a,"H",a.D),I(a,"L",a.F),I(a,"HL",D(a),4),I(a,"SP",a.M,4),I(a,"PC",a.j,4),b=Uc(a),I(a,"PS",b,4),I(a,"IF",b&512?1:0,1),I(a,"SF",b&128?1:0,1),I(a,"ZF",b&64?1:0,1),I(a,"AF",b&16?1:0,1),I(a,"PF",b&4?1:0,1),I(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 gi="failsafe",bi="validate",di="timestamp",ni="version",oi="url",pi="browser",li="user",fi=-1,Wh=0,ei=1,ii=2,Ei=3;ib(function(){for(var a=qa(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=oa(c),c=qa(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=oa(f),g=new Uh(g,d,!0);pa(g,f);g.L&&$h(g,g.nb)}});jb.show.push(function(){for(var a=qa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=oa(a[b]);(c=ma("Computer",c.id))&&c.W&&!c.G.ja&&c.nb(fi)}});
jb.exit.push(function(){for(var a=qa(document,"pc8080","computer"),b=0;b<a.length;b++){var c=oa(a[b]);(c=ma("Computer",c.id))&&c.G.ja&&Nh(c,!(!c.b||c.D),!0)}});function Vc(a,b,c){this.id=a.id;this.K=a.K;this.g="";this.b={};this.u=this.H=!1;this.key=Gi(a,b,c);ji(this,a.Ad)}k=Vc.prototype;k.set=function(a,b){try{this.b[a]=b}catch(c){}};k.get=function(a){return this.b[a]||null};k.data=function(){return this.b};
function Yh(a,b){return b?(a.g=b,a.u=!0,a.H=!1,!0):a.u?!0:Wa()&&(b=Ya(a.key))?(a.g=b,a.u=!0):!1}function ci(a){var b=!0;if(!a.H)try{a.b=JSON.parse(a.g),a.H=!0}catch(c){p(c.message||c),b=!1}return b}function ki(a){var b=!0;if(Wa()){var c=JSON.stringify(a.b);bb(a.key,c)||(p("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 ji(a,b){a.g="";a.b={};a.u=a.H=!1;b&&a.set("parms",b)}
k.clear=function(a){ji(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 Gi(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 Hi=0;
function Ii(a,b,c,d,e,f){e("Loading "+a+"...");Ta(a,null,!0,function(g,h,l){l?(h||(h="unable to load "+a+" ("+l+")"),f(h,null)):Ji(h,a,b,c,d,e,f)})}
function Ji(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(ea(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(u){f=null,a=u.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?Ki(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
null)}
function Ki(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");Ta(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=h[0],r,u=/( [a-z]+=)(['"])(.*?)\2/g;r=u.exec(f);)l=0>l.indexOf(r[1])?l.replace(">",r[0]+">"):l.replace(new RegExp(r[1]+"(['\"])(.*?)\\1"),r[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);Ki(a,b,c)}})}else c(a,null)}
function Li(a,b,c,d){function e(a){if(void 0===h){var b=g&&qa(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=Ja(a))}function f(a){e("Error: "+a);l&&(--Hi||nb(!0));l=!1}var g,h,l=!0;Hi++;fa[a]={};try{if(g=document.getElementById(a)){var r;if("object"==typeof resources&&(r=resources.css)){var u=document.head||document.getElementsByTagName("head")[0],v=document.createElement("style");v.type="text/css";v.styleSheet?v.styleSheet.cssText=r:v.appendChild(document.createTextNode(r));u.appendChild(v)}c||
(c="/versions/pc8080/1.32.2/components.xsl");r=function(d,h){h?Ii(c,null,null,!1,e,function(d,l){l?(ea(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(l=h.transformNode(l))?(g.outerHTML=l,--Hi||nb(!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),--Hi||nb(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?Ii(b,a,d,!0,e,r):Ji(b,null,a,d,!1,e,r)}else f("missing machine element: "+a)}catch(B){f(B.message)}return l}window.embedPC8080=function(a,b,c,d){nb(!1);return Li(a,b,c,d)};window.findMachineComponent=function(a,b){return ma(b,a+".machine")};window.enableEvents=nb;window.sendEvent=pb;})();