pcjs/versions/pc8080/1.34.2/pc8080-dbg.js

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