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

290 lines
108 KiB
JavaScript

(function(){/*
http://pcjs.org/modules/shared/lib/dumpapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/reportapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/userapi.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/keys.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/strlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/usrlib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/weblib.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpudef.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/messages.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/debugger.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/embed.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/defines.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/component.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/defines.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/panel.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/bus.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/memory.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpu.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpustate.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/cpuops.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/chipset.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/rom.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/ram.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/keyboard.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/video.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/serialport.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/pc8080/lib/computer.js (C) Jeff Parsons 2012-2016
http://pcjs.org/modules/shared/lib/state.js (C) Jeff Parsons 2012-2016
*/
var l,n={re:1,se:3,te: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,Eb:65,Mc:66,Oc:67,bc:68,E:69,Rc:70,Sc:71,Tc:72,Uc:73,ad:74,bd:75,dc:76,jd:77,kd:78,md:79,nd:80,Q:81,td:82,wd:83,Cd:84,Dd:85,Ed:86,Fd:87,Hd:88,Id:89,Pb:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Jd:97,af:98,bf:99,d:100,e:101,cf:102,df:103,ef:104,ff:105,gf:106,k:107,hf:108,
jf:109,n:110,kf:111,p:112,q:113,r:114,lf:115,t:116,nf:117,pf:118,qf:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,ue:127};
function aa(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 ba(a,b,c){var d="";b?11<b&&(b=11):b=a&-65536?11: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 ca(a){return t(a,2,!0)}
function u(a){return t(a,4,!0)}function da(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 fa(a){var b="",c=a.lastIndexOf(".");0<=c&&(b=a.substr(c+1).toLowerCase());return b}function ga(){var a=ia();return-1!==a.indexOf("pcjs.org",a.length-8)}var ka={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};function la(a){return a.replace(/[&<>"']/g,function(a){return ka[a]})}
function ma(a,b){return(a+" ").slice(0,b)}function na(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")}var oa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",11:"VT",12:"FF",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 pa(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}var qa=Date.now||function(){return+new Date};function ra(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())}
function sa(a,b){var c;if(Array.prototype.indexOf)return a.indexOf(b,c);c=c||0;0>c&&(c+=a.length);0>c&&(c=0);for(var d=a.length;c<d;c++)if(c in a&&a[c]===b)return c;return-1}
function ta(a,b,c,d){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="",m;for(m in b)b.hasOwnProperty(m)&&(k&&(k+="&"),k+=m+"="+encodeURIComponent(b[m]));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 ua(a,b){var c,d={za:null,Da:null,ab:null,Sa: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.ab=g.load;d.Sa=g.exec;if(e=g.bytes)d.za=e;else if(e=g.words)for(d.za=Array(2*e.length),f=c=0;c<e.length;c++)d.za[f++]=e[c]&255,d.za[f++]=e[c]>>8&255;else if(e=g.data)for(d.za=Array(4*e.length),f=c=0;c<e.length;c++)d.za[f++]=
e[c]&255,d.za[f++]=e[c]>>8&255,d.za[f++]=e[c]>>16&255,d.za[f++]=e[c]>>24&255;else d.za=g;d.Da=g.symbols;d.za.length?1==d.za.length&&(w(d.za[0]),d=null):(w("Empty resource: "+a),d=null)}catch(h){w("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)){w("Resource data error ("+a+"): invalid hex byte ("+b[c]+")");break}e.push(f&255)}c==b.length&&(d.za=e)}return d}
function ia(){return"http://"+(window?window.location.host:"www.pcjs.org")}function xa(){return window?window.navigator.userAgent:""}function w(a){window&&window.alert(a)}function ya(a){var b=!1;window&&(b=window.confirm(a));return b}var za=null;
function Aa(){if(null==za){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}za=a}return za}function Ba(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b}function Ca(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}
function Da(a){if(window){var b=xa();return"iOS"==a&&b.match(/(iPod|iPhone|iPad)/)&&b.match(/AppleWebKit/)||"MSIE"==a&&b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)?!0:!1}return!1}function Ea(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0<a?setTimeout(d,0):c()}d()}
function Fa(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}}var Ga={init:[],show:[],exit:[]},Ka=!1,La=!1,Ma=!0;function Na(a,b){if(window){var c=window[a];window[a]="function"!==typeof c?b:function(){c&&c();b()}}}function Oa(a){Ga.init.push(a)}
function Pa(a){if(Ma)try{for(var b=0;b<a.length;b++)a[b]()}catch(c){Qa("An unexpected exception occurred:\n\n"+c.message+"\n\nPlease send this information to support@pcjs.org. Thanks.",void 0,void 0)}}function Ra(a){!Ma&&a?(Ma=!0,Ka&&Ta("init"),La&&Ta("show")):Ma=a}function Ta(a){Ga[a]&&Pa(Ga[a])}Na("onload",function(){Ka=!0;Pa(Ga.init)});Na("onpageshow",function(){La=!0;Pa(Ga.show)});Na(Da("Opera")||Da("iOS")?"onunload":"onbeforeunload",function(){Pa(Ga.exit)});
function x(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.jc=b.comment;this.Qd=b;b=this.id.indexOf(".");0>b?this.gb=this.id:(this.hb=this.id.substr(0,b),this.gb=this.id.substr(b+1));this[a]=c;this.C={ready:!1,wb:!1,Qb:!1,wa:!1,error:!1};this.Ib=null;this.C.error=!1;this.M={};this.H=null;this.sa=d||0;Ua.push(this)}var Va=void 0,Wa={};
if(window){Va||(Va=window.location.search.substr(1));for(var Xa,Ya=/\+/g,Za=/([^&=]+)=?([^&]*)/g;Xa=Za.exec(Va);)Wa[decodeURIComponent(Xa[1].replace(Ya," "))]=decodeURIComponent(Xa[2].replace(Ya," "))}function ab(a){function b(){}if(window){if(!a)throw new TypeError;if(Object.create)return Object.create(a);var c=typeof a;if("object"!==c&&"function"!==c)throw new TypeError;}b.prototype=a;return new b}
function A(a,b){b||(b=x);a.prototype=ab(b.prototype);a.prototype.constructor=a;a.prototype.parent=b.prototype}if(window){window.PCjs||(window.PCjs={});var bb=window.PCjs.Machines||(window.PCjs.Machines={}),Ua=window.PCjs.Components||(window.PCjs.Components=[])}else bb={},Ua=[];function cb(a,b,c){bb[a]&&b&&(bb[a][b]=c)}function Qa(a,b,c){b||w((c?c+": ":"")+a)}
function db(a){var b,c=[];a&&(a=0<(b=a.indexOf("."))?a.substr(0,b+1):"");for(b=0;b<Ua.length;b++){var d=Ua[b];a&&d.id.indexOf(a)||c.push(d)}return c}function eb(a){if(void 0!==a){var b;for(b=0;b<Ua.length;b++)if(Ua[b].id===a)return Ua[b]}return null}function fb(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<Ua.length;d++)if(c)c==Ua[d]&&(c=null);else if(!(a!=Ua[d].type||b&&Ua[d].id.indexOf(b)))return Ua[d]}return null}
function B(a){var b=null;if(a=a.getAttribute("data-value"))try{b=eval("("+a+")")}catch(c){w(c.message+" ("+a+")")}return b}function gb(a,b){b=D(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=B(f))&&g.binding&&a.oa(g.type,g.binding,f,g.value),k=h.length}}}}
function D(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}
x.prototype={constructor:x,parent:null,toString:function(){return this.name?this.name:this.id||this.type},oa:function(a,b,c){switch(b){case "clear":return this.M[b]||(this.M[b]=c,c.onclick=function(a){return function(){a.M.print&&(a.M.print.value="")}}(this)),!0;case "print":return this.M[b]||(this.Ha=this.M[b]=c,c.value="",this.g=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.ia=function(a){this.g(a,this.gb)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.gb+": "+a)},ia:function(a,b,c){Qa(a,b,c||this.type)},Fa:function(){return this.C.wa=!0},Ja:function(a,b){b&&(this.C.wa=!1);return!0}};function E(a,b,c,d,e,f,g){a.H&&(!0===g?g=0:null==g&&(g=a.sa),hb(a.H,a,b,c,d,e,f,g))}function ib(a,b){a.H&&jb(a,0)&&a.H.message(b,void 0)}function jb(a,b){if(a.H){a===a.H?b|=0:b=b||a.sa;var c=a.H.sa&b;return!!b&&c===b||!!(c&a.H.Nd)}return!1}
function kb(a,b){if(a.C.Qb)return a.C.wb=!1,a.C.Qb=!1;if(a.C.error)return a.g(a.toString()+" error"),!1;a.C.wb=b;return a.C.wb}function lb(a,b){a.C.wb&&(b?a.C.Qb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.C.wb}function F(a){if(!a.C.error&&(a.C.ready=!0,a.C.ready)){var b=a.Ib;a.Ib=null;b&&b()}}function mb(a,b){b&&(a.C.ready?b():a.Ib=b);return a.C.ready}function nb(a,b){a.C.error=!0;a.ia(b)}
Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1});Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});
Function.prototype.bind||(Function.prototype.bind=function(a){function b(){return e.apply(this instanceof c&&a?this:a,d.concat(Array.prototype.slice.call(arguments)))}function c(){}if("function"!=typeof this)throw new TypeError("Function.prototype.bind: non-callable object");var d=Array.prototype.slice.call(arguments,1),e=this;c.prototype=this.prototype;b.prototype=new c;return b});
var ob="undefined"!==typeof ArrayBuffer,pb=[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],sb={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 tb(a){x.call(this,"Panel",a,tb)}A(tb);l=tb.prototype;
l.oa=function(a,b,c,d){return this.A&&this.A.oa(a,b,c,d)||this.b&&this.b.oa(a,b,c,d)||this.I&&this.I.oa(a,b,c,d)||this.H&&this.H.oa(a,b,c,d)?!0:this.parent.oa.call(this,a,b,c,d)};l.Qa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.H=d;this.I=ub(a,"Keyboard")};l.Fa=function(a,b){b||vb();return!0};l.Ja=function(){return!0};l.Ka=function(){};function vb(){for(var a=!1,b=D(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=B(d),f=eb(e.id);f||(a=!0,f=new tb(e));gb(f,d);a&&F(f)}}Oa(vb);
function wb(a,b,c){x.call(this,"Bus",a,wb);this.b=b;this.H=c;this.J=a.busWidth||16;this.K=Math.pow(2,this.J);this.u=this.K-1|0;this.ha=(this.J>>1)+2;10>this.ha&&(this.ha=10);15<this.ha&&(this.ha=15);this.Ia=1<<this.ha;this.L=this.Ia>>2;this.w=this.Ia-1;this.I=this.K/this.Ia|0;this.D=this.I-1;this.A=[];this.j=[];this.F=this.B=!1;this.N=[];this.O=[];a=new G;xb(a,this.H);this.W=Array(this.I);for(b=0;b<this.I;b++)this.W[b]=a;F(this)}A(wb);l=wb.prototype;l.reset=function(){};
l.Fa=function(a,b){b||this.reset();return!0};function yb(a,b,c,d){for(var e=b,f=c,g=e>>>a.ha;0<f&&g<a.W.length;){var h=a.W[g],k=g*a.Ia,m=a.Ia-(e-k);m>f&&(m=f);if(h&&h.size){if(h.type==d){if(e+f<=h.G)return h.Cb+=h.G-e,h.G=e,!0;if(e>=h.G+h.Cb){m=h.size-(e-k);m>f&&(m=f);h.Cb=e-h.G+m;e=k+a.Ia;f-=m;g++;continue}}return zb(1,e,f)}e=new G(e,m,a.Ia,d);xb(e,a.H,h);a.W[g++]=e;e=k+a.Ia;f-=m}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+Ab[d]+" at "+u(b)),!0):zb(2,b,c)}
l.Z=function(a){return this.W[(a&this.u)>>>this.ha].nb(a&this.w,a)};function Bb(a,b){return a.W[(b&a.u)>>>a.ha].Ab(b&a.w,b)}l.bb=function(a){var b=a&this.w,c=(a&this.u)>>>this.ha;return b!=this.w?this.W[c].Fc(b,a):this.W[c++].nb(b,a)|this.W[c&this.D].nb(0,a+1)<<8};function Cb(a,b){var c=b&a.w,d=(b&a.u)>>>a.ha;return c!=a.w?a.W[d].Vb(c,b):a.W[d++].Ab(c,b)|a.W[d&a.D].Ab(0,b+1)<<8}l.ua=function(a,b){this.W[(a&this.u)>>>this.ha].pb(a&this.w,b&255,a)};
function Db(a,b,c){a.W[(b&a.u)>>>a.ha].Db(b&a.w,c&255,b)}l.Mb=function(a,b){var c=a&this.w,d=(a&this.u)>>>this.ha;c!=this.w?this.W[d].Hc(c,b&65535,a):(this.W[d++].pb(c,b&255,a),this.W[d&this.D].pb(0,b>>8&255,a+1))};function Eb(a){for(var b=0,c=[],d=0;d<a.I;d++){var e=a.W[d];if(e.Oa||e.Cc){c[b++]=d;var f=b++;if(e=e.save()){for(var g=0,h=0,k=[];g<e.length;){for(var m=e[g],p=g+1;p<e.length&&e[p]===m;)p++;k[h++]=p-g;k[h++]=m;g=p}k.length<e.length&&(e=k)}c[f]=e}}return c}
function Fb(a,b){if(void 0===b)return a.F=!a.F,a.F;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}function Gb(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]?w("Input port "+u(k)+" already registered"):f.A[k]=[h,!1]}}
function Ib(a,b,c){for(var d=1,e=0,f=0;0<d;){var g=a.A[b],h=a.N[b]||1,k=1==h?255:2==h?65535:-1,m=k;void 0!==g?(g[0]&&(m=g[0](b,c),void 0===m?m=k:m&=k),a.H&&a.F!=g[1]&&Jb(a.H,b,m)):a.H&&(hb(a.H,a,b,null,c),a.F&&Jb(a.H,b,m));e|=m<<f;f+=h<<3;b+=h;d-=h}return e}function Kb(a,b){if(void 0===b)return a.B=!a.B,a.B;void 0===a.j[b]&&(a.j[b]=[null,!1]);a.j[b][1]=!a.j[b][1];return a.j[b][1]}
function Ub(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.j[k]?w("Output port "+u(k)+" already registered"):f.j[k]=[h,!1]}}function Vb(a,b,c,d){for(var e=1,f=0;0<e;){var g=a.j[b],h=a.O[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.H&&a.B!=g[1]&&Wb(a.H,b,k)}else a.H&&(hb(a.H,a,b,k,d),a.B&&Wb(a.H,b,k));f+=h<<3;b+=h;e-=h}}
function zb(a,b,c){w("Memory block error ("+a+": "+t(b)+","+t(c)+")");return!1}var Xb;if(ob){var Yb=new ArrayBuffer(2);(new DataView(Yb)).setUint16(0,256,!0);Xb=256===(new Uint16Array(Yb))[0]}else Xb=!1;var Zb=Xb;
function G(a,b,c,d){this.id=$b+=2;this.b=null;this.G=a;this.Cb=b;this.size=c||0;this.type=d||ac;this.M=d==bc;xb(this);this.Oa=this.Cc=!1;if(c)if(ob)this.F=new ArrayBuffer(c),this.B=new DataView(this.F,0,c),this.w=new Uint8Array(this.F,0,c),this.I=new Uint16Array(this.F,0,c>>1),this.b=new Int32Array(this.F,0,c>>2),cc(this,Zb?dc:ec);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;cc(this,fc)}else cc(this)}var ac=0,bc=2,Ab=["NONE","RAM","ROM","VID","H/W"],$b=0;
G.prototype={constructor:G,parent:null,save:function(){var a,b;if(ob)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.B.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(ob)for(b=0;b<a.length;b++)this.B.setInt32(b<<2,a[b],!0);else this.b=a;return this.Oa=!0}return!1},$a:function(a,b){b?this.j++||gc(this,hc,!1):this.A++||ic(this,hc,!1)},J:function(){this.H&&jb(this.H,129)&&this.H.message("attempt to read invalid block %"+t(this.G),!0);return 255},
u:function(a,b){this.H&&jb(this.H,129)&&this.H.message("attempt to write "+u(b)+" to invalid block %"+t(this.G),!0)},K:function(a,b){return this.nb(a++,b++)|this.nb(a,b)<<8},D:function(a,b,c){this.pb(a++,b&255,c++);this.pb(a,b>>8,c)},X:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ea: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},hb:function(a,b){var c=a>>2;a=(a&3)<<3;this.b[c]=this.b[c]&~(255<<a)|b<<a;this.Oa=!0},va: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.Oa=!0},N:function(a,b){if(this.H&&null!=this.G){var c=this.H;jc(c,this.G+a,1,c.N)&&c.pa(!0)}return this.Ab(a,b)},ba:function(a,b){if(this.H&&null!=this.G){var c=this.H;jc(c,this.G+a,2,c.N)&&c.pa(!0)}return this.Vb(a,b)},ja:function(a,b,c){if(this.H&&null!=this.G){var d=this.H;jc(d,this.G+a,1,d.B)&&d.pa(!0)}this.M?this.u(a,b,c):this.Db(a,b,c)},la:function(a,b,c){if(this.H&&
null!=this.G){var d=this.H;jc(d,this.G+a,2,d.B)&&d.pa(!0)}this.M?this.u(a,b,c):this.Zb(a,b,c)},L:function(a){return this.w[a]},O:function(a){return this.w[a]},aa:function(a){return this.B.getUint16(a,!0)},da:function(a){return a&1?this.w[a]|this.w[a+1]<<8:this.I[a>>1]},ga:function(a,b){this.w[a]=b;this.Oa=!0},gb:function(a,b){this.w[a]=b;this.Oa=!0},ka:function(a,b){this.B.setUint16(a,b,!0);this.Oa=!0},ra:function(a,b){a&1?(this.w[a]=b,this.w[a+1]=b>>8):this.I[a>>1]=b;this.Oa=!0}};
function xb(a,b,c){a.H=b;a.A=a.j=0;c&&((a.A=c.A)&&ic(a,hc,!1),(a.j=c.j)&&gc(a,hc,!1))}function kc(a,b){b?--a.j||(a.pb=a.M?a.u:a.Db,a.Hc=a.M?a.D:a.Zb):--a.A||(a.nb=a.Ab,a.Fc=a.Vb)}function gc(a,b,c){c&&a.j||(a.pb=!a.M&&b[1]||a.u,a.Hc=!a.M&&b[3]||a.D);if(c||void 0===c)a.Db=b[1]||a.u,a.Zb=b[3]||a.D}function ic(a,b,c){c&&a.A||(a.nb=b[0]||a.J,a.Fc=b[2]||a.K);if(c||void 0===c)a.Ab=b[0]||a.J,a.Vb=b[2]||a.K}function cc(a,b){b||(b=lc);ic(a,b,void 0);gc(a,b,void 0)}
var lc=[],fc=[G.prototype.X,G.prototype.hb,G.prototype.ea,G.prototype.va],hc=[G.prototype.N,G.prototype.ja,G.prototype.ba,G.prototype.la];if(ob)var ec=[G.prototype.L,G.prototype.ga,G.prototype.aa,G.prototype.ka],dc=[G.prototype.O,G.prototype.gb,G.prototype.da,G.prototype.ra];
function mc(a,b){x.call(this,"CPU",a,mc,1);var c=a.multiplier||1;this.X=a.cycles||b;this.Ra=c;this.ga=Math.round(this.X/1E4)/100;this.cb=this.ga*this.Ra;this.C.ya=!1;this.C.Yb=!1;this.C.vb=a.autoStart;this.C.Ac=!1;this.C.jb=!1;this.xb=this.N=0;this.yb=a.csStart;this.lb=a.csInterval;this.mb=a.csStop;this.u=[];this.Ga=this.eb.bind(this);F(this)}A(mc);var nc=["power","reset"];l=mc.prototype;
l.Qa=function(a,b,c,d){this.A=a;this.w=b;this.H=d;for(b=0;b<nc.length;b++)(c=this.M[nc[b]])&&this.A.oa(null,nc[b],c);this.F=ub(a,"ChipSet");a=oc(a,"autoStart");null!=a&&(this.C.vb="true"==a?!0:"false"==a?!1:!!a);F(this)};l.reset=function(){};l.save=function(){return null};l.restore=function(){return!1};
l.Fa=function(a,b){if(!b){if(a&&this.restore){pc(this);if(!this.restore(a))return!1;qc(this)}else this.reset();this.H?(a=this.H,a.g("Type ? for help with PC8080 Debugger commands"),a.Ka(),a.Aa&&(b=a.Aa,a.Aa=null,Dc(a,b))):this.g("No debugger detected")}Ec(this);return!0};l.Ja=function(a){return a?this.save():!0};l.vb=function(){return this.C.vb||!this.H&&void 0===this.M.run?(this.eb(),!0):!1};l.Dc=function(){return 0};
function qc(a){void 0===a.yb&&(a.yb=0);void 0===a.lb&&(a.lb=-1);void 0===a.mb&&(a.mb=-1);a.C.jb=0<=a.yb&&0<a.lb;a.C.jb&&(a.xb=0,a.N=a.yb-a.L)}function Fc(a,b){if(a.C.jb){var c=!1;a.xb=a.xb+a.Dc()|0;a.N-=b;0>=a.N&&(a.N+=a.lb,c=!0);0<=a.mb&&a.mb<=Gc(a)&&(a.lb=a.mb=-1,qc(a),a.pa(),c=!0);c&&a.g(Gc(a)+" cycles: checksum="+t(a.xb))}}
l.oa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.M[b]=c;a=!0;break;case "run":this.M[b]=c;c.onclick=function(){var a;if(a=d.A)if(a=d.A,a.C.wa)a=!0;else{var b=null,c,h=db(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.C.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.C.wa);c++);c==h.length&&(b=a);w("The "+b.type+" component ("+b.id+") is not "+(b.C.ready?"powered yet":"ready yet"+(b.Ib?" (waiting for notification)":""))+".");a=!1}a&&(d.C.ya?d.pa():d.eb())};
a=!0;break;case "speed":this.M[b]=c;a=!0;break;case "setSpeed":this.M[b]=c,c.onclick=function(){Hc(d,d.Ra<<1,!0)},c.textContent=this.cb.toFixed(2)+"Mhz",a=!0}return a};function Ic(a,b,c){a.L+=b;c&&(a.K=a.b=0)}function Jc(a,b){var c=1;b&&1<a.Ra&&a.I&&(c=a.I/a.ga);a.va=Math.round(1E3/30);a.ea=Math.floor(a.X/30*c);b||(a.O=a.ea);a.ja=0}function Gc(a){return a.L+a.D+a.K-a.b}function pc(a){a.I=0;a.Aa=0;a.L=a.D=a.K=a.b=0;qc(a);Hc(a,1)}
function Hc(a,b,c){var d=!1;if(void 0!==b){.8>a.I/a.cb?b=1:d=!0;a.Ra=b;b=a.ga*a.Ra;if(a.cb!=b){a.cb=b;b=a.cb.toFixed(2)+"Mhz";var e=a.M.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.A&&a.A.Bb()}Ic(a,a.D);a.D=0;a.B=qa();a.J=0;Jc(a);return d}function Kc(a,b){var c=a.u.length;a.u.push([-1,b]);return c}function Lc(a,b,c){0<=b&&b<a.u.length&&0>a.u[b][0]&&(c*=a.X*a.Ra/1E3,a.u[b][0]=c+Mc(a))}function Mc(a,b){var c=a.K-=a.b;a.b=0;b&&(a.K=0);return c}
l.eb=function(a){if(kb(this,!0)){if(!this.C.ya){Hc(this);this.A&&this.A.start(this.B,Gc(this));this.C.ya=!0;this.C.Yb=!0;this.F&&this.F.start();var b=this.M.run;b&&(b.textContent="Halt");this.A&&(this.A.Ka(!0),a&&this.A.Bb(!0))}this.ja>=this.X&&Jc(this,!0);this.aa=0;this.da=qa();this.J&&(a=this.da-this.J,a>this.va&&(this.B+=a,this.B>this.da&&(this.B=this.da)));try{do{for(var c,d=this.C.jb?1:this.ea,e=this.u.length-1;0<=e;e--){var f=this.u[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.ob(c);c=Mc(this,!0);this.aa+=
c;this.D+=c;Fc(this,c);a=c;for(var g=this.u.length-1;0<=g;g--){var h=this.u[g];0>h[0]||(h[0]-=a,0>=h[0]&&(h[0]=-1,h[1]()))}this.O-=c;if(0>=this.O){this.O+=this.ea;15<=++this.Aa&&(this.A&&this.A.Ka(),this.Aa=0);break}}while(this.C.ya)}catch(k){this.pa();Ec(this);this.A&&this.A.stop(qa(),Gc(this));kb(this,!1);nb(this,k.stack||k.message);return}c=setTimeout;d=this.Ga;this.J=qa();e=this.va;this.aa&&(e=Math.round(e*this.aa/this.ea));e-=this.J-this.da;if(f=this.J-this.B)this.I=Math.round(this.D/(10*f))/
100,864E5<=f&&(this.L=0,Hc(this));if(0>e||this.I<this.cb)-1E3>e&&(this.B-=e),e=0;this.ja+=this.aa;this.J+=e;c(d,e)}else Ec(this),this.A&&this.A.stop(qa(),Gc(this))};l.ob=function(){return 0};l.pa=function(a){lb(this,!0);Mc(this);Ic(this,this.D);this.D=0;if(this.C.ya){this.C.ya=!1;this.F&&this.F.stop();var b=this.M.run;b&&(b.textContent="Run")}this.C.complete=a};function Ec(a,b){if(a.A){for(var c=a.A,d=0;d<c.D.length;d++)Nc(c.D[d],b);a.A.Ka(b)}}
function Oc(a){this.ae=+a.model||8080;mc.call(this,a,1E6);this.ka=Pc;pc(this);this.C.complete=this.C.Pd=!1;this.ra=0;this.ba=[];this.la=0;Qc(this)}A(Oc,mc);function Rc(a,b){a.ba.push(b)}l=Oc.prototype;l.reset=function(){this.C.ya&&this.pa();Qc(this);pc(this);this.C.error=!1;this.parent.reset.call(this)};function Qc(a){a.i=0;a.R=0;a.S=0;a.T=0;a.U=0;a.V=0;a.Y=0;a.na=0;I(a,a.la);Sc(a,0);a.j=0}function Tc(a,b){a.la=b;I(a,b)}
l.Dc=function(){var a=this.i+this.R+this.S+this.T+this.U+this.V+this.Y|0;return a=a+this.na+this.P+Uc(this)|0};l.save=function(){var a=new Vc(this);a.set(0,[this.i,this.R,this.S,this.T,this.U,this.V,this.Y,this.na,this.P,Uc(this)]);a.set(1,[this.j,this.L,this.Ra]);a.set(2,Eb(this.w));return a.data()};
l.restore=function(a){var b=a[0];this.i=b[0];this.R=b[1];this.S=b[2];this.T=b[3];this.U=b[4];this.V=b[5];this.Y=b[6];this.na=b[7]&65535;I(this,b[8]);Sc(this,b[9]);b=a[1];this.j=b[0];this.L=b[1];Hc(this,b[3]);a:{b=this.w;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.L){for(var f=0,g=Array(b.L),h=0;h<e.length-1;)for(var k=e[h++],m=e[h++];k--;)g[f++]=m;e=g}f=b.W[d];if(!f||!f.restore(e)){w("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
l.oa=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.M[b]=c;this.ra++;a=!0;break;default:a=this.parent.oa.call(this,a,b,c)}return a};function Wc(a){return a.R<<8|a.S}function Xc(a,b){a.R=b>>8&255;a.S=b&255}function Yc(a){return a.T<<8|a.U}function Zc(a,b){a.T=b>>8&255;a.U=b&255}function J(a){return a.V<<8|a.Y}
function $c(a,b){a.V=b>>8&255;a.Y=b&255}function I(a,b){a.P=b&65535}function ad(a){return a.ca&256?1:0}function bd(a,b){a.ca=a.ca&255|b}function cd(a){return pb[a.fa&255]?4:0}function dd(a){return(a.fa^a.xa)&16?16:0}function ed(a){return a.ca&255?0:64}function fd(a){return a.fa&128?128:0}function Uc(a){return a.ta&-214|fd(a)|ed(a)|dd(a)|cd(a)|ad(a)}function Sc(a,b){a.ca=a.fa=a.xa=0;b&1&&(a.ca|=256);b&4||(a.fa|=1);b&16&&(a.xa|=16);b&64||(a.ca|=255);b&128&&(a.fa^=192);a.ta=a.ta&-726|b&512|2}
function gd(a,b){a.xa=a.i^b;return a.fa=(a.ca=a.i+b)&255}function hd(a,b){a.xa=a.i^b;return a.fa=(a.ca=a.i+b+(a.ca&256?1:0))&255}function id(a,b){a.ca=a.fa=a.xa=a.i&b;(a.i|b)&8&&(a.xa^=16);return a.ca}function jd(a,b){a.xa=b^255;b=a.fa=b+255&255;a.ca=a.ca&-256|b;return b}function kd(a,b){a.xa=b;b=a.fa=b+1&255;a.ca=a.ca&-256|b;return b}function ld(a,b){return a.fa=a.ca=a.xa=a.i|b}function K(a,b){b^=255;a.xa=a.i^b;return a.fa=(a.ca=a.i+b+1^256)&255}
function Gd(a,b){b^=255;a.xa=a.i^b;return a.fa=(a.ca=a.i+b+(a.ca&256?0:1)^256)&255}function Hd(a,b){return a.fa=a.ca=a.xa=a.i^b}l.Z=function(a){return this.w.Z(a)};l.ua=function(a,b){this.w.ua(a,b)};function L(a){var b=a.Z(a.P);I(a,a.P+1);return b}function M(a){var b=a.w.bb(a.P);I(a,a.P+2);return b}function N(a){var b=a.w.bb(a.na);a.na=a.na+2&65535;return b}function P(a,b){a.na=a.na-2&65535;a.w.Mb(a.na,b)}
function Id(a){if(a.b&&a.j&255&&a.ta&512){for(var b=0;8>b&&!(a.j&1<<b);b++);a.j&=~(0>b?255:1<<b);a.ta&=-513;a.j&=-257;a.ka[199|b<<3].call(a)}return a.j&256?(Mc(a),!1):!0}function Jd(a,b){a.j|=1<<b;a.ta&512&&Mc(a)}function Q(a,b,c,d){d=d||2;a.M[b]&&(void 0===c&&(nb(a,"Value for "+b+" is invalid"),a.pa()),c=!a.C.ya||a.C.Ac?t(c,d):"--------".substr(0,d),a.M[b].textContent!=c&&(a.M[b].textContent=c))}
l.Ka=function(a){this.ra&&(a||!this.C.ya||this.C.Ac)&&(Q(this,"A",this.i),Q(this,"B",this.R),Q(this,"C",this.S),Q(this,"BC",Wc(this),4),Q(this,"D",this.T),Q(this,"E",this.U),Q(this,"DE",Yc(this),4),Q(this,"H",this.V),Q(this,"L",this.Y),Q(this,"HL",J(this),4),Q(this,"SP",this.na,4),Q(this,"PC",this.P,4),a=Uc(this),Q(this,"PS",a,4),Q(this,"IF",a&512?1:0,1),Q(this,"SF",a&128?1:0,1),Q(this,"ZF",a&64?1:0,1),Q(this,"AF",a&16?1:0,1),Q(this,"PF",a&4?1:0,1),Q(this,"CF",a&1?1:0,1));if(a=this.M.speed)a.textContent=
this.C.ya&&this.I?this.I.toFixed(2)+"Mhz":"Stopped"};l.ob=function(a){this.C.complete=!0;var b=this.C.Pd=this.H&&Kd(this.H),c=a?this.C.Yb?0:1:-1;this.C.Yb=!1;this.K=this.b=a;if(Id(this)){do{if(b){if(Ld(this.H,this.P,c)){this.pa();break}c=1}this.ka[L(this)].call(this)}while(0<this.b)}return this.C.complete?this.K-this.b:void 0===this.C.complete?0:-1};Oa(function(){for(var a=D(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Oc(d);gb(d,c)}});function Md(){this.b-=4}
function Nd(){I(this,M(this));this.b-=10}function Od(){I(this,N(this));this.b-=10}function Pd(){var a=M(this);P(this,this.P);I(this,a);this.b-=17}
var Pc=[Md,function(){Xc(this,M(this));this.b-=10},function(){this.ua(Wc(this),this.i);this.b-=7},function(){Xc(this,Wc(this)+1);this.b-=5},function(){this.R=kd(this,this.R);this.b-=5},function(){this.R=jd(this,this.R);this.b-=5},function(){this.R=L(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|a>>8;bd(this,a&256);this.b-=4},Md,function(){var a;$c(this,a=J(this)+Wc(this));bd(this,a>>8&256);this.b-=10},function(){this.i=this.Z(Wc(this));this.b-=7},function(){Xc(this,Wc(this)-1);this.b-=
5},function(){this.S=kd(this,this.S);this.b-=5},function(){this.S=jd(this,this.S);this.b-=5},function(){this.S=L(this);this.b-=7},function(){var a=this.i<<8&256;this.i=(a|this.i)>>1;bd(this,a);this.b-=4},Md,function(){Zc(this,M(this));this.b-=10},function(){this.ua(Yc(this),this.i);this.b-=7},function(){Zc(this,Yc(this)+1);this.b-=5},function(){this.T=kd(this,this.T);this.b-=5},function(){this.T=jd(this,this.T);this.b-=5},function(){this.T=L(this);this.b-=7},function(){var a=this.i<<1;this.i=a&255|
ad(this);bd(this,a&256);this.b-=4},Md,function(){var a;$c(this,a=J(this)+Yc(this));bd(this,a>>8&256);this.b-=10},function(){this.i=this.Z(Yc(this));this.b-=7},function(){Zc(this,Yc(this)-1);this.b-=5},function(){this.U=kd(this,this.U);this.b-=5},function(){this.U=jd(this,this.U);this.b-=5},function(){this.U=L(this);this.b-=7},function(){var a=this.i<<8;this.i=(ad(this)<<8|this.i)>>1;bd(this,a&256);this.b-=4},Md,function(){$c(this,M(this));this.b-=10},function(){var a=M(this);this.w.Mb(a,J(this));
this.b-=16},function(){$c(this,J(this)+1);this.b-=5},function(){this.V=kd(this,this.V);this.b-=5},function(){this.V=jd(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){var a=0,b=ad(this);if(dd(this)||9<(this.i&15))a|=6;if(b||154<=this.i)a|=96,b=1;this.i=gd(this,a);bd(this,b?256:0);this.b-=4},Md,function(){var a;$c(this,a=J(this)+J(this));bd(this,a>>8&256);this.b-=10},function(){var a;a=M(this);a=this.w.bb(a);$c(this,a);this.b-=16},function(){$c(this,J(this)-1);this.b-=5},function(){this.Y=
kd(this,this.Y);this.b-=5},function(){this.Y=jd(this,this.Y);this.b-=5},function(){this.Y=L(this);this.b-=7},function(){this.i=~this.i&255;this.b-=4},Md,function(){this.na=M(this)&65535;this.b-=10},function(){this.ua(M(this),this.i);this.b-=13},function(){this.na=this.na+1&65535;this.b-=5},function(){var a=J(this);this.ua(a,kd(this,this.Z(a)));this.b-=10},function(){var a=J(this);this.ua(a,jd(this,this.Z(a)));this.b-=10},function(){this.ua(J(this),L(this));this.b-=10},function(){this.ca|=256;this.b-=
4},Md,function(){var a;$c(this,a=J(this)+this.na);bd(this,a>>8&256);this.b-=10},function(){this.i=this.Z(M(this));this.b-=13},function(){this.na=this.na-1&65535;this.b-=5},function(){this.i=kd(this,this.i);this.b-=5},function(){this.i=jd(this,this.i);this.b-=5},function(){this.i=L(this);this.b-=7},function(){bd(this,ad(this)?0:256);this.b-=4},function(){this.b-=5},function(){this.R=this.S;this.b-=5},function(){this.R=this.T;this.b-=5},function(){this.R=this.U;this.b-=5},function(){this.R=this.V;this.b-=
5},function(){this.R=this.Y;this.b-=5},function(){this.R=this.Z(J(this));this.b-=7},function(){this.R=this.i;this.b-=5},function(){this.S=this.R;this.b-=5},function(){this.b-=5},function(){this.S=this.T;this.b-=5},function(){this.S=this.U;this.b-=5},function(){this.S=this.V;this.b-=5},function(){this.S=this.Y;this.b-=5},function(){this.S=this.Z(J(this));this.b-=7},function(){this.S=this.i;this.b-=5},function(){this.T=this.R;this.b-=5},function(){this.T=this.S;this.b-=5},function(){this.b-=5},function(){this.T=
this.U;this.b-=5},function(){this.T=this.V;this.b-=5},function(){this.T=this.Y;this.b-=5},function(){this.T=this.Z(J(this));this.b-=7},function(){this.T=this.i;this.b-=5},function(){this.U=this.R;this.b-=5},function(){this.U=this.S;this.b-=5},function(){this.U=this.T;this.b-=5},function(){this.b-=5},function(){this.U=this.V;this.b-=5},function(){this.U=this.Y;this.b-=5},function(){this.U=this.Z(J(this));this.b-=7},function(){this.U=this.i;this.b-=5},function(){this.V=this.R;this.b-=5},function(){this.V=
this.S;this.b-=5},function(){this.V=this.T;this.b-=5},function(){this.V=this.U;this.b-=5},function(){this.b-=5},function(){this.V=this.Y;this.b-=5},function(){this.V=this.Z(J(this));this.b-=7},function(){this.V=this.i;this.b-=5},function(){this.Y=this.R;this.b-=5},function(){this.Y=this.S;this.b-=5},function(){this.Y=this.T;this.b-=5},function(){this.Y=this.U;this.b-=5},function(){this.Y=this.V;this.b-=5},function(){this.b-=5},function(){this.Y=this.Z(J(this));this.b-=7},function(){this.Y=this.i;
this.b-=5},function(){this.ua(J(this),this.R);this.b-=7},function(){this.ua(J(this),this.S);this.b-=7},function(){this.ua(J(this),this.T);this.b-=7},function(){this.ua(J(this),this.U);this.b-=7},function(){this.ua(J(this),this.V);this.b-=7},function(){this.ua(J(this),this.Y);this.b-=7},function(){var a=this.P-1;if(this.ba.length)for(var b=0;b<this.ba.length;b++)if(this.ba[b](a))return;this.b-=7;this.j|=256;Mc(this);this.H&&jb(this,-2147483648)?(I(this,a),this.H.pa()):this.ta&512||(this.H&&I(this,
a),this.pa())},function(){this.ua(J(this),this.i);this.b-=7},function(){this.i=this.R;this.b-=5},function(){this.i=this.S;this.b-=5},function(){this.i=this.T;this.b-=5},function(){this.i=this.U;this.b-=5},function(){this.i=this.V;this.b-=5},function(){this.i=this.Y;this.b-=5},function(){this.i=this.Z(J(this));this.b-=7},function(){this.b-=5},function(){this.i=gd(this,this.R);this.b-=4},function(){this.i=gd(this,this.S);this.b-=4},function(){this.i=gd(this,this.T);this.b-=4},function(){this.i=gd(this,
this.U);this.b-=4},function(){this.i=gd(this,this.V);this.b-=4},function(){this.i=gd(this,this.Y);this.b-=4},function(){this.i=gd(this,this.Z(J(this)));this.b-=7},function(){this.i=gd(this,this.i);this.b-=4},function(){this.i=hd(this,this.R);this.b-=4},function(){this.i=hd(this,this.S);this.b-=4},function(){this.i=hd(this,this.T);this.b-=4},function(){this.i=hd(this,this.U);this.b-=4},function(){this.i=hd(this,this.V);this.b-=4},function(){this.i=hd(this,this.Y);this.b-=4},function(){this.i=hd(this,
this.Z(J(this)));this.b-=7},function(){this.i=hd(this,this.i);this.b-=4},function(){this.i=K(this,this.R);this.b-=4},function(){this.i=K(this,this.S);this.b-=4},function(){this.i=K(this,this.T);this.b-=4},function(){this.i=K(this,this.U);this.b-=4},function(){this.i=K(this,this.V);this.b-=4},function(){this.i=K(this,this.Y);this.b-=4},function(){this.i=K(this,this.Z(J(this)));this.b-=7},function(){this.i=K(this,this.i);this.b-=4},function(){this.i=Gd(this,this.R);this.b-=4},function(){this.i=Gd(this,
this.S);this.b-=4},function(){this.i=Gd(this,this.T);this.b-=4},function(){this.i=Gd(this,this.U);this.b-=4},function(){this.i=Gd(this,this.V);this.b-=4},function(){this.i=Gd(this,this.Y);this.b-=4},function(){this.i=Gd(this,this.Z(J(this)));this.b-=7},function(){this.i=Gd(this,this.i);this.b-=4},function(){this.i=id(this,this.R);this.b-=4},function(){this.i=id(this,this.S);this.b-=4},function(){this.i=id(this,this.T);this.b-=4},function(){this.i=id(this,this.U);this.b-=4},function(){this.i=id(this,
this.V);this.b-=4},function(){this.i=id(this,this.Y);this.b-=4},function(){this.i=id(this,this.Z(J(this)));this.b-=7},function(){this.i=id(this,this.i);this.b-=4},function(){this.i=Hd(this,this.R);this.b-=4},function(){this.i=Hd(this,this.S);this.b-=4},function(){this.i=Hd(this,this.T);this.b-=4},function(){this.i=Hd(this,this.U);this.b-=4},function(){this.i=Hd(this,this.V);this.b-=4},function(){this.i=Hd(this,this.Y);this.b-=4},function(){this.i=Hd(this,this.Z(J(this)));this.b-=7},function(){this.i=
Hd(this,this.i);this.b-=4},function(){this.i=ld(this,this.R);this.b-=4},function(){this.i=ld(this,this.S);this.b-=4},function(){this.i=ld(this,this.T);this.b-=4},function(){this.i=ld(this,this.U);this.b-=4},function(){this.i=ld(this,this.V);this.b-=4},function(){this.i=ld(this,this.Y);this.b-=4},function(){this.i=ld(this,this.Z(J(this)));this.b-=7},function(){this.i=ld(this,this.i);this.b-=4},function(){K(this,this.R);this.b-=4},function(){K(this,this.S);this.b-=4},function(){K(this,this.T);this.b-=
4},function(){K(this,this.U);this.b-=4},function(){K(this,this.V);this.b-=4},function(){K(this,this.Y);this.b-=4},function(){K(this,this.Z(J(this)));this.b-=7},function(){K(this,this.i);this.b-=4},function(){ed(this)||(I(this,N(this)),this.b-=6);this.b-=5},function(){Xc(this,N(this));this.b-=10},function(){var a=M(this);ed(this)||I(this,a);this.b-=10},Nd,function(){var a=M(this);ed(this)||(P(this,this.P),I(this,a),this.b-=6);this.b-=11},function(){P(this,Wc(this));this.b-=11},function(){this.i=gd(this,
L(this));this.b-=7},function(){P(this,this.P);I(this,0);this.b-=11},function(){ed(this)&&(I(this,N(this)),this.b-=6);this.b-=5},Od,function(){var a=M(this);ed(this)&&I(this,a);this.b-=10},Nd,function(){var a=M(this);ed(this)&&(P(this,this.P),I(this,a),this.b-=6);this.b-=11},Pd,function(){this.i=hd(this,L(this));this.b-=7},function(){P(this,this.P);I(this,8);this.b-=11},function(){ad(this)||(I(this,N(this)),this.b-=6);this.b-=5},function(){Zc(this,N(this));this.b-=10},function(){var a=M(this);ad(this)||
I(this,a);this.b-=10},function(){var a=L(this);Vb(this.w,a,this.i,this.P+-2&65535);this.b-=10},function(){var a=M(this);ad(this)||(P(this,this.P),I(this,a),this.b-=6);this.b-=11},function(){P(this,Yc(this));this.b-=11},function(){this.i=K(this,L(this));this.b-=7},function(){P(this,this.P);I(this,16);this.b-=11},function(){ad(this)&&(I(this,N(this)),this.b-=6);this.b-=5},Od,function(){var a=M(this);ad(this)&&I(this,a);this.b-=10},function(){var a=L(this);this.i=Ib(this.w,a,this.P+-2&65535)&255;this.b-=
10},function(){var a=M(this);ad(this)&&(P(this,this.P),I(this,a),this.b-=6);this.b-=11},Pd,function(){this.i=Gd(this,L(this));this.b-=7},function(){P(this,this.P);I(this,24);this.b-=11},function(){cd(this)||(I(this,N(this)),this.b-=6);this.b-=5},function(){$c(this,N(this));this.b-=10},function(){var a=M(this);cd(this)||I(this,a);this.b-=10},function(){var a=N(this);P(this,J(this));$c(this,a);this.b-=18},function(){var a=M(this);cd(this)||(P(this,this.P),I(this,a),this.b-=6);this.b-=11},function(){P(this,
J(this));this.b-=11},function(){this.i=id(this,L(this));this.b-=7},function(){P(this,this.P);I(this,32);this.b-=11},function(){cd(this)&&(I(this,N(this)),this.b-=6);this.b-=5},function(){I(this,J(this));this.b-=5},function(){var a=M(this);cd(this)&&I(this,a);this.b-=10},function(){var a=J(this);$c(this,Yc(this));Zc(this,a);this.b-=5},function(){var a=M(this);cd(this)&&(P(this,this.P),I(this,a),this.b-=6);this.b-=11},Pd,function(){this.i=Hd(this,L(this));this.b-=7},function(){P(this,this.P);I(this,
40);this.b-=11},function(){fd(this)||(I(this,N(this)),this.b-=6);this.b-=5},function(){var a=N(this);Sc(this,a&255|this.ta&-256);this.i=a>>8;this.b-=10},function(){var a=M(this);fd(this)||I(this,a);this.b-=10},function(){this.ta&=-513;this.b-=4},function(){var a=M(this);fd(this)||(P(this,this.P),I(this,a),this.b-=6);this.b-=11},function(){P(this,Uc(this)&255|this.i<<8);this.b-=11},function(){this.i=ld(this,L(this));this.b-=7},function(){P(this,this.P);I(this,48);this.b-=11},function(){fd(this)&&(I(this,
N(this)),this.b-=6);this.b-=5},function(){this.na=J(this)&65535;this.b-=5},function(){var a=M(this);fd(this)&&I(this,a);this.b-=10},function(){this.ta|=512;this.b-=4;Id(this)},function(){var a=M(this);fd(this)&&(P(this,this.P),I(this,a),this.b-=6);this.b-=11},Pd,function(){K(this,L(this));this.b-=7},function(){P(this,this.P);I(this,56);this.b-=11}];
function R(a){x.call(this,"ChipSet",a,R,32768);var b=a.model;b&&!Qd[b]&&Qa("Unrecognized ChipSet model: "+b);this.u=Qd[b]||{};a.sound&&(this.ga=null,window&&(this.ga=window.AudioContext||window.webkitAudioContext),this.ga&&new this.ga);F(this)}A(R);
var S={Ba:1978.1,Ad:{Ca:0,we:1,Ae:16,He:32,Qe:64,Pe:128,qb:14},Za:{Ca:1,Pc:1,sd:2,od:4,pd:16,qd:32,rd:64,qb:8},Bd:{Ca:2,ve:3,Ye:4,xe:8,Le:16,Me:32,Ne:64,ye:128,qb:0},Ue:{Ca:3},Se:{Ca:2,Ie:7},We:{Ca:3,Ze:1,Ve:2,Oe:4,Fe:8,ze:16,oe:32},Te:{Ca:4},Xe:{Ca:5,Be:1,Ce:2,De:4,Ee:8,$e:16}},T={Ba:100,La:{Ca:66,rc:1,gc:2,ld:4,Ke:8,Je:16,ic:32,hc:64,cc:128},Nc:{Ca:66,INIT:0},Ua:{Ca:194,qe:0,ac:16,ud:32,nc:48,Xc:0,Yc:32},Fb:{Ca:162,Re:0,$c:0,Wc:0,Zc:0,Vc:0},Ma:{Ge:{Ca:98},Ta:{Kc:0,Jc:1,xd:2,Gd:4,Qc:5,vd:6,yd:7},
Gb:16383}},Qd={SI1978:S,VT100:T};R.prototype.oa=function(){return!1};R.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.H=d;this.A=a;this.I=ub(a,"Keyboard");this.J=ub(a,"SerialPort");this.video=ub(a,"Video");Gb(b,this,this.u.Kb);Ub(b,this,this.u.Lb);if(d){var e=this;Rd(d,16384,function(){for(var a="",b=0;b<e.F.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=u(e.F[b]);e.H.g(a)})}};R.prototype.Fa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};
R.prototype.Ja=function(a){return a?this.save():!0};S.INIT=[[S.Ad.qb,S.Za.qb,S.Bd.qb,0,0,0,0]];
T.INIT=[[T.Nc.INIT,T.La.gc|T.La.ld],[T.Ua.Xc,T.Ua.Yc],[T.Fb.$c,T.Fb.Wc,T.Fb.Zc,T.Fb.Vc],[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]]];l=R.prototype;l.reset=function(){this.u.INIT&&!this.restore(this.u.INIT)&&this.ia("reset error")};
l.save=function(){var a=new Vc(this);switch(this.u.Ba){case S.Ba:a.set(0,[this.Aa,this.D,this.Ga,this.aa,this.ea,this.ra,this.va]);break;case T.Ba:a.set(0,[this.ja,this.K]),a.set(1,[this.L,this.N]),a.set(2,[this.B,this.ba,this.la,this.ka]),a.set(3,[this.X,this.j,this.O,this.da,this.F])}return a.data()};
l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.u.Ba){case S.Ba:return this.Aa=b[0],this.D=b[1],this.Ga=b[2],this.aa=b[3],this.ea=b[4],this.ra=b[5],this.va=b[6],!0;case T.Ba:return this.ja=b[0],this.K=b[1],b=a[1],this.L=b[0],this.N=b[1],b=a[2],this.B=b[0],this.ba=b[1],this.la=b[2],this.ka=b[3],b=a[3],this.X=b[0],this.j=b[1],this.O=b[2],this.da=b[3],this.F=b[4],!0}return!1};l.start=function(){};l.stop=function(){};l.Vd=function(a,b){var c=this.Aa;E(this,a,null,b,"STATUS0",c,!0);return c};
l.Wd=function(a,b){var c=this.D;E(this,a,null,b,"STATUS1",c,!0);return c};l.Xd=function(a,b){var c=this.Ga;E(this,a,null,b,"STATUS2",c,!0);return c};l.Ud=function(a,b){var c=this.aa>>8-this.ea&255;E(this,a,null,b,"SHIFT.RESULT",c,!0);return c};l.ee=function(a,b,c){E(this,a,b,c,"SHIFT.COUNT",null,!0);this.ea=b};l.ge=function(a,b,c){E(this,a,b,c,"SOUND1",null,!0);this.ra=b};l.fe=function(a,b,c){E(this,a,b,c,"SHIFT.DATA",null,!0);this.aa=b<<8|this.aa>>8};
l.he=function(a,b,c){E(this,a,b,c,"SOUND2",null,!0);this.va=b};l.ie=function(a,b,c){E(this,a,b,c,"WATCHDOG",null,!0)};function Sd(a){var b=0,c=0,d=~a.X;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.Yd=function(a,b){var c=this.K,c=c&~T.La.hc;if((Gc(this.b)&64)<<1&&(c|=T.La.hc,c!=this.K)){var d,e;d=this.O&1;e=this.O>>1&7;switch(e){case T.Ma.Ta.yd:break;case T.Ma.Ta.Jc:this.X=this.X<<1|d;break;case T.Ma.Ta.Qc:d=Sd(this);this.F[d]=T.Ma.Gb;ib(this,"doNVRCommand(): erase data at addr "+u(d));break;case T.Ma.Ta.Kc:this.j=this.j<<1|d;break;case T.Ma.Ta.Gd:d=Sd(this);e=this.j&T.Ma.Gb;this.F[d]=e;ib(this,"doNVRCommand(): write data "+u(e)+" to addr "+u(d));break;case T.Ma.Ta.vd:d=Sd(this);e=this.F[d];
null==e&&(e=T.Ma.Gb);this.j=e;ib(this,"doNVRCommand(): read data "+u(e)+" from addr "+u(d));break;case T.Ma.Ta.xd:this.j<<=1;this.da=this.j&T.Ma.Gb+1;break;default:ib(this,"doNVRCommand(): unrecognized command "+ca(e))}}c&=~T.La.ic;this.da&&(c|=T.La.ic);c&=~T.La.cc;if(d=this.I){d=this.I;if(e=d.D)e=d.b,e=Gc(d.b)>=d.L+e.X*e.Ra/1E3*1.2731488;e&&(d.D=!1);d=!d.D}d&&(c|=T.La.cc);c&=~T.La.rc;this.J&&this.J.Ea&1&&(c|=T.La.rc);this.K=c;E(this,a,null,b,"FLAGS",c);return c};
l.je=function(a,b,c){E(this,a,b,c,"BRIGHTNESS");this.ja=b};l.me=function(a,b,c){E(this,a,b,c,"NVR.LATCH");this.O=b};l.le=function(a,b,c){E(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.B=this.B&-4|a;break;case 1:this.B=this.B&-13|a<<2;this.video&&(b=this.video,a=this.B,ib(b,"updateScrollOffset("+a+")"),b.ib!==a&&((b.ib=a)?Nc(b,!0):b.sb=!0));break;case 2:switch(a){case 0:this.ba=~this.ba;break;case 2:case 3:this.la=3-a}break;case 3:this.ka=a}};
l.ke=function(a,b,c){E(this,a,b,c,"DC011");b&T.Ua.ud?(b&=T.Ua.nc,this.N!=b&&(this.N=b,this.video&&(a=this.video,b=this.N==T.Ua.nc?50:60,ib(a,"updateRate("+b+")"),a.vc=b))):(b&=T.Ua.ac,this.L!=b&&(this.L=b,this.video&&(a=this.L==T.Ua.ac?132:80,b=this.video,ib(b,"updateDimensions("+a+","+(80<a&&this.K&T.La.gc?14:24)+")"),b.ba=a,b.qa=b.kc,80<a&&b.qa--,Td(b)&&Ud(b))))};S.Kb={0:R.prototype.Vd,1:R.prototype.Wd,2:R.prototype.Xd,3:R.prototype.Ud};
S.Lb={2:R.prototype.ee,3:R.prototype.ge,4:R.prototype.fe,5:R.prototype.he,6:R.prototype.ie};T.Kb={66:R.prototype.Yd};T.Lb={66:R.prototype.je,98:R.prototype.me,162:R.prototype.le,194:R.prototype.ke};Oa(function(){for(var a=D(document,"pc8080","chipset"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new R(d);gb(d,c)}});
function Vd(a){x.call(this,"ROM",a,Vd);this.A=null;this.B=a.addr;this.j=a.size;this.F=a.alias;this.u=a.file;this.D=da(this.u);if(this.u){a=this.u;var b=fa(this.D);"json"!=b&&"hex"!=b&&(a=ia()+"/api/v1/dump?file="+this.u+"&format=bytes&decimal=true");var c=this;ta(a,null,!0,function(a,b,f){Wd(c,a,b,f)})}}A(Vd);Vd.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.H=d;Xd(this)};
Vd.prototype.Fa=function(){if(this.Da){if(this.H){var a=this.H,b=this.id,c=this.B,d=this.j,e=this.Da,f=[],g;for(g in e){var h=e[g];"number"==typeof h&&(e[g]=h={o:h});var k=h.o,m=h.a;if(void 0!==k){var p=f,k=[k>>>0,g],q=pa(p,k,a.zc);0>q&&p.splice(-(q+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.D.push({mf:b,G:c,$d:d,Da:e,yc:f})}delete this.Da}return!0};Vd.prototype.Ja=function(){return!0};
function Wd(a,b,c,d){if(d)a.ia("Unable to load system ROM (error "+d+": "+b+")");else{cb(a.hb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,g=e.data;if(f)a.A=f;else if(g)for(a.A=Array(4*g.length),d=c=0;c<g.length;c++)a.A[d++]=g[c]&255,a.A[d++]=g[c]>>8&255,a.A[d++]=g[c]>>16&255,a.A[d++]=g[c]>>24&255;else a.A=e;a.Da=e.symbols;if(!a.A.length){w("Empty ROM: "+b);return}if(1==a.A.length){w(a.A[0]);return}}catch(h){a.ia("ROM data error: "+h.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.A=Array(b.length),e=0;e<b.length;e++)a.A[e]=aa(b[e],16);Xd(a)}}
function Xd(a){if(!mb(a))if(!a.u)F(a);else if(a.A&&a.w){a.j||(a.j=a.A.length);if(a.A.length!=a.j)nb(a,"ROM size ("+t(a.A.length,8,!0)+") does not match specified size ("+t(a.j,8,!0)+")");else{var b;b=a.B;if(yb(a.w,b,a.j,bc)){var c;for(c=0;c<a.A.length;c++)Db(a.w,b+c,a.A[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.F?b.push(a.F):null!=a.F&&a.F.length&&(b=a.F);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.w,g=d.j,h=[],k=d.B>>>f.ha;0<g&&k<f.W.length;)h.push(f.W[k++]),g-=f.Ia;f=d.w;d=d.j;g=0;for(e>>>=
f.ha;0<d&&e<f.W.length;){k=h[g++];if(!k)break;f.W[e++]=k;d-=f.Ia}}delete a.A}}F(a)}}Oa(function(){for(var a=D(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Vd(d);gb(d,c)}});
function Yd(a){x.call(this,"RAM",a,Yd);this.Da=this.j=null;this.F=a.addr;this.B=a.size;this.ab=a.load;this.Sa=a.exec;this.u=!1;this.A=a.file;this.D=da(this.A);if(this.A){a=this.A;var b=fa(this.D);"json"!=b&&"hex"!=b&&(a=ia()+"/api/v1/dump?file="+this.A+"&format=bytes&decimal=true");var c=this;ta(a,null,!0,function(a,b,f){f?c.ia("Unable to load RAM resource (error "+f+": "+a+")"):(cb(c.hb,a,b),(a=ua(a,b))?(c.j=a.za,c.Da=a.Da,null==c.ab&&(c.ab=a.ab),null==c.Sa&&(c.Sa=a.Sa)):c.A=null,Zd(c))})}}A(Yd);
var $d=[0,5];Yd.prototype.Qa=function(a,b,c,d){this.w=b;this.b=c;this.H=d;Zd(this)};Yd.prototype.Fa=function(){return!0};Yd.prototype.Ja=function(){return!0};
function Zd(a){!a.u&&a.B&&yb(a.w,a.F,a.B,1)&&(a.u=!0);if(!mb(a)){if(!a.u)w("No RAM allocated");else if(a.A){if(!a.j||!a.w)return;var b=a.F;null!==a.ab&&(b=a.ab);for(var c=0;c<a.j.length;c++)Db(a.w,b+c,a.j[c]);if(null!==a.Sa){if(256==a.Sa){for(c=0;c<$d.length;c++)Db(a.w,$d[c],118);Rc(a.b,function(a){return function(b){if(0<=$d.indexOf(b)){var c=!1,d=a.b,e=a.H;if(5==b)switch(c=!0,d.S){case 2:ae(a,String.fromCharCode(d.U));break;case 9:for(var k=Yc(d),m="",p=255;p--;){var q=a.b.Z(k++);if(36==q)break;
m+=String.fromCharCode(q)}ae(a,m);break;default:c=!1}c?Od.call(d):e&&(a.g("\nCP/M vector "+u(b)),I(d,b),e.pa());b=!0}else b=!1;return b}}(a))}Tc(a.b,a.Sa)}delete a.j}F(a)}}Yd.prototype.reset=function(){};function ae(a,b){b=b.replace(/\r/g,"");a.Ha&&(a.Ha.value+=b,a.Ha.scrollTop=a.Ha.scrollHeight)}Oa(function(){for(var a=D(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Yd(d);gb(d,c)}});
function be(a){x.call(this,"Keyboard",a,be,65536);(a=a.model)&&!ce[a]&&Qa("Unrecognized Keyboard8080 model: "+a);this.w=ce[a]||{};this.reset();F(this)}A(be);var de={};de[n.Eb]=37;de[n.bc]=39;de[n.dc]=32;
var ee={Ba:1978.1,Nb:{},$b:de,tb:{},Ya:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},V={},W={Ba:100,Nb:(V[8]=3,V[n.nd]=5,V[n.md]=6,V[n.Id]=7,V[n.Cd]=8,V[n.Fd]=9,V[n.Q]=10,V[39]=16,V[221]=20,V[219]=21,V[n.Uc]=22,V[n.Dd]=23,V[n.td]=24,V[n.E]=25,V[49]=26,V[37]=32,V[40]=34,V[117]=35,V[19]=35,V[192]=36,V[189]=37,V[57]=38,V[55]=39,V[52]=40,V[51]=41,V[27]=42,V[38]=48,V[114]=49,V[112]=50,V[46]=51,V[187]=52,V[48]=53,V[56]=54,V[54]=55,V[53]=56,V[50]=57,V[9]=58,V[103]=64,V[115]=65,V[113]=66,V[96]=67,V[118]=
68,V[220]=69,V[n.dc]=70,V[n.bd]=71,V[n.Sc]=72,V[n.Rc]=73,V[n.Eb]=74,V[104]=80,V[2013]=81,V[98]=82,V[97]=83,V[222]=85,V[186]=86,V[n.ad]=87,V[n.Tc]=88,V[n.bc]=89,V[n.wd]=90,V[110]=96,V[116]=97,V[101]=98,V[100]=99,V[13]=100,V[190]=101,V[188]=102,V[n.kd]=103,V[n.Mc]=104,V[n.Hd]=105,V[119]=106,V[105]=112,V[99]=113,V[102]=114,V[109]=115,V[191]=117,V[n.jd]=118,V[n[" "]]=119,V[n.Ed]=120,V[n.Oc]=121,V[n.Pb]=122,V[120]=123,V[17]=124,V[16]=125,V[20]=126,V),$b:{},tb:{},Ya:{setup:120},Lc:{Ca:130,INIT:127},Na:{Ca:130,
gd:1,fd:2,ed:4,dd:8,hd:16,fc:32,ec:63,zd:64,pe:128,INIT:0},cd:127};W.tb={l4:W.Na.gd,l3:W.Na.fd,l2:W.Na.ed,l1:W.Na.dd,locked:W.Na.hd,local:W.Na.fc,online:~W.Na.fc,"caps-lock":512};var ce={SI1978:ee,VT100:W};
be.prototype.oa=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.M[e]){if("led"==a&&this.w.tb[b])return this.M[e]=c,!0;switch(b){case "kbd":return c.onkeydown=function(a){return fe(d,a,!0)},c.onkeyup=function(a){return fe(d,a,!1)},c.onkeypress=function(a){a=a.keyCode;a>=n.Eb&&a<=n.Pb?d.u&515||(d.u|=512,ge(d,20,!0),he(d)):a>=n.Jd&&a<=n.z&&d.u&512&&(d.u&=-513,ge(d,20,!1),he(d));return!0},c.onpaste=function(a){a:{if(d.J&&d.J.fb&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),
a=a.clipboardData||window.clipboardData)){ie(d.J,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.w.Ya&&void 0!==this.w.Ya[b])return this.M[e]=c,a=function(a,b){return function(c){c.preventDefault();ge(a,b,!0)}}(this,this.w.Ya[b]),b=function(a,b){return function(){ge(a,b,!1)}}(this,this.w.Ya[b]),"ontouchstart"in window?(c.ontouchstart=a,c.ontouchend=b):(c.onmousedown=a,c.onmouseup=c.onmouseout=b),!0}}return!1};
be.prototype.Qa=function(a,b,c,d){this.A=a;this.b=c;this.H=d;var e=this;this.O=Kc(this.b,function(){je(e)});this.F=ub(a,"ChipSet");this.J=ub(a,"SerialPort");Gb(b,this,this.w.Kb);Ub(b,this,this.w.Lb)};be.prototype.Fa=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};be.prototype.Ja=function(a){return a?this.save():!0};W.INIT=[[W.Na.INIT,W.Lc.INIT,!1,0,-1]];l=be.prototype;l.reset=function(){this.j=[];this.u=0;this.w.INIT&&!this.restore(this.w.INIT)&&this.ia("reset error")};
l.save=function(){var a=new Vc(this);switch(this.w.Ba){case W.Ba:a.set(0,[this.K,this.I,this.D,this.L,-1])}return a.data()};l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.Ba){case ee.Ba:return!0;case W.Ba:return this.K=b[0],he(this,this.K&W.Na.ec),this.I=b[1],this.D=b[2],this.L=b[3],this.B=b[4],!0}return!1};
function he(a,b){var c;null!=b?a.N=b:b=a.N;for(var d in a.w.tb)if(c="led-"+d,c=a.M[c]){var e=a.w.tb[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+t(16711680,6):"#000000"}if(c=a.M["led-caps-lock"])c.style.backgroundColor=a.u&512?"#"+t(65280,6):"#000000"}
function fe(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.w.$b[e]||e,!a.w.Nb[e]){for(var f in a.w.Ya)if(a.w.Ya[f]===e){e=f;break a}e=null}if(e){f=2==b.location;var g=0;switch(e){case 16:g=f?1:2;break;case 17:g=f?4:8;break;case 18:g=f?16:32;break;case 91:g=f?64:128;break;case 20:g=512}g&&(a.u=c?a.u|g:a.u&~g);b.metaKey||(d=ge(a,e,c),e>=n.Eb&&e<=n.Pb||b.preventDefault())}return d}
function ge(a,b,c){var d,e;a:{for(e=0;e<a.j.length;e++)if(a.j[e].Xb==b)break a;e=-1}if(c)d=d||!1,0>e?a.j.push({Xb:b,Ub:Date.now(),Hb:d}):(a.j[e].Ub=Date.now(),a.j[e].Hb=d);else if(0<=e){if(!a.j[e].Hb&&(d=a.j[e].Ub)&&50>Date.now()-d)return a.j[e].Hb=!0,je(a),!0;a.j.splice(e,1)}if(a.F){d=0;switch(b){case "1p":d=S.Za.od;break;case "2p":d=S.Za.sd;break;case "coin":d=S.Za.Pc;break;case "left":d=S.Za.qd;break;case "right":d=S.Za.rd;break;case "fire":d=S.Za.pd}d&&(a=a.F,b=d,a.D&=~b,c&&(a.D|=b))}return!0}
function je(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].Hb){var d=a.j[b].Xb,e=50-(Date.now()-a.j[b].Ub);if(0<e){if(0>c||c>e)c=e}else{ge(a,d,!1);b=0;continue}}b++}0<=c&&Lc(a.b,a.O,c)}l.Zd=function(a,b){var c=this.I;0<=this.B&&(this.B<this.j.length?(c=this.j[this.B],this.B++,c=W.Nb[c.Xb],c&128&&(c&=127)):(this.B=-1,c=W.cd),this.I=c,Jd(this.b,1));E(this,a,null,b,"KBDUART.ADDRESS",c);return c};
l.ne=function(a,b,c){E(this,a,b,c,"KBDUART.STATUS");this.K=b;this.D=!0;this.L=Gc(this.b);he(this,b&W.Na.ec);b&W.Na.zd&&(this.B=0,Jd(this.b,1))};W.Kb={130:be.prototype.Zd};W.Lb={130:be.prototype.ne};Oa(function(){for(var a=D(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new be(d);gb(d,c)}});
function ke(a,b,c,d,e){var f=this;this.pc=Da("Gecko/");var g=["","moz","ms","webkit"];x.call(this,"Video",a,ke,262144);this.X=a.screenWidth;this.N=a.screenHeight;this.Va=a.bufferAddr;this.Md=a.bufferRAM;var h=a.bufferFormat;this.ra=h&&le[h.toUpperCase()]||me;this.ba=a.bufferCols;this.va=a.bufferRows;this.kc=this.qa=a.cellWidth||1;this.ma=a.cellHeight||1;this.Aa=null;this.oc=!1;this.Wa=a.bufferBits||1;this.Od=a.bufferLeft||0;if(this.u=a.bufferRotate)this.u=this.u%360,0<this.u&&(this.u-=360),-90!=this.u&&
(this.ia("unsupported buffer rotation: "+this.u),this.u=0);this.Xa=a.interruptRate;this.wc=a.refreshRate||60;this.L=b;this.F=c;this.ka=(this.Rd=d)||b||null;this.Ic=this.X;this.Ld=this.N;this.lc=this.X/this.ba|0;this.mc=this.N/this.va|0;1<this.ma&&(this.va++,this.ib=0,this.sb=!1);b=a.smoothing;(c=Wa.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.F[d]){this.F[d]=b;break}if(this.B=a.screenRotate)this.B=this.B%
360,0<this.B&&(this.B-=360),-90!=this.B?(this.ia("unsupported screen rotation: "+this.B),this.B=0):(this.F.translate(0,this.N),this.F.rotate(this.B*Math.PI/180),this.F.scale(this.N/this.X,this.X/this.N));if(this.j=e)if(this.j.kb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.j.kb){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){ne(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(){ne(f,null)},!1);break}}if(this.da=a.fontROM)"json"!=fa(this.da)&&(this.da=ia()+"/api/v1/dump?file="+this.da+"&format=bytes"),ta(this.da,null,!0,function(a,b,c){oe(f,a,b,c)});this.Ob={}}A(ke);var me=0,le={SI1978:1,VT100:2};
function Td(a){a.J=a.ba*a.qa;a.aa=a.va*a.ma;var b=a.J,c=a.aa;a.u&&(b=a.aa,c=a.J);a.O=0;if(!a.Md&&(a.O=(a.J*a.Wa>>3)*a.aa,!yb(a.w,a.Va,a.O,3)))return!1;a.O?(a.qc=a.F.createImageData(b,c),a.tc=16/a.Wa|0,pe(a,a.O>>1)):pe(a,(a.ba+1)*a.va);a.K=document.createElement("canvas");a.K.width=b;a.K.height=c;a.rb=a.K.getContext("2d");a.ea={};a.la=1<<a.Wa;a.ga=Array(a.la+2);a.ga[0]=[0,0,0,255];a.ga[1]=[255,255,255,255];1==a.ra&&(a.ga[a.la+0]=[255,255,0,255],a.ga[a.la+1]=[0,255,0,255]);2==a.ra&&(a.vc=60,a.ub=!1,
a.Ga=Array(a.ba));return!0}ke.prototype.Qa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.H=d;Td(this);if(this.I=ub(a,"Keyboard")){for(var e in this.Ob)this.I.oa("led",e,this.Ob[e]);this.L&&this.I.oa(this.Rd?"textarea":"canvas","kbd",this.ka)}var f=this;this.xc=Kc(this.b,function(){Nc(f)});Lc(this.b,this.xc,1E3/Math.max(this.wc,this.Xa));this.uc=0;this.da||F(this)};
function oe(a,b,c,d){if(d)a.ia("Unable to load font ROM (error "+d+": "+b+")");else{cb(a.hb,b,c);try{var e=eval("("+c+")"),f=e.bytes||e;if(!f||!f.length){w("Empty font ROM: "+b);return}if(1==f.length){w(f[0]);return}if(2048==f.length)a.Aa=f,Ud(a);else{a.ia("Unrecognized font data length ("+f.length+")");return}}catch(g){a.ia("Font ROM data error: "+g.message);return}(a.F||a.H)&&F(a)}}
function Ud(a){a.Aa&&(a.oc=2==a.ra,a.ea[96]=[qe(a,a.qa,a.ma),qe(a,a.qa,a.ma,a.ub)],a.ea[64]=[qe(a,2*a.qa,a.ma),qe(a,2*a.qa,a.ma,a.ub)],a.ea[32]=a.ea[0]=[qe(a,2*a.qa,2*a.ma),qe(a,2*a.qa,2*a.ma,a.ub)])}
function qe(a,b,c,d){var e=8>=a.kc?8:16,f=8<e?15:0,g=a.Aa.length/e,h=!1===d,k={qa:b,ma: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 m=k.context.createImageData(b,c),p=0;p<g;p++){for(var q=0,y=q;q<a.ma;q++)for(var v=p*e+(f+q&e-1),v=d&&8==q?255:a.Aa[v],r=0;r<c/a.ma;r++){for(var z=0,H=0,ha=H;H<a.qa;H++){for(var C=v&128>>(7<H?7:H),z=a.oc&&!C&&z?z:C,U=0;U<b/a.qa;U++)h&&(z=!z),re(a,m,ha,y,z?1:0),ha++;z=C}y++}k.context.putImageData(m,
(p&15)*b,(p>>4)*c)}return k}ke.prototype.Fa=function(){return!0};ke.prototype.oa=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Ob[b]=c,!0;switch(b){case "fullScreen":return this.M[b]=c,this.j&&this.j.kb?c.onclick=function(){d.kb()}:c.parentNode.removeChild(c),!0}return!1};
ke.prototype.kb=function(){var a=!1;if(this.j){if(this.j.kb){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.X/this.N;b>c&&(a=Math.round(c/b*100)+"%")}this.pc?(this.L.style.width=a,this.L.style.width=a,this.L.style.display="block",this.L.style.margin="auto"):(this.j.style.width=a,this.j.style.height="auto");this.j.style.backgroundColor="black";this.j.kb();a=!0}this.ka&&this.ka.focus()}return a};
function ne(a,b){!b&&a.j&&(a.pc?a.L.style.width=a.L.style.height="":a.j.style.width=a.j.style.height="");ib(a,"notifyFullScreen("+b+")")}function pe(a,b){a.sc=b;a.ja=!1;if(void 0===a.D||a.D.length!=a.sc)a.D=Array(a.sc)}function re(a,b,c,d,e){d=a.u?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.ra&&(208<=c&&236>c?e=a.la+0:28<=c&&72>c&&(e=a.la+1));a=a.ga[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]}
function Nc(a,b){var c=!0;if(!b){a.Xa&&(120==a.Xa?a.uc&1?(Jd(a.b,2),c=!1):Jd(a.b,1):Jd(a.b,4));if(c&&a.ja&&a.O){for(var d=a.w,e=a.O,f=!0,g=a.Va>>>d.ha;0<e&&g<d.W.length;)d.W[g].Oa&&(d.W[g].Oa=f=!1,d.W[g].Cc=!0),e-=d.Ia,g++;f&&(c=!1)}Lc(a.b,a.xc,1E3/Math.max(a.wc,a.Xa));a.uc++}if(c)if(1<a.qa)switch(a.ra){case 2:for(var c=a.Va,d=-1,e=0,f=60==a.vc?2:5,h=g=0,k=-1;e<a.va;){var m=0,p=c,q=d,y=a.ba;for(96!=q&&(y>>=1);;){var v=Bb(a.w,p++);if(127==(v&127)){var r=Bb(a.w,p++),d=r&96,c=(r&15)<<8|Bb(a.w,p),c=c+
(r&16?8192:16384);break}if(m<y)a.Ga[m++]=v;else break}if(f)f--;else{for(;m<a.Ga.length;)a.Ga[m++]=0;if(0<=q)for(p=a.ja&&a.D[g]==y,a.D[g++]=y,y=0;y<m;y++){v=a.Ga[y];if(!p||v!==a.D[g]){a.D[k=g]=v;var r=a,z=a.rb,H=v&127;if(v=r.ea[q][v&128?1:0]){var ha=(H&15)*v.qa,H=(H>>4)*v.ma,C,U,ea,Y,va=v.qa,Hb=v.ma;z?(C=y*r.qa,U=e*r.ma,ea=r.qa,Y=r.ma):(C=y*r.lc,U=e*r.mc,ea=r.lc,Y=r.mc);v.qa>r.qa&&(C*=2,ea*=2);v.ma>r.ma&&(q||(H+=r.ma),Hb=r.ma);z?z.drawImage(v.canvas,ha,H,va,Hb,C,U,ea,Y):(C+=0,U+=0,r.F.drawImage(v.canvas,
ha,H,va,Hb,C,U,ea,Y))}h++}g++}e++}}a.ja=!0;!b&&a.sb&&1==h&&(a.D[k]=-1,h=0);a.sb=!1;(h||b)&&a.rb&&a.F.drawImage(a.K,0,a.ib,a.J,a.aa-a.ma,0,0,a.Ic,a.Ld)}else{e=a.Va;f=e+a.O;k=h=g=0;b=a.J;m=0;c=a.aa;q=d=0;p=a.Wa;y=(1<<p)-1;a.Od&&(p=-p,q=16+p);for(;e<f;){r=Cb(a.w,e);if(a.ja&&r===a.D[g])h+=a.tc;else{a.D[g]=r;(z=q)&&(r=r>>8|(r&255)<<8);h<b&&(b=h);for(v=a.tc;v--;)ha=r>>z&y,re(a,a.qc,h++,k,ha),z+=p;h>m&&(m=h);k<c&&(c=k);k>=d&&(d=k+1)}e+=2;g++;if(h>=a.J&&(h=0,k++,k>a.aa))break}a.ja=!0;b<a.J&&(e=m-b,d-=c,a.u&&
(f=b,g=e,b=c,e=d,c=a.J-(f+g),d=g),a.rb.putImageData(a.qc,0,0,b,c,e,d),a.F.drawImage(a.K,0,0,a.K.width,a.K.height,0,0,a.X,a.N))}}
Oa(function(){for(var a=D(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=B(c),e=document.createElement("canvas");if(!e||!e.getContext){c.innerHTML="<br/>Missing &lt;canvas&gt; support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=xa().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height=
(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Wa.aspect);f&&.3<=f&&3.33>=f&&(Na("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");Da("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var g=e.getContext("2d"),d=new ke(d,e,g,f,c);gb(d,c)}});
function se(a){this.da=+a.adapter;switch(this.da){case 0:this.ea=0;this.ja=2;break;default:w("Unrecognized serial adapter #"+this.da);return}this.j=this.B=null;this.ga=a.tabSize;this.ba=a.charBOL;this.D=0;this.X=!1;x.call(this,"SerialPort",a,se,8388608);var b=a.binding;if("console"==b)this.B="";else{var c;a=te;b&&(void 0===c&&(c="Panel"),(c=fb(c,this.id))&&(b=c.M[b])&&this.oa(null,a,b))}this.I="";this.u=this.fb=null;this.exports={connect:this.Ec,receiveData:this.Wb}}A(se);
var ue=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],ve=[!1,0,0,133,142,39,238],te="buffer";l=se.prototype;
l.oa=function(a,b,c,d){var e=this;switch(b){case te:return this.M[b]=this.j=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),we(e,b);return!0},c.onkeypress=function(a){a=a||window.event;we(e,a.which||a.keyCode);a.preventDefault&&a.preventDefault();return!0},c.removeAttribute("readonly"),!0;default:if(d)return this.M[b]=c,d=d.replace(/\\e/g,String.fromCharCode(27)),c.onclick=function(){e.Wb(d);return!0},
!0}return!1};l.Qa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.H=d;var e=this;this.ka=Kc(this.b,function(){e.Wb()});this.la=Kc(this.b,function(){ie(e)});this.F=ub(a,"ChipSet");Gb(b,this,xe,this.ea);Ub(b,this,ye,this.ea);F(this)};
l.Ec=function(){if(!this.u){var a=oc(this.A,"connection");if(a){var b=a.split("->");if(2==b.length){var c=na(b[0]);if(c!=this.gb)return;b=na(b[1]);if(this.u=eb(b)){var d=this.u.exports;if(d){var e=d.connect;e&&e.call(this.u);if(this.fb=d.receiveData){this.status(this.hb+"."+c+" connected to "+b);return}}}}this.status("Unable to establish connection: "+a)}}};l.Fa=function(a,b){if(!b)if(this.Ec(),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};
l.Ja=function(a){return a?this.save():!0};l.reset=function(){ze(this)};l.save=function(){var a=new Vc(this),b=0,c=[];c[b++]=this.K;c[b++]=this.O;c[b++]=this.aa;c[b++]=this.Ea;c[b++]=this.J;c[b++]=this.N;c[b]=this.L;a.set(0,c);return a.data()};l.restore=function(a){return ze(this,a[0])};function ze(a,b){var c=0;b||(b=ve);a.K=b[c++];a.O=b[c++];a.aa=b[c++];a.Ea=b[c++];a.J=b[c++];a.N=b[c++];a.L=b[c];return!0}
function Ae(a,b){var c=a.L&b;b&15||(c>>=4);b=ue[c];c=((a.J&12)>>2)+6;a.J&16&&c++;c+=((a.J&192)>>6)+1>>1;return 1E3/Math.round(b/c)}function we(a,b){ib(a,"receiveByte("+ca(b)+"), status="+ca(a.Ea));return a.X||a.Ea&2?!1:(a.O=b,a.Ea|=2,Jd(a.b,a.ja),!0)}l.Wb=function(a){null!=a&&(this.I="number"!=typeof a?a:this.I+String.fromCharCode(a));this.I&&(we(this,this.I.charCodeAt(0))&&(this.I=this.I.substr(1)),this.I&&this.b&&Lc(this.b,this.ka,Ae(this,15)));return!0};
function ie(a,b){a.Ea|=5;b&&a.fb&&a.fb.call(a.u,b)}l.Td=function(a,b){var c=this.O;E(this,a,null,b,"DATA",c);this.Ea&=-3;return c};l.Sd=function(a,b){var c=this.Ea;E(this,a,null,b,"STATUS",c);return c};
l.de=function(a,b,c){E(this,a,b,c,"DATA");this.aa=b;this.Ea&=-6;ib(this,"transmitByte("+ca(b)+")");if(19==b)this.X=!0;else if(17==b)this.X=!1;else if(this.fb&&this.fb.call(this.u,b),this.j)8==b?(this.j.value=this.j.value.slice(0,-1),0<this.D&&this.D--):(a=(a=oa[b])?"<"+a+">":String.fromCharCode(b),c=a.length,9==b?(b=this.ga||8,c=b-this.D%b,this.ga&&(a=ma("",c))):13==b&&(this.D=c=0,a="\n"),this.ba&&!this.D&&c&&(a=String.fromCharCode(this.ba)+a),this.j.value+=a,this.j.scrollTop=this.j.scrollHeight,
this.D+=c);else if(null!=this.B){if(10==b||1024<=this.B.length)this.g(this.B),this.B="";10!=b&&(this.B+=String.fromCharCode(b))}this.b&&Lc(this.b,this.la,Ae(this,240))};l.ce=function(a,b,c){E(this,a,b,c,"CONTROL");this.K?(this.N=b,this.N&64&&(this.K=!1)):(this.J=b,this.K=!0)};l.be=function(a,b,c){E(this,a,b,c,"BAUDRATES");this.L=b};var xe={0:se.prototype.Td,1:se.prototype.Sd},ye={0:se.prototype.de,1:se.prototype.ce,2:se.prototype.be};
Oa(function(){for(var a=D(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new se(d);gb(d,c)}});function Be(a){x.call(this,"Debugger",a,Be);this.Wa=a.base||16;this.aa=this.ra=this.J=0;this.O=!1;this.j=-1;this.u=[];this.da={}}A(Be);var Ce={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};Be.prototype.Sb=function(){return-1};Be.prototype.Tb=function(){};
Be.prototype.Jb=function(a,b,c){if(b)if(a){0>this.j&&this.u.length&&(this.j=0);if(0>this.j||a!=this.u[this.j])this.u.splice(0,0,a),this.j=0;this.j--}else this.O?a="end":a=this.u[this.j+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(na(a.substring(d,f))),d=f+1}}return b};
function De(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 Ee(a,b,c){var d;if(b){b=Fe(a,b);for(var e=0,f=!1,g=b,h=[],k=[],m=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e<m.length;){var p=m[e++],q=p.length,p=na(p);if(!p){f=!0;break}p=Ge(a,p,null,!1===c);if(void 0===p){f=!0;c=!1;break}h.push(p);if(e==m.length)break;var p=m[e++],y=p.length;k.length&&Ce[p]<Ce[k[k.length-1]]&&De(h,k,1);k.push(p);b=b.substr(q+y)}De(h,k)&&1==h.length||(f=!0);f?c&&a.g("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&He(a,null,
d))}return d}function Fe(a,b){for(var c,d=/\{(.*?)\}/;(c=b.match(d))&&!(0<=c[1].indexOf("{"));){var e=Ee(a,c[1]);b=b.replace("{"+c[1]+"}",null!=e?Ie(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.aa-a.ra}if(null==d)break;b=b.replace(c[0],d.toString())}return b}
function Ge(a,b,c,d){var e;null!=b?(e=a.Sb(b),0<=e?e=a.Tb(e):(e=a.da[b],null==e&&(e=aa(b,a.Wa))),null!=e||d||a.g("invalid "+(c?c:"value")+": "+b)):d||a.g("missing "+(c||"value"));return e}
function He(a,b,c){var d,e=!1;if(void 0!==c){e=!0;d=c;var f=0,g="";if(!f||4<f)f=4;for(var h=0;h<f;h++){g&&(g=","+g);var k=d&255,m=8,p="";m?32<m&&(m=32):m=32;if(null==k||isNaN(k))for(;0<m--;)p="?"+p;else for(;0<m--;)p=(k&1?"1":"0")+p,k>>=1;g=p+g;d>>=8}d=t(c,0,!0)+" "+c+". "+ba(c,0,!0)+" "+("0b"+g);32<=c&&127>c&&(d+=" '"+String.fromCharCode(c)+"'")}a.g((null!=b?b+": ":"")+d);return e}function Je(a,b){if(b)return He(a,b,a.da[b]);var c=0;for(b in a.da)He(a,b,a.da[b]),c++;return 0<c}
function Ie(a,b){switch(a.Wa){case 8:a=ba(b,NaN);break;case 10:a=b.toString();break;default:a=t(b,NaN)}return a}function Ke(a){Be.call(this,a);this.style=Le;this.L=X();this.Va=X();this.ba=X();this.D=[];this.F=this.N=this.B=[];Me(this);this.ja=0;Ne(this);this.va={};Oe(this,a.messages);this.Aa=a.commands;var b=this;window?void 0===window.pc8080&&(window.pc8080=function(a){return Dc(b,a)}):void 0===global.pc8080&&(global.pc8080=function(a){return Dc(b,a)})}A(Ke,Be);
var Pe={"?":"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"},
Le=8080,Qe="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(" "),Re="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(" "),
Se="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),Te=[[45],[42,2067,32],[71,2131,18193],[29,2067],[28,17],[22,17],[44,17,32],[63],[45,32768],[21,18963,2067],[40,18193,2131],[23,2067],[28,273],[22,273],[44,273,32],[64],[45,32768],[42,2323,32],[71,2387,18193],[29,2323],[28,529],[22,529],[44,529,32],[52],[45,32768],[21,18963,2323],[40,18193,2387],[23,2323],[28,785],[22,785],[44,785,32],[53],[45,32768],[42,2579,32],[68,115,18963],[29,2579],[28,1041],[22,1041],[44,1041,32],[20],[45,32768],[21,18963,
2579],[41,18963,115],[23,2579],[28,1297],[22,1297],[44,1297,32],[16,18193],[45,32768],[42,2835,32],[70,115,18193],[29,2835],[28,1617],[22,1617],[44,1617,32],[72],[45,32768],[21,18963,2835],[39,18193,115],[23,2835],[28,1809],[22,1809],[44,1809,32],[17],[43,17,17],[43,17,273],[43,17,529],[43,17,785],[43,17,1041],[43,17,1297],[43,17,1617],[43,17,1809],[43,273,17],[43,273,273],[43,273,529],[43,273,785],[43,273,1041],[43,273,1297],[43,273,1617],[43,273,1809],[43,529,17],[43,529,273],[43,529,529],[43,529,
785],[43,529,1041],[43,529,1297],[43,529,1617],[43,529,1809],[43,785,17],[43,785,273],[43,785,529],[43,785,785],[43,785,1041],[43,785,1297],[43,785,1617],[43,785,1809],[43,1041,17],[43,1041,273],[43,1041,529],[43,1041,785],[43,1041,1041],[43,1041,1297],[43,1041,1617],[43,1041,1809],[43,1297,17],[43,1297,273],[43,1297,529],[43,1297,785],[43,1297,1041],[43,1297,1297],[43,1297,1617],[43,1297,1809],[43,1617,17],[43,1617,273],[43,1617,529],[43,1617,785],[43,1617,1041],[43,1617,1297],[26],[43,1617,1809],
[43,1809,17],[43,1809,273],[43,1809,529],[43,1809,785],[43,1809,1041],[43,1809,1297],[43,1809,1617],[43,1809,1809],[3,18193,17],[3,18193,273],[3,18193,529],[3,18193,785],[3,18193,1041],[3,18193,1297],[3,18193,1617],[3,18193,1809],[2,18193,17],[2,18193,273],[2,18193,529],[2,18193,785],[2,18193,1041],[2,18193,1297],[2,18193,1617],[2,18193,1809],[73,18193,17],[73,18193,273],[73,18193,529],[73,18193,785],[73,18193,1041],[73,18193,1297],[73,18193,1617],[73,18193,1809],[66,18193,17],[66,18193,273],[66,
18193,529],[66,18193,785],[66,18193,1041],[66,18193,1297],[66,18193,1617],[66,18193,1809],[5,18193,17],[5,18193,273],[5,18193,529],[5,18193,785],[5,18193,1041],[5,18193,1297],[5,18193,1617],[5,18193,1809],[76,18193,17],[76,18193,273],[76,18193,529],[76,18193,785],[76,18193,1041],[76,18193,1297],[76,18193,1617],[76,18193,1809],[46,18193,17],[46,18193,273],[46,18193,529],[46,18193,785],[46,18193,1041],[46,18193,1297],[46,18193,1617],[46,18193,1809],[18,18193,17],[18,18193,273],[18,18193,529],[18,18193,
785],[18,18193,1041],[18,18193,1297],[18,18193,1617],[18,18193,1809],[58],[50,2067],[34,51],[30,51],[11,51],[51,2067],[4,18193,33],[65,128],[62],[54],[38,51],[30,32819],[15,51],[7,51],[1,18193,33],[65,128],[57],[50,2323],[33,51],[48,33,18193],[10,51],[51,2323],[74,18193,33],[65,128],[55],[54,32768],[31,51],[27,18193,33],[8,51],[7,32819],[67,18193,33],[65,128],[61],[50,2579],[37,51],[78,19283,18963],[14,51],[51,2579],[6,18193,33],[65,128],[60],[49,2579],[36,51],[75,18963,18707],[13,51],[7,32819],[77,
18193,33],[65,128],[59],[50,3603],[35,51],[24],[12,51],[51,3603],[47,18193,33],[65,128],[56],[69,19219,18963],[32,51],[25],[9,51],[7,32819],[19,18193,33],[65,128]];l=Ke.prototype;
l.Qa=function(a,b,c,d){this.w=b;this.b=c;this.A=a;(a=oc(a,"messages"))&&Oe(this,a);this.Ga=Te;Rd(this,64,function(a){a:{var b=d.w.W,c=a[0],e=a=0,k=b.length;if(c){a=Ue(Ve(d,c));if(-1===a){d.g("invalid address: "+c);break a}e=a>>>d.w.ha;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,m=0;k--;){var p=b[e];p.type==c?m++||d.g("..."):(c=p.type,m=Ab[c],p&&d.g(t(p.id)+" %"+t(e<<d.w.ha)+" %%"+t(p.G)+" "+u(p.Cb)+" "+
u(p.size)+" "+m),c!=ac&&(c=-1),m=0);a+=d.w.Ia;e++}}});F(this)};
l.oa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.ga=this.M[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",Dc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?(b=null,d.j<d.u.length-1&&(b=d.u[++d.j])):40==a.keyCode&&(0<d.j?b=d.u[--d.j]:(b="",d.j=-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.M[b]=c,Fa(c,function(){if(d.ga){var a=d.ga.value;
d.ga.value="";Dc(d,a,!0);return!0}return!1}),!0;case "step":return this.M[b]=c,Fa(c,function(a){var b=!1;lb(d,!0)||(kb(d,!0),b=d.ob(a?1:0),kb(d,!1));return b}),!0}return!1};l.Bb=function(){this.ga&&this.ga.focus()};function Ue(a){a=a&&a.G;null==a&&(a=-1);return a}l.Z=function(a,b){var c=255,d=Ue(a);-1!==d&&(c=Bb(this.w,d),b&&We(a,b));return c};l.bb=function(a,b){var c=65535,d=Ue(a);-1!==d&&(c=Cb(this.w,d),b&&We(a,b));return c};
l.ua=function(a,b,c){var d=Ue(a);-1!==d&&(Db(this.w,d,b),c&&We(a,c),Ec(this.b,!0))};l.Mb=function(a,b,c){var d=Ue(a);if(-1!==d){var e=this.w,f=d&e.w,g=(d&e.u)>>>e.ha;f!=e.w?e.W[g].Zb(f,b&65535,d):(e.W[g++].Db(f,b&255,d),e.W[g&e.D].Db(0,b>>8&255,d+1));c&&We(a,c);Ec(this.b,!0)}};function X(a){return{G:a,Pa:!1}}function wf(a){return[a.G,a.Pa]}function xf(a){return{G:a[0],Pa:a[1]}}
function Ve(a,b,c){var d;c=(c?a.L:a.Va).G;if(void 0!==b){d=b=Fe(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.D.length;c++){var f=a.D[c].Da[d];if(void 0!==f){d=f.o;void 0!==d&&(e=X(d));break}}if(d=e)return d;c=Ee(a,b,void 0)}null!=c&&(d=X(c));return d}function yf(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Kd=a.Jb(b.Gc=c[2]))}function We(a,b){null!=a.G&&(a.G+=b||1)}function Z(a){return t(a,4)}
function zf(a,b,c){var d="";for(c=c||256;d.length<c;){var e=a.Z(b,1);if(!e||36==e||127<=e)break;d+=32<=e?String.fromCharCode(e):"."}return d}function Oe(a,b){a.H=a;a.sa=a.Nd=536870912;a.ka=null;a.la=[];b=a.Jb(b.replace("keys","key").replace("kbd","keyboard"),!1,"|");if(b.length)for(var c in sb)0<=sa(b,c)&&(a.sa|=sb[c],a.g(c+" messages enabled"))}function Rd(a,b,c){for(var d in sb)if(b==sb[d]){a.va[d]=c;break}}
l.Sb=function(a,b){var c;a=a.toUpperCase();null==b?c=sa(Se,a):(c=sa(Se,a.substr(b,2)),0>c&&(c=sa(Se,a.substr(b,1))));return c};function Af(a,b){var c=0;a=a.Tb(b);if(void 0!==a)switch(b){case 7:case 0:case 1:case 2:case 3:case 4:case 5:case 6:c=2;break;case 8:case 9:case 10:case 11:case 12:case 13:case 14:c=4}return c?t(a,c):"??"}
l.Tb=function(a){var b;if(0<=a){var c=this.b;switch(a){case 7:b=c.i;break;case 0:b=c.R;break;case 1:b=c.S;break;case 8:b=Wc(c);break;case 2:b=c.T;break;case 3:b=c.U;break;case 9:b=Yc(c);break;case 4:b=c.V;break;case 5:b=c.Y;break;case 10:b=J(c);break;case 6:b=c.Z(J(c));break;case 11:b=c.na;break;case 12:b=c.P;break;case 13:b=Uc(c);break;case 14:b=Uc(c)&255|c.i<<8}}return b};
function Bf(a,b){b=Fe(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Sb(b,c+1),0<=e&&(b=b.substr(0,c)+Af(a,e)+b.substr(c+1+Se[e].length)),c++;for(c=0;0<=(c=b.indexOf("#",c));)e=b.substr(c+1,2),d=aa(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=Ve(a,e))?(d=e+' "'+zf(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=Ve(a,e))?(We(d),d=e+
' "'+zf(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}l.message=function(a,b){b&&(a+=" at "+Z(X(this.b.P).G));this.sa&1073741824?this.la.push(a):this.ka&&a==this.ka||(this.ka=a,this.sa&-2147483648&&(this.pa(),a+=" (cpu halted)"),this.g(a),this.b&&(a=this.b,Mc(a),a.O=0,Ec(a)))};
function hb(a,b,c,d,e,f,g,h){h|=256;null!=f&&(a.sa&h)!=h||a.message(b.gb+"."+(null!=d?"outPort":"inPort")+"("+u(c)+","+(f?f:"unknown")+(null!=d?","+ca(d):"")+")"+(null!=g?": "+ca(g):"")+(null!=e?" at "+Z(e):""))}
function Ne(a){var b;if(Kd(a)){if(!a.K||!a.K.length){a.K=Array(1E3);for(b=0;b<a.K.length;b++)a.K[b]=X();a.ea=0;a.g("instruction history buffer allocated")}if(!a.I||!a.I.length)for(a.I=Array(256),b=0;b<a.I.length;b++)a.I[b]=[b,0]}else a.K&&a.K.length&&a.g("instruction history buffer freed"),a.ea=0,a.K=[],a.I=[]}l.eb=function(a){if(!Cf(this))return!1;this.b.eb(a);return!0};
l.ob=function(a,b,c){if(!Cf(this))return!1;this.J=0;a||Kd(this)&&Ld(this,this.b.P,0);try{var d=this.b.ob(a);0<d&&(this.J+=d,Ic(this.b,d,!0),Fc(this.b,d),this.aa++)}catch(e){"number"!=typeof e&&(this.J=0,nb(this.b,e.stack||e.message))}!1!==c&&Ec(this.b);this.Ka(b||!1);return 0<this.J};l.pa=function(a){this.b&&this.b.pa(a)};l.Ka=function(a){void 0===a&&(a=!0);this.L=X(this.b.P);a&&1!=this.X?Df(this):Ef(this)};
function Cf(a){var b;if(b=a.b&&mb(a.b))b=a.b,b.C.wa?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!lb(a.b)?(a=a.b,a.C.error?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}l.Fa=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};l.Ja=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};l.reset=function(a){Ne(this);this.aa=this.ra=0;this.ka=null;this.J=0;this.L=X(this.b.P);this.C.ya=!1;Ff(this);a||this.Ka()};
l.save=function(){var a=new Vc(this);a.set(0,wf(this.L));a.set(1,wf(this.ba));a.set(2,[this.u,this.O,this.sa]);a.set(3,this.D);return a.data()};l.restore=function(a){var b=0;void 0!==a[2]&&(this.L=xf(a[b++]),this.ba=xf(a[b++]),this.u=a[b][0],"string"==typeof this.u&&(this.u=[this.u]),this.O=a[b][1],this.sa|=a[b][2]);a[3]&&(this.D=a[3]);return!0};l.start=function(a,b){this.X||this.g("running");this.C.ya=!0;this.rb=a;this.sb=b};
l.stop=function(a,b){if(this.C.ya){this.C.ya=!1;this.J=b-this.sb;if(!this.X){b="stopped";if(this.J){a-=this.rb;var c=0<a?Math.round(1E3*this.J/a):0;b+=" (";Kd(this)&&(b+=this.aa+" opcodes, ",this.ra-=this.aa,this.aa=0);b+=this.J+" cycles, "+a+" ms, "+c+" hz)"}else jb(this,-2147483648)&&(b+=" (use the 't' command to execute blocked faults)");this.g(b)}this.Ka(!0);this.Bb();Ff(this,this.b.P)}};function Kd(a){return 1<a.F.length||!!a.ja}
function Ld(a,b,c){var d=a.b;if(0<c&&(a.ja&&!--a.ja||jc(a,b,1,a.F)))return!0;0<=c&&a.I.length&&(a.aa++,b=Bb(a.w,b),null!=b&&(a.I[b][1]++,b=a.K[a.ea],b.G=d.P,b.Pa=!1,++a.ea==a.K.length&&(a.ea=0)));return!1}function Jb(a,b,c){a.g("break on input from port "+u(b)+": "+t(c));a.pa(!0)}function Wb(a,b,c){a.g("break on output to port "+u(b)+": "+t(c));a.pa(!0)}
function Me(a){var b,c;a.F=["bp"];if(a.N)for(b=1;b<a.N.length;b++){c=a.N[b];var d=a.w;kc(d.W[Ue(c)>>>d.ha],!1)}a.N=["br"];if(a.B)for(b=1;b<a.B.length;b++)c=a.B[b],d=a.w,kc(d.W[Ue(c)>>>d.ha],!0);a.B=["bw"];a.Xa=0}l.$a=function(a,b,c){var d=!0;c||Gf(this,a,b,!1,!0);if(a!=this.F){var e=Ue(b);if(-1===e)this.g("invalid address: "+Z(b.G)),d=!1;else{var f=this.w;f.W[e>>>f.ha].$a(e&f.w,a==this.B)}}d&&(a.push(b),c?b.Pa=!0:(Hf(this,a,a.length-1,"set"),Ne(this)));return d};
function Gf(a,b,c,d,e){var f=!1;c=Ue(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==Ue(h)&&(!d||h.Pa)){f=!0;h.Pa||e||Hf(a,b,g,"cleared");b.splice(g,1);b!=a.F&&(d=a.w,kc(d.W[c>>>d.ha],b==a.B));h.Pa||Ne(a);break}}return f}function If(a,b){for(var c=1;c<b.length;c++)Hf(a,b,c);return b.length-1}function Hf(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.G)+(d?" "+d:c.Gc?' "'+c.Gc+'"':""))}
function Ff(a,b){if(void 0!==b)jc(a,b,1,a.F,!0),a.X=0;else for(b=1;b<a.F.length;b++){var c=a.F[b];if(c.Pa){if(!Gf(a,a.F,c,!0))break;b=0}}}
function jc(a,b,c,d,e){var f=!1;if(!a.Xa++)for(var g=1;!f&&g<d.length;g++){var h=d[g];if(!e||h.Pa)for(var k=Ue(h),m=0;m<c;m++)if(b+m==k){var p,f=!0;h.Pa&&(Gf(a,d,h,!0),e=!0);if(p=h.Kd){for(var f=!1,q=0;q<p.length;q++)if(!Jf(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var y=q+1;y<p.length&&p[y].indexOf("else");y++)q++;if(y==p.length){f=!0;break}}a.b.C.ya||(f=!0)}if(f){e||Hf(a,d,g,"hit");break}}}a.Xa--;return f}
function Kf(a,b,c,d){for(var e=X(b.G),f=a.Z(b,1),g=a.Ga[f],h="",k=(8086!=a.style?Qe:Re)[g[0]],m=g.length-1,p=0,q,y=1;y<=m;y++){var v="";q=g[y];if(void 0!==q&&!(q&16384&&a.style==Le)){var r=q&240;if(r){var z=q&15;z?p=z:q|=p;q&61440||(q|=1==y?8192:4096);if(r&32)a:{v=a;r=q;z=b;switch(r&15){case 1:z=t(v.Z(z,1),2);break;case 2:z=t(v.Z(z,1)<<24>>24,4);break;case 3:z=t(v.bb(z,2),4);break;default:v="imm("+u(r)+")";break a}8086==v.style&&r&64?z="["+z+"]":r&16||(z=(v.style==Le?"$":"0x")+z);v=z}else r&16?(v=
(q&3840)>>8,r=Se[v],8086==a.style&&q&64&&(6==v&&(r="HL"),r="["+r+"]"),v=r):r&128&&(v=(f>>3&7).toString());if(!v||!v.length){h="INVALID";break}0<h.length&&(h+=",");h+=v||"???"}}}f="";g=Z(e.G)+" ";if(-1!==e.G&&-1!==b.G){do if(f+=t(a.Z(e,1),2),null==e.G)break;while(e.G!=b.G)}g+=ma(f,10);g=g+(q&32768?"*":" ")+ma(k,7);h&&(g+=" "+h);c&&(g=ma(g,40)+";"+c,g=a.b.C.jb?g+("cycles="+Gc(a.b).toString()+" cs="+t(a.b.xb)):g+(null!=d?"="+d.toString():""));return g}
function Lf(a,b){switch(b){case "IF":a=a.b.ta&512;break;case "SF":a=fd(a.b);break;case "ZF":a=ed(a.b);break;case "AF":a=dd(a.b);break;case "PF":a=cd(a.b);break;case "CF":a=ad(a.b);break;default:a=0}return b.charAt(0)+(a?"1":"0")+" "}function Mf(a,b){return Se[b]+"="+Af(a,b)+" "}function Nf(a){return Mf(a,7)+Mf(a,8)+Mf(a,9)+Mf(a,10)+Mf(a,11)+Lf(a,"IF")+Lf(a,"SF")+Lf(a,"ZF")+Lf(a,"AF")+Lf(a,"PF")+Lf(a,"CF")}l.zc=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Of(a,b,c){var d=[],e=Ue(b)>>>0;for(b=0;b<a.D.length;b++){var f=a.D[b],g=f.G>>>0,h=f.$d;if(e>=g&&e<g+h){e=pa(f.yc,[e-g],a.zc);0<=e?Pf(a,b,e,d):c&&(e=~e,Pf(a,b,e-1,d),Pf(a,b,e,d));break}}return d}function Pf(a,b,c,d){var e={},f=a.D[b].yc,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.D[b].Da[h],h="."==h.charAt(0)?null:e.l||h);d.push(h);d.push(g);d.push(e.a);d.push(e.c)}
function Qf(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c=0;if(a.I)if("clear"==b){for(b=0;b<a.I.length;b++)a.I[b]=[b,0];a.g("frequency data cleared");c++}else if(void 0!==b)a.g("unknown frequency command: "+b),c++;else{var d=a.I.slice();d.sort(function(a,b){return b[1]-a[1]});var e=8086!=a.style?Qe:Re;for(b=0;b<d.length;b++){var f=d[b][0],g=d[b][1];g&&(a.g((e[a.Ga[f][0]]+" ").substr(0,5)+" ("+ca(f)+"): "+g+" times"),c++)}}c||a.g("no frequency data available")}}
function Rf(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Je(a)||a.g("no variables"),!0;if(!c[2])return Je(a,c[1]);if(!c[3])return delete a.da[c[1]],!0;b=Ee(a,c[3]);return void 0!==b?(a.da[c[1]]=b,!0):!1}a.g("invalid assignment:"+b);return!1}
function Sf(a,b,c){var d=null;if(b=Ve(a,b,!0)){var e=Of(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.G-e[1])&&(g=" + "+u(f)),f=e[0]+" ("+Z(e[1])+")"+g,c&&a.g(f),d=f);4<e.length&&e[4]&&(g="",(f=e[5]-b.G)&&(g=" - "+u(f)),f=e[4]+" ("+Z(e[5])+")"+g,c&&a.g(f),d||(d=f))}else c&&a.g("no symbols")}return d}
function Tf(a,b){switch(b[1]){case "8080":a.style=Le;break;case "8086":a.style=8086;break;case "cs":var c;void 0!==b[3]&&(c=+b[3]);switch(b[2]){case "int":a.b.lb=c;break;case "start":a.b.yb=c;break;case "stop":a.b.mb=c;break;default:a.g("unknown cs option");return}void 0!==c&&qc(a.b);a.g("checksums "+(a.b.C.jb?"enabled":"disabled"));return;case "sp":void 0!==b[2]&&(Hc(a.b,+b[2])||a.g("warning: using 1x multiplier, previous target not reached"));a.g("target speed: "+(a.b.cb.toFixed(2)+"Mhz")+" ("+
a.b.Ra+"x)");return;case "?":a.g("debugger options:");a.g("\t8080\t\tselect 8080-style mnemonics");a.g("\t8086\t\tselect 8086-style mnemonics");a.g("\tcs int #\tset checksum cycle interval to #");a.g("\tcs start #\tset checksum cycle start count to #");a.g("\tcs stop #\tset checksum cycle stop count to #");a.g("\tsp #\t\tset speed multiplier to #");break;default:if(b[1]){a.g("unknown option: "+b[1]);return}}a.g(a.style+"-style mnemonics enabled")}
function Df(a,b){var c;if(b&&"?"==b[1])a.g("register commands:"),a.g("\tr\tdump registers"),a.g("\trx [#]\tset flag or register x to [#]");else{var d=a.b;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.g("missing value for "+b[1]);return}f=Ee(a,b);if(void 0===f)return;switch(e.toUpperCase()){case "A":d.i=f&255;break;case "B":d.R=f&255;break;case "BC":d.R=f>>8&255;case "C":d.S=f&255;break;case "D":d.T=f&255;break;
case "DE":d.T=f>>8&255;case "E":d.U=f&255;break;case "H":d.V=f&255;break;case "HL":d.V=f>>8&255;case "L":d.Y=f&255;break;case "SP":d.na=f&65535;break;case "PC":I(d,f);a.L=X(d.P);break;case "PS":Sc(d,f);break;case "PSW":Sc(d,f&255|d.ta&-256);d.i=f>>8;break;case "CF":d.ca=f?d.ca|256:d.ca&255;break;case "PF":f?cd(d)||(d.fa^=1):cd(d)&&(d.fa^=1);break;case "AF":d.xa=f?~d.fa&16|d.xa&-17:d.fa&16|d.xa&-17;break;case "ZF":d.ca=f?d.ca&-256:d.ca|255;break;case "SF":f?fd(d)||(d.fa^=192):fd(d)&&(d.fa^=192);break;
case "IF":d.ta=f?d.ta|512:d.ta&-513;break;default:a.g("unknown register: "+e);return}Ec(d);a.g("updated registers:")}a.g(Nf(a));c&&(a.L=X(d.P),Ef(a,Z(a.L.G)))}}function Uf(a,b){b=na(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Bf(a,c[2])):Ee(a,b,!0)}function Vf(a,b,c){var d="t"!=b;c=Ge(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ea(c,function(){return kb(a,!0)&&a.ob(e,d,!1)},function(){Ec(a.b);kb(a,!1)})}
function Ef(a,b,c,d){if(b=Ve(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=Ve(a,c,!0);if(!d||d.G<b.G)return;e=d.G-b.G;if(256<e){a.g("range too large");return}d=-1}c=0;for(var f;0<e&&d--;){f=lb(a,!1)||a.X?a.J:null;var g=null!=f?"cycles":null,h=Of(a,b),k=b.G;if(h[0]&&d&&(!c&&d||0>h[0].indexOf("+"))){var m=h[0]+":";h[2]&&(m+=" "+h[2]);a.g(m)}h[3]&&(g=h[3],f=null);f=Kf(a,b,g,f);a.g(f);a.L=b;e-=b.G-k;c++}}}
l.Jb=function(a,b,c){if(b)if(a){0>this.j&&this.u.length&&(this.j=0);if(0>this.j||a!=this.u[this.j])this.u.splice(0,0,a),this.j=0;this.j--}else this.O?a="end":a=this.u[this.j+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(na(a.substring(d,f))),d=f+1}}return b};
function Jf(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.O&&(a.g("ended assemble at "+Z(a.ba.G)),a.L=a.ba,a.O=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.ka=null;if(mb(a)&&0<b.length){a.O&&(b="a "+Z(a.ba.G)+" "+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 m=g.charAt(k);if("?"==h||"r"==h||"a">m||"z"<m){f[0]=g.substr(k);f.unshift(g.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var p=Ve(a,f[1],!0);if(p)if(a.ba=
p,void 0===f[2])a.g("begin assemble at "+Z(p.G)),a.O=!0,Ec(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var y=0;y<q.length;y++)a.ua(p,q[y],1);a.g(Kf(a,a.ba))}}break;case "b":a:{var v=f[0],r=f[1],z=b;if("?"==r)a.g("breakpoint commands:"),a.g("\tbi [p]\ttoggle break on input port [p]"),a.g("\tbo [p]\ttoggle break on output port [p]"),a.g("\tbp [a]\tset exec breakpoint at addr [a]"),a.g("\tbr [a]\tset read breakpoint at addr [a]"),a.g("\tbw [a]\tset write breakpoint at addr [a]"),a.g("\tbc [a]\tclear breakpoint at addr [a]"),
a.g("\tbl\tlist all breakpoints"),a.g("\tbn [n]\tbreak after [n] instruction(s)");else{var H=v.charAt(1);if("l"==H){var ha;ha=0+If(a,a.F);ha+=If(a,a.N);(ha+=If(a,a.B))||a.g("no breakpoints")}else if("n"==H)a.ja=Ge(a,r),a.g("break after "+a.ja+" instruction(s)");else if(void 0===r)a.g("missing breakpoint address");else{var C=X();if("*"!=r&&(C=Ve(a,r,!0),!C))break a;r=u(C.G);"c"==H?null==C.G?(Me(a),a.g("all breakpoints cleared")):Gf(a,a.F,C)||Gf(a,a.N,C)||Gf(a,a.B,C)||a.g("breakpoint missing: "+Z(C.G)):
"i"==H?a.g("breakpoint "+(Fb(a.w,C.G)?"enabled":"cleared")+": port "+r+" (input)"):"o"==H?a.g("breakpoint "+(Kb(a.w,C.G)?"enabled":"cleared")+": port "+r+" (output)"):null!=C.G&&(yf(a,C,z),"p"==H?a.$a(a.F,C):"r"==H?a.$a(a.N,C):"w"==H?a.$a(a.B,C):a.g("unknown breakpoint command: "+H))}}}break;case "c":a.Ha&&(a.Ha.value="");break;case "d":a:{var U,ea=f[0],Y=f[1],va=f[2],Hb=f[3];if("?"==Y){var qb="";for(U in sb)a.va[U]&&(qb&&(qb+=","),qb+=U);qb+=",state,symbols";a.g("dump memory commands:");a.g("\tdb [a] [#] dump # bytes at address a");
a.g("\tdw [a] [#] dump # words at address a");a.g("\tdd [a] [#] dump # dwords at address a");a.g("\tdh [#] [#] dump # instructions from history");qb.length&&a.g("dump extension commands:\n\t"+qb)}else if("state"==Y){var Xe=Wf(a.A,!0);"console"==va?console.log(Xe):(a.Ha&&(a.Ha.value=""),a.g(Xe))}else if("symbols"==Y)for(var md=0;md<a.D.length;md++){var nd=a.D[md],rb;for(rb in nd.Da)if("."!=rb.charAt(0)){var Ye=nd.Da[rb].o;if(void 0!==Ye){var Ze=nd.Da[rb].l;Ze&&(rb=Ze);a.g(Z(Ye)+" "+rb)}}}else{if("d"==
ea){for(U in sb)if(f[1]==U){var $e=a.va[U];$e?(f.shift(),f.shift(),$e(f)):a.g("no dump registered for "+Y);break a}Y||(ea=a.ub||"db")}else a.ub=ea;if("dh"==ea){var af=Y,bf=va,cf="",df=0,wa=a.ea,Ha=a.K;if(Ha.length){var ja=+af||a.ib,Lb=+bf||10;isNaN(ja)?ja=Lb:cf="more ";ja>Ha.length&&(a.g("note: only "+Ha.length+" available"),ja=Ha.length);wa-=ja;0>wa&&(null==Ha[Ha.length-1].G?(ja=wa+ja,wa=0):wa+=Ha.length);var od=[];"call"==bf&&(Lb=1E5,od=["CALL"]);for(void 0!==af&&a.g(ja+" instructions earlier:");0<
Lb&&wa!=a.ea;){var ef=Ha[wa++];if(null==ef.G)break;var Mb=X(ef.G),ng=ja--,ff=Kf(a,Mb,"history",ng);(!od.length||0<=ff.indexOf(od[0]))&&a.g(ff);Mb.Rb&&(wa+=Mb.Rb,Lb-=Mb.Rb,ja-=Mb.Rb);wa>=Ha.length&&(wa=0);a.ib=ja;df++;Lb--}}df||(a.g("no "+cf+"history available"),a.ib=void 0)}else{var rc=Ve(a,Y);if(rc){var sc=0;va&&("l"==va.charAt(0)&&(va=va.substr(1)||Hb),sc=Ge(a,va)>>>0,65536<sc&&(sc=65536));for(var Nb="",tc="dd"==ea?4:"dw"==ea?2:1,uc=tc*sc||128,og=uc+15>>4||1;og--&&0<uc;){var vc=0,pd=0,Ob,qd="",
gf="",Y=Z(rc.G);for(Ob=16;0<Ob&&0<uc;Ob--){var wc=a.Z(rc,1),vc=vc|wc<<(pd++<<3);pd==tc&&(qd+=t(vc,2*tc),qd+=1==tc?9==Ob?"-":" ":" ",vc=pd=0);gf+=32<=wc&&128>wc?String.fromCharCode(wc):".";uc--}Nb&&(Nb+="\n");Nb+=Y+" "+qd+(Ob?"":" "+gf)}Nb&&a.g(Nb);a.Va=rc}}}}break;case "e":if("else"==f[0])break;var xc=1,hf=255,jf=a.Z,kf=a.ua;"ew"==f[0]&&(xc=2,hf=65535,jf=a.bb,kf=a.Mb);var lf=xc<<1,mf=f[1];if(null==mf)a.g("edit memory commands:"),a.g("\teb [a] [...] edit bytes at address a"),a.g("\tew [a] [...] edit words at address a");
else{var yc=Ve(a,mf);if(yc)for(var zc=2;zc<f.length;zc++){var Pb=Ee(a,f[zc]);if(void 0===Pb){a.g("unrecognized value: "+f[zc]);break}Pb&~hf&&a.g("warning: "+t(Pb)+" exceeds "+xc+"-byte value");var pg=jf.call(a,yc);a.g("changing "+Z(yc.G)+" from "+t(pg,lf,!0)+" to "+t(Pb,lf,!0));kf.call(a,yc,Pb,xc)}}break;case "f":Qf(a,f[1]);break;case "g":a:{var nf=f[1],qg=b;if(void 0!==nf){var rd=Ve(a,nf,!0);if(!rd)break a;yf(a,rd,qg);a.$a(a.F,rd,!0)}a.eb(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var sd;if(a.C.ya)sd="halting",a.pa();else{if(lb(a,!0))break a;sd="already halted"}c||a.g(sd)}break;case "i":if("if"==f[0]){var td;var Qb=b.substr(2),Qb=na(Qb);Ee(a,Qb)?(c||a.g("true: "+Qb),td=!0):(c||a.g("false: "+Qb),td=!1);td||(d=!1);break}if("int"==f[0]){var Ac;var rg=f[1];if(a.b.ta&512){var ud=Ee(a,rg);null==ud?Ac=!1:(a.g("requesting interrupt level "+ud),Jd(a.b,ud),Ac=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),Ac=!1;Ac||(d=!1);break}var vd=f[1];if(vd&&"?"!=vd){var wd=
Ge(a,vd);if(void 0!==wd){var sg=Ib(a.w,wd);a.g(u(wd)+": "+ca(sg))}}else a.g("input commands:"),a.g("\ti [p]\tread port [p]"),a.g("warning: port accesses can affect hardware state");break;case "k":var tg=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var xd=0,of=X(),Rb=X(a.b.na);for(a.g("stack trace for "+Z(Rb.G));10>xd;){for(var $a=null,ug=256;65536>Rb.G>>>0;){of.G=a.bb(Rb,2);if(null==Rb.G||!ug--)break;for(var vg=a,Bc=of,pf=
null,Sb=Bc.G,qf=Sb,yd=1;6>=yd&&Sb;yd++){if(2<yd){Bc.G=Sb;var Cc=Kf(vg,Bc);if(0<=Cc.indexOf("CALL")){var rf=Cc.indexOf(" ");if(Sb+(Cc.indexOf(" ",rf+1)-rf-1)/2==qf){pf=Cc;break}}}Sb--}Bc.G=qf;if($a=pf)break}if(!$a||null==$a)break;var sf=null;if("ks"==tg){var tf=$a.match(/[0-9A-F]+$/);tf&&(sf=Sf(a,tf[0]))}$a=ma($a,50)+" ;"+(sf||"stack="+Z(Rb.G));a.g($a);xd++}xd||a.g("no return addresses found")}break;case "l":"ln"==f[0]&&Sf(a,f[1],!0);break;case "m":a:{var Ia,Ja=null,O=f[1];"?"==O&&(O=void 0);if(void 0!==
O){var Sa=0;if("all"==O)Sa=1878917119,O=null;else if("on"==O)Ja=!0,O=null;else if("off"==O)Ja=!1,O=null;else{"keys"==O&&(O="key");"kbd"==O&&(O="keyboard");for(Ia in sb)if(O==Ia){Sa=sb[Ia];Ja=!!(a.sa&Sa);break}if(!Sa){a.g("unknown message category: "+O);break a}}if(Sa)if("on"==f[2])a.sa|=Sa,Ja=!0;else if("off"==f[2]&&(a.sa&=~Sa,Ja=!1,1073741824==Sa)){for(var zd=0;zd<a.la.length;zd++)a.g(a.la[zd]);a.la=[]}}var wg=0,Tb="";for(Ia in sb)if(!O||O==Ia){var xg=!!(a.sa&sb[Ia]);if(null===Ja||Ja==xg)Tb&&(Tb+=
","),++wg%10||(Tb+="\n\t"),"key"==Ia&&(Ia="keys"),Tb+=Ia}void 0===O&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ja?Ja?"messages on: ":"messages off: ":"message categories:\n\t")+(Tb||"none"));Ne(a)}break;case "o":var Ad=f[1],yg=f[2];if(Ad&&"?"!=Ad){var Bd=Ge(a,Ad,"port #"),Cd=Ge(a,yg);void 0!==Bd&&void 0!==Cd&&(Vb(a.w,Bd,Cd),a.g(u(Bd)+": "+ca(Cd)))}else a.g("output commands:"),a.g("\to [p] [b]\twrite byte [b] to port [p]"),a.g("warning: port accesses can affect hardware state");
break;case "p":if("print"==f[0]){Uf(a,b.substr(5));break}var uf="pr"==f[0]?1:0,zg=1+uf;if(a.X)a.g("step in progress");else{var Dd=X(a.b.P);switch(a.Z(Dd)){case 205:a.X=zg,We(Dd,3)}a.X?(a.$a(a.F,Dd,!0),a.eb()||(a.A&&a.A.Bb(),a.X=0)):Vf(a,uf?"tr":"t")}break;case "r":if("reset"==b){a.A&&a.A.reset();break}Df(a,f);break;case "s":Tf(a,f);break;case "t":Vf(a,f[0],f[1]);break;case "u":Ef(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Rf(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.30.4 ("+a.b.ae+",RELEASE"+
(ob?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(xa());break;case "?":if(f[1]){Uf(a,b.substr(1));break}var Ed="commands:",Fd;for(Fd in Pe)Ed+="\n"+ma(Fd,9)+Pe[Fd];Kd(a)||(Ed+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Ed);break;default:a.g("unknown command: "+b),d=!1}}}catch(vf){a.g("debugger error: "+(vf.stack||vf.message)),d=!1}return d}function Dc(a,b,c){b=a.Jb(b,c);for(var d in b)if(!Jf(a,b[+d]))return!1;return!0}
Oa(function(){for(var a=D(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new Ke(d);gb(d,c)}});
function Xf(a,b,c){x.call(this,"Computer",a,Xf,67108864);this.C.wa=!1;Yf(this,b);this.N=oc(this,"autoPower",a);this.u=0;this.da=a.busWidth||a.buswidth;this.A=Zf;this.K=null;this.I=this.aa=!1;this.ea=oc(this,"url")||"";(Math.random()+.1).toString(36);this.j=$f(this);if(this.b=fb("CPU",this.id)){this.H=fb("Debugger",this.id);this.D=[];for(b=null;b=ub(this,"Video",b);)this.D.push(b);this.w=new wb({id:this.hb+".bus",busWidth:this.da},this.b,this.H);var d,e=db(this.id);if((this.F=fb("Panel",this.id))&&
this.F.Ha)for(b=0;b<e.length;b++)d=e[b],d.ia=this.F.ia,d.g=this.F.g,d.Ha=this.F.Ha;this.g("PC8080 v1.30.4\nCopyright \u00a9 2012-2016 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.Qa&&d.Qa(this,this.w,this.b,this.H);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.J=d:this.A=parseInt(d,10));var f;if(a=oc(this,"state")||(f=!0,a.state))b=this.O=a,f||(this.I=!0,this.A=Zf),this.A&&(this.L=new Vc(this,"1.30.4"),ag(this.L)?
b=null:delete this.L);!b&&this.A&&(b=bg(this))&&(this.I=!0);if(b){var g=this;ta(b,null,!0,function(a,b,c){c?(g.J=null,g.I=!1,g.ia("Unable to load machine state from server (error "+c+(b?": "+na(b):"")+")")):(g.K=b,g.aa=!0);F(g)})}else F(this);this.M.power||(this.N=!0);!c&&this.N&&cg(this,this.zb)}else w("Unable to find CPU component")}A(Xf);var Zf=0;function Yf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){w(d.message+" ("+c+")")}}a.ba=b}
function oc(a,b,c){var d=b.toLowerCase(),d=Wa[b]||Wa[d];void 0===d&&a.ba&&(d=a.ba[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function cg(a,b,c){for(var d=db(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!mb(f)){mb(f,function(){cg(a,b,c)});return}}b.call(a,c)}
function dg(a,b){var c=new Vc(a,"1.30.4","validate");if(ag(c)&&eg(c)){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.ia("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=Xf.prototype;
l.zb=function(a){void 0===a&&(a=this.A||(this.K?1:Zf));if(!this.u){this.u++;var b=!1,c=!1;this.X=!1;var d=this.L||new Vc(this,"1.30.4");if(-1==a)b=!0;else if(a>Zf){if(ag(d,this.K)){this.B=new Vc(this,"1.30.4","failsafe");ag(this.B)&&(fg(this,d),a=2,gg(this.B));this.B.set("timestamp",ra());hg(this.B);var e=this.A&&!this.I;if(1==a||ya("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=eg(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?ag(d,g):("error"==
f&&"no machine state"!=g?(this.ia("Error: "+g),"unable to verify user"==g&&(Ca("user",""),this.j=null)):this.g(f+": "+g),gg(d),ag(d)?(c=eg(d),e=!0):c=!1))}e&&dg(this,c?d:null)}else 2==a&&d.clear()}else dg(this);delete this.K;delete this.L}e=db(this.id);for(f=0;f<e.length;f++)g=e[f],g!==this&&g!=this.b&&(c=ig(this,g,d,b,c));b=[d,a,c];-1!=a?cg(this,this.Bc,b):this.Bc(b)}};
function ig(a,b,c,d,e){if(!b.C.wa){b.C.wa=!0;if(b.Fa){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.Fa(f,d)&&f&&(w("Unable to restore state for "+b.type),a.O&&!a.aa?(c.clear(),a.A=Zf,window&&window.location.reload()):a.X=!0,b.Fa(null),e=!1)}if(!d&&b.jc)for(a=b.jc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
l.Bc=function(a){var b=a[0],c=0>a[1];a=a[2];this.ga=!0;this.C.wa=!0;var d=this.M.power;d&&(d.textContent="Shutdown");this.b&&(ig(this,this.b,b,c,a),this.b.vb());this.X&&(fg(this,b),b.clear());!c&&this.B&&(this.B.clear(),delete this.B);this.u=0};
function fg(a,b){if(ya("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.j||"";b=b.toString();var d={app:"PC8080",ver:"1.30.4"};d.url=a.ea;d.user=c;d.type="bug";d.data=b;ta("http://www.pcjs.org/api/v1/report",d,!0)}}
function Wf(a,b,c){var d,e="none";if(a.u)return null;a.u--;var f=new Vc(a,"1.30.4"),g=new Vc(a,"1.30.4","validate"),h=ra();g.set("timestamp",h);f.set("timestamp",h);f.set("version","1.30.4");f.set("url",window?window.location.href:null);f.set("browser",xa());a.b&&a.b.Ja&&(c&&a.b.pa(),d=a.b.Ja(b,c),"object"===typeof d&&f.set(a.b.id,d),c&&(a.b.C.wa=!1,!1===d&&(e=null)));for(var h=db(a.id),k=0;k<h.length;k++){var m=h[k];m.C.wa&&(m.Ja&&(d=m.Ja(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.C.wa=!1,!1===
d&&(e=null)))}e&&(c?(h=d=!1,b?(a.j&&jg(a,a.j,f.toString()),hg(g)&&hg(f)||(e=null,d=h=!0)):a.A&&(d=!0,h=3==a.A),d&&f.clear(h)):e=f.toString());c&&(a.C.wa=!1,b=a.M.power)&&(b.textContent="Power");a.u=0;return e}l.reset=function(){this.w&&this.w.reset&&(ib(this,"Resetting "+this.w.type),this.w.reset());for(var a=db(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.w&&c.reset&&(ib(this,"Resetting "+c.type),c.reset())}};
l.start=function(a,b){for(var c=db(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=db(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
l.oa=function(a,b,c){var d=this;switch(b){case "power":return this.M[b]=c,c.onclick=function(){d.u||(d.C.wa?Wf(d,!1,!0):cg(d,d.zb))},!0;case "reset":return this.M[b]=c,c.onclick=function(){if(d.C.wa&&!d.u)if(d.A&&!d.J){var a=ya("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Wf(d,a,!0);!a&&d.O?window&&window.location.reload():d.zb(Zf)}else d.reset(),d.b&&d.b.vb()},!0;case "save":if(ga())c.parentNode.removeChild(c);else return this.M[b]=
c,c.onclick=function(){var a=$f(d,!0);if(a){var b=!!(d.A&&!d.J||d.O),c=Wf(d,b);b?jg(d,a,c):d.ia("Resume disabled, machine state not saved")}},!0}return!1};
function $f(a,b){var c=a.j;c||((c=Ba("user"),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=kg(a,c))||a.ia("The user ID is invalid.")):b&&a.ia("Browser local storage is not available"));return c}
function kg(a,b){a.j=null;b=ta(ia()+"/api/v1/user?req=verify&user="+b);var c=b[1];if(!b[0]&&c)try{b=eval("("+c+")"),b.code&&"ok"==b.code&&(Ca("user",b.data),a.j=b.data)}catch(d){w(d.message+" ("+c+")")}return a.j}function bg(a){var b=null;a.j&&(b=ia()+"/api/v1/user?req=load&user="+a.j+"&state="+lg(a,"1.30.4"));return b}
function jg(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=lg(a,"1.30.4");d.data=c;b=ta(ia()+"/api/v1/user",d);d=b[0];if(b[1]){if(d){var e=d.indexOf("\n");0<e&&(d=d.substr(0,e));d.indexOf("Error: ")||(d=d.substr(7))}d='{"code":'+b[1]+',"data":"'+d+'"}'}b=JSON.parse(d);b&&"ok"==b.code?a.ia("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.ia(c),Ca("user",""),a.j=null)}}
function ub(a,b,c){a=db(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.Bb=function(a){if(this.D.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.D[0];d.ka&&d.ka.focus();!a&&window&&window.scrollTo(b,c)}};l.Ka=function(a){this.b&&this.b.Ka(a);this.F&&this.F.Ka(a)};
Oa(function(){for(var a=D(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=B(c),c=D(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],g=B(f),g=new Xf(g,d,!0);gb(g,f);g.N&&cg(g,g.zb)}});Ga.show.push(function(){for(var a=D(document,"pc8080","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=fb("Computer",c.id))&&c.ga&&!c.C.wa&&c.zb(-1)}});
Ga.exit.push(function(){for(var a=D(document,"pc8080","computer"),b=0;b<a.length;b++){var c=B(a[b]);(c=fb("Computer",c.id))&&c.C.wa&&Wf(c,!(!c.A||c.J),!0)}});function Vc(a,b,c){this.id=a.id;this.key=lg(a,b,c);this.H=a.H;gg(this,a.Qd)}function lg(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}
Vc.prototype={constructor:Vc,set:function(a,b){try{this[this.id][a]=b}catch(c){}},get:function(a){return this[this.id][a]||null},value:function(){return this[this.id]},data:function(){return this[this.id]},toString:function(){var a=this[this.id];return"string"==typeof a?a:JSON.stringify(a)},clear:function(a){gg(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 gg(a,b){a[a.id]={};b&&a.set("parms",b);a.b=!1}function hg(a){var b=!0;if(Aa()){var c=JSON.stringify(a[a.id]);Ca(a.key,c)||(w("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function eg(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){w(c.message||c),b=!1}return b}function ag(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:Aa()&&(b=Ba(a.key))?(a[a.id]=b,a.b=!0):!1}var mg=0;
function Ag(a,b,c,d,e,f){e("Loading "+a+"...");ta(a,null,!0,function(g,h,k){k?(h||(h="unable to load "+a+" ("+k+")"),f(h,null)):Bg(h,a,b,c,d,e,f)})}
function Bg(a,b,c,d,e,f,g){function h(a,f){if(f)g(f,null);else{c&&(cb(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(p){f=null,a=p.message}else a="unrecognized XML: "+(255<a.length?a.substr(0,255)+"...":a);g(a,f)}}a?e?Cg(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
null)}
function Cg(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/g.exec(a)){var e=d[2];b("Loading "+e+"...");ta(e,null,!0,function(f,g,h){if(h||!g)c(a,"unable to resolve XML reference: "+d[0]+" ("+h+")");else{if(f=d[3])if(h=g.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var k=h[0],m,p=/( [a-z]+=)(['"])(.*?)\2/g;m=p.exec(f);)k=0>k.indexOf(m[1])?k.replace(">",m[0]+">"):k.replace(new RegExp(m[1]+"(['\"])(.*?)\\1"),m[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);Cg(a,b,c)}})}else c(a,null)}
function Dg(a,b,c,d){function e(a){if(void 0===h){var b=g&&D(g,"machine-warning");h=b&&b[0]||g}h&&(h.innerHTML=la(a))}function f(a){e("Error: "+a);k&&(--mg||Ra(!0));k=!1}var g,h,k=!0;mg++;bb[a]={};try{if(g=document.getElementById(a)){var m;if("object"==typeof resources&&(m=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],q=document.createElement("style");q.type="text/css";q.styleSheet?q.styleSheet.cssText=m:q.appendChild(document.createTextNode(m));p.appendChild(q)}c||
(c="/versions/pc8080/1.30.4/components.xsl");m=function(d,h){h?Ag(c,null,null,!1,e,function(d,k){k?(cb(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window?(k=h.transformNode(k))?(g.outerHTML=k,--mg||Ra(!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),--mg||Ra(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?Ag(b,a,d,!0,e,m):Bg(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(y){f(y.message)}return k}window.embedPC8080=function(a,b,c,d){Ra(!1);return Dg(a,b,c,d)};window.enableEvents=Ra;window.sendEvent=Ta;})();