pcjs/versions/pc8080/1.34.0/pc8080-dbg.js
2017-02-06 17:46:42 -08:00

298 lines
111 KiB
JavaScript

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