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

300 lines
112 KiB
JavaScript

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