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

288 lines
107 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={pe:1,qe:3,re: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,Xb:65,Kc:66,Mc:67,$b:68,E:69,Pc:70,Qc:71,Rc:72,Sc:73,Zc:74,$c:75,bc:76,gd:77,hd:78,kd:79,ld:80,Q:81,rd:82,ud:83,Ad:84,Bd:85,Cd:86,Dd:87,Fd:88,Gd:89,Hd:90,"[":91,"\\":92,"]":93,"^":94,_:95,"`":96,Ze:97,$e:98,af:99,d:100,e:101,bf:102,cf:103,df:104,ef:105,ff:106,k:107,gf:108,
hf:109,n:110,jf:111,p:112,q:113,r:114,kf:115,t:116,mf:117,nf:118,pf:119,x:120,y:121,z:122,"{":123,"|":124,"}":125,"~":126,se: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 wa(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 z(a,b,c,d){this.type=a;b||(b={id:"",name:""});this.id=b.id||"";this.name=b.name;this.hc=b.comment;this.Od=b;b=this.id.indexOf(".");0>b?this.fb=this.id:(this.gb=this.id.substr(0,b),this.fb=this.id.substr(b+1));this[a]=c;this.B={ready:!1,vb:!1,Nb:!1,wa:!1,error:!1};this.Gb=null;this.B.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=z);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.pa(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}
z.prototype={constructor:z,parent:null,toString:function(){return this.name?this.name:this.id||this.type},pa: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.ja=function(a){this.g(a,this.fb)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.fb+": "+a)},ja:function(a,b,c){Qa(a,b,c||this.type)},Fa:function(){return this.B.wa=!0},Ja:function(a,b){b&&(this.B.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.Ld)}return!1}
function kb(a,b){if(a.B.Nb)return a.B.vb=!1,a.B.Nb=!1;if(a.B.error)return a.g(a.toString()+" error"),!1;a.B.vb=b;return a.B.vb}function lb(a,b){a.B.vb&&(b?a.B.Nb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.B.vb}function F(a){if(!a.B.error&&(a.B.ready=!0,a.B.ready)){var b=a.Gb;a.Gb=null;b&&b()}}function mb(a,b){b&&(a.B.ready?b():a.Gb=b);return a.B.ready}function nb(a,b){a.B.error=!0;a.ja(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,rb=[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){z.call(this,"Panel",a,tb)}A(tb);l=tb.prototype;
l.pa=function(a,b,c,d){return this.A&&this.A.pa(a,b,c,d)||this.b&&this.b.pa(a,b,c,d)||this.J&&this.J.pa(a,b,c,d)||this.H&&this.H.pa(a,b,c,d)?!0:this.parent.pa.call(this,a,b,c,d)};l.Qa=function(a,b,c,d){this.A=a;this.u=b;this.b=c;this.H=d;this.J=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){z.call(this,"Bus",a,wb);this.b=b;this.H=c;this.I=a.busWidth||16;this.K=Math.pow(2,this.I);this.w=this.K-1|0;this.ha=(this.I>>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.u=this.Ia-1;this.J=this.K/this.Ia|0;this.G=this.J-1;this.A=[];this.j=[];this.D=this.C=!1;this.N=[];this.O=[];a=new G;xb(a,this.H);this.W=Array(this.J);for(b=0;b<this.J;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.F)return h.Bb+=h.F-e,h.F=e,!0;if(e>=h.F+h.Bb){m=h.size-(e-k);m>f&&(m=f);h.Bb=e-h.F+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.w)>>>this.ha].mb(a&this.u,a)};function Bb(a,b){return a.W[(b&a.w)>>>a.ha].zb(b&a.u,b)}l.bb=function(a){var b=a&this.u,c=(a&this.w)>>>this.ha;return b!=this.u?this.W[c].Dc(b,a):this.W[c++].mb(b,a)|this.W[c&this.G].mb(0,a+1)<<8};function Cb(a,b){var c=b&a.u,d=(b&a.w)>>>a.ha;return c!=a.u?a.W[d].Sb(c,b):a.W[d++].zb(c,b)|a.W[d&a.G].zb(0,b+1)<<8}l.ua=function(a,b){this.W[(a&this.w)>>>this.ha].ob(a&this.u,b&255,a)};
function Db(a,b,c){a.W[(b&a.w)>>>a.ha].Cb(b&a.u,c&255,b)}l.Kb=function(a,b){var c=a&this.u,d=(a&this.w)>>>this.ha;c!=this.u?this.W[d].Fc(c,b&65535,a):(this.W[d++].ob(c,b&255,a),this.W[d&this.G].ob(0,b>>8&255,a+1))};function Eb(a){for(var b=0,c=[],d=0;d<a.J;d++){var e=a.W[d];if(e.Oa||e.Ac){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.D=!a.D,a.D;void 0===a.A[b]&&(a.A[b]=[null,!1]);a.A[b][1]=!a.A[b][1];return a.A[b][1]}function Hb(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.D!=g[1]&&Jb(a.H,b,m)):a.H&&(hb(a.H,a,b,null,c),a.D&&Jb(a.H,b,m));e|=m<<f;f+=h<<3;b+=h;d-=h}return e}function Tb(a,b){if(void 0===b)return a.C=!a.C,a.C;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.C!=g[1]&&Wb(a.H,b,k)}else a.H&&(hb(a.H,a,b,k,d),a.C&&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.F=a;this.Bb=b;this.size=c||0;this.type=d||ac;this.M=d==bc;xb(this);this.Oa=this.Ac=!1;if(c)if(ob)this.D=new ArrayBuffer(c),this.C=new DataView(this.D,0,c),this.u=new Uint8Array(this.D,0,c),this.J=new Uint16Array(this.D,0,c>>1),this.b=new Int32Array(this.D,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.C.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.C.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)},I:function(){this.H&&jb(this.H,129)&&this.H.message("attempt to read invalid block %"+t(this.F),!0);return 255},
w:function(a,b){this.H&&jb(this.H,129)&&this.H.message("attempt to write "+u(b)+" to invalid block %"+t(this.F),!0)},K:function(a,b){return this.mb(a++,b++)|this.mb(a,b)<<8},G:function(a,b,c){this.ob(a++,b&255,c++);this.ob(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},gb: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.F){var c=this.H;jc(c,this.F+a,1,c.N)&&c.qa(!0)}return this.zb(a,b)},ba:function(a,b){if(this.H&&null!=this.F){var c=this.H;jc(c,this.F+a,2,c.N)&&c.qa(!0)}return this.Sb(a,b)},ia:function(a,b,c){if(this.H&&null!=this.F){var d=this.H;jc(d,this.F+a,1,d.C)&&d.qa(!0)}this.M?this.w(a,b,c):this.Cb(a,b,c)},la:function(a,b,c){if(this.H&&
null!=this.F){var d=this.H;jc(d,this.F+a,2,d.C)&&d.qa(!0)}this.M?this.w(a,b,c):this.Wb(a,b,c)},L:function(a){return this.u[a]},O:function(a){return this.u[a]},aa:function(a){return this.C.getUint16(a,!0)},da:function(a){return a&1?this.u[a]|this.u[a+1]<<8:this.J[a>>1]},ga:function(a,b){this.u[a]=b;this.Oa=!0},fb:function(a,b){this.u[a]=b;this.Oa=!0},ka:function(a,b){this.C.setUint16(a,b,!0);this.Oa=!0},ma:function(a,b){a&1?(this.u[a]=b,this.u[a+1]=b>>8):this.J[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.ob=a.M?a.w:a.Cb,a.Fc=a.M?a.G:a.Wb):--a.A||(a.mb=a.zb,a.Dc=a.Sb)}function gc(a,b,c){c&&a.j||(a.ob=!a.M&&b[1]||a.w,a.Fc=!a.M&&b[3]||a.G);if(c||void 0===c)a.Cb=b[1]||a.w,a.Wb=b[3]||a.G}function ic(a,b,c){c&&a.A||(a.mb=b[0]||a.I,a.Dc=b[2]||a.K);if(c||void 0===c)a.zb=b[0]||a.I,a.Sb=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.gb,G.prototype.ea,G.prototype.va],hc=[G.prototype.N,G.prototype.ia,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.fb,G.prototype.da,G.prototype.ma];
function mc(a,b){z.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.B.ya=!1;this.B.Vb=!1;this.B.ub=a.autoStart;this.B.yc=!1;this.B.ib=!1;this.wb=this.N=0;this.xb=a.csStart;this.kb=a.csInterval;this.lb=a.csStop;this.w=[];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.u=b;this.H=d;for(b=0;b<nc.length;b++)(c=this.M[nc[b]])&&this.A.pa(null,nc[b],c);this.D=ub(a,"ChipSet");a=oc(a,"autoStart");null!=a&&(this.B.ub="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;Cc(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.ub=function(){return this.B.ub||!this.H&&void 0===this.M.run?(this.eb(),!0):!1};l.Bc=function(){return 0};
function Cc(a){void 0===a.xb&&(a.xb=0);void 0===a.kb&&(a.kb=-1);void 0===a.lb&&(a.lb=-1);a.B.ib=0<=a.xb&&0<a.kb;a.B.ib&&(a.wb=0,a.N=a.xb-a.L)}function Fc(a,b){if(a.B.ib){var c=!1;a.wb=a.wb+a.Bc()|0;a.N-=b;0>=a.N&&(a.N+=a.kb,c=!0);0<=a.lb&&a.lb<=Gc(a)&&(a.kb=a.lb=-1,Cc(a),a.qa(),c=!0);c&&a.g(Gc(a)+" cycles: checksum="+t(a.wb))}}
l.pa=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.B.wa)a=!0;else{var b=null,c,h=db(a.id);for(c=0;c<h.length&&(b=h[c],b===a||b.B.ready);c++);if(c==h.length)for(c=0;c<h.length&&(b=h[c],b===a||b.B.wa);c++);c==h.length&&(b=a);w("The "+b.type+" component ("+b.id+") is not "+(b.B.ready?"powered yet":"ready yet"+(b.Gb?" (waiting for notification)":""))+".");a=!1}a&&(d.B.ya?d.qa():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.J&&(c=a.J/a.ga);a.va=Math.round(1E3/30);a.ea=Math.floor(a.X/30*c);b||(a.O=a.ea);a.ia=0}function Gc(a){return a.L+a.G+a.K-a.b}function pc(a){a.J=0;a.Aa=0;a.L=a.G=a.K=a.b=0;Cc(a);Hc(a,1)}
function Hc(a,b,c){var d=!1;if(void 0!==b){.8>a.J/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.Ab()}Ic(a,a.G);a.G=0;a.C=qa();a.I=0;Jc(a);return d}function Kc(a,b){var c=a.w.length;a.w.push([-1,b]);return c}function Lc(a,b,c){0<=b&&b<a.w.length&&0>a.w[b][0]&&(c*=a.X*a.Ra/1E3,a.w[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.B.ya){Hc(this);this.A&&this.A.start(this.C,Gc(this));this.B.ya=!0;this.B.Vb=!0;this.D&&this.D.start();var b=this.M.run;b&&(b.textContent="Halt");this.A&&(this.A.Ka(!0),a&&this.A.Ab(!0))}this.ia>=this.X&&Jc(this,!0);this.aa=0;this.da=qa();this.I&&(a=this.da-this.I,a>this.va&&(this.C+=a,this.C>this.da&&(this.C=this.da)));try{do{for(var c,d=this.B.ib?1:this.ea,e=this.w.length-1;0<=e;e--){var f=this.w[e];0>f[0]||d>f[0]&&(d=f[0])}c=d;this.nb(c);c=Mc(this,!0);this.aa+=
c;this.G+=c;Fc(this,c);a=c;for(var g=this.w.length-1;0<=g;g--){var h=this.w[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.B.ya)}catch(k){this.qa();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.I=qa();e=this.va;this.aa&&(e=Math.round(e*this.aa/this.ea));e-=this.I-this.da;if(f=this.I-this.C)this.J=Math.round(this.G/(10*f))/
100,864E5<=f&&(this.L=0,Hc(this));if(0>e||this.J<this.cb)-1E3>e&&(this.C-=e),e=0;this.ia+=this.aa;this.I+=e;c(d,e)}else Ec(this),this.A&&this.A.stop(qa(),Gc(this))};l.nb=function(){return 0};l.qa=function(a){lb(this,!0);Mc(this);Ic(this,this.G);this.G=0;if(this.B.ya){this.B.ya=!1;this.D&&this.D.stop();var b=this.M.run;b&&(b.textContent="Run")}this.B.complete=a};function Ec(a,b){if(a.A){for(var c=a.A,d=0;d<c.G.length;d++)Nc(c.G[d],b);a.A.Ka(b)}}
function Oc(a){this.Zd=+a.model||8080;mc.call(this,a,1E6);this.ka=Pc;pc(this);this.B.complete=this.B.Nd=!1;this.ma=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.B.ya&&this.qa();Qc(this);pc(this);this.B.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.oa=0;I(a,a.la);Sc(a,0);a.j=0}function Tc(a,b){a.la=b;I(a,b)}
l.Bc=function(){var a=this.i+this.R+this.S+this.T+this.U+this.V+this.Y|0;return a=a+this.oa+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.oa,this.P,Uc(this)]);a.set(1,[this.j,this.L,this.Ra]);a.set(2,Eb(this.u));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.oa=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.u;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.pa=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.ma++;a=!0;break;default:a=this.parent.pa.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 rb[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 Fd(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.u.Z(a)};l.ua=function(a,b){this.u.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.u.bb(a.P);I(a,a.P+2);return b}function N(a){var b=a.u.bb(a.oa);a.oa=a.oa+2&65535;return b}function P(a,b){a.oa=a.oa-2&65535;a.u.Kb(a.oa,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.qa()),c=!a.B.ya||a.B.yc?t(c,d):"--------".substr(0,d),a.M[b].textContent!=c&&(a.M[b].textContent=c))}
l.Ka=function(a){this.ma&&(a||!this.B.ya||this.B.yc)&&(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.oa,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.B.ya&&this.J?this.J.toFixed(2)+"Mhz":"Stopped"};l.nb=function(a){this.B.complete=!0;var b=this.B.Nd=this.H&&Kd(this.H),c=a?this.B.Vb?0:1:-1;this.B.Vb=!1;this.K=this.b=a;if(Id(this)){do{if(b){if(Ld(this.H,this.P,c)){this.qa();break}c=1}this.ka[L(this)].call(this)}while(0<this.b)}return this.B.complete?this.K-this.b:void 0===this.B.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.u.Kb(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.u.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.oa=M(this)&65535;this.b-=10},function(){this.ua(M(this),this.i);this.b-=13},function(){this.oa=this.oa+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.oa);bd(this,a>>8&256);this.b-=10},function(){this.i=this.Z(M(this));this.b-=13},function(){this.oa=this.oa-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.qa()):this.ta&512||(this.H&&I(this,
a),this.qa())},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=Fd(this,this.R);this.b-=4},function(){this.i=Fd(this,this.S);this.b-=4},function(){this.i=Fd(this,this.T);this.b-=4},function(){this.i=Fd(this,this.U);this.b-=4},function(){this.i=Fd(this,this.V);this.b-=4},function(){this.i=Fd(this,this.Y);this.b-=4},function(){this.i=Fd(this,this.Z(J(this)));this.b-=7},function(){this.i=Fd(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.u,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.u,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=Fd(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.oa=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){z.call(this,"ChipSet",a,R,32768);var b=a.model;b&&!Qd[b]&&Qa("Unrecognized ChipSet model: "+b);this.w=Qd[b]||{};a.sound&&(this.ea=null,window&&(this.ea=window.AudioContext||window.webkitAudioContext),this.ea&&new this.ea);F(this)}A(R);
var S={Ba:1978.1,yd:{Ca:0,ue:1,ye:16,Fe:32,Oe:64,Ne:128,pb:14},Za:{Ca:1,Nc:1,qd:2,md:4,nd:16,od:32,pd:64,pb:8},zd:{Ca:2,te:3,We:4,ve:8,Je:16,Ke:32,Le:64,we:128,pb:0},Se:{Ca:3},Qe:{Ca:2,Ge:7},Ue:{Ca:3,Xe:1,Te:2,Me:4,De:8,xe:16,me:32},Re:{Ca:4},Ve:{Ca:5,ze:1,Ae:2,Be:4,Ce:8,Ye:16}},T={Ba:100,La:{Ca:66,pc:1,ec:2,jd:4,Ie:8,He:16,gc:32,fc:64,ac:128},Lc:{Ca:66,INIT:0},Ua:{Ca:194,oe:0,Zb:16,sd:32,lc:48,Vc:0,Wc:32},Db:{Ca:162,Pe:0,Yc:0,Uc:0,Xc:0,Tc:0},Ma:{Ee:{Ca:98},Ta:{Ic:0,Hc:1,vd:2,Ed:4,Oc:5,td:6,wd:7},
Eb:16383}},Qd={SI1978:S,VT100:T};R.prototype.pa=function(){return!1};R.prototype.Qa=function(a,b,c,d){this.u=b;this.b=c;this.H=d;this.A=a;this.J=ub(a,"Keyboard");this.Ga=ub(a,"SerialPort");this.video=ub(a,"Video");Hb(b,this,this.w.Ib);Ub(b,this,this.w.Jb);if(d){var e=this;Rd(d,16384,function(){for(var a="",b=0;b<e.D.length;b++)a&&(a+=b&&b%10?", ":",\n"),a+=u(e.D[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.yd.pb,S.Za.pb,S.zd.pb,0,0,0,0]];
T.INIT=[[T.Lc.INIT,T.La.ec|T.La.jd],[T.Ua.Vc,T.Ua.Wc],[T.Db.Yc,T.Db.Uc,T.Db.Xc,T.Db.Tc],[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.w.INIT&&!this.restore(this.w.INIT)&&this.ja("reset error")};
l.save=function(){var a=new Vc(this);switch(this.w.Ba){case S.Ba:a.set(0,[this.va,this.G,this.Aa,this.X,this.da,this.la,this.ma]);break;case T.Ba:a.set(0,[this.ga,this.I]),a.set(1,[this.K,this.L]),a.set(2,[this.C,this.aa,this.ka,this.ia]),a.set(3,[this.O,this.j,this.N,this.ba,this.D])}return a.data()};
l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.w.Ba){case S.Ba:return this.va=b[0],this.G=b[1],this.Aa=b[2],this.X=b[3],this.da=b[4],this.la=b[5],this.ma=b[6],!0;case T.Ba:return this.ga=b[0],this.I=b[1],b=a[1],this.K=b[0],this.L=b[1],b=a[2],this.C=b[0],this.aa=b[1],this.ka=b[2],this.ia=b[3],b=a[3],this.O=b[0],this.j=b[1],this.N=b[2],this.ba=b[3],this.D=b[4],!0}return!1};l.start=function(){};l.stop=function(){};l.Td=function(a,b){var c=this.va;E(this,a,null,b,"STATUS0",c,!0);return c};
l.Ud=function(a,b){var c=this.G;E(this,a,null,b,"STATUS1",c,!0);return c};l.Vd=function(a,b){var c=this.Aa;E(this,a,null,b,"STATUS2",c,!0);return c};l.Sd=function(a,b){var c=this.X>>8-this.da&255;E(this,a,null,b,"SHIFT.RESULT",c,!0);return c};l.ce=function(a,b,c){E(this,a,b,c,"SHIFT.COUNT",null,!0);this.da=b};l.ee=function(a,b,c){E(this,a,b,c,"SOUND1",null,!0);this.la=b};l.de=function(a,b,c){E(this,a,b,c,"SHIFT.DATA",null,!0);this.X=b<<8|this.X>>8};
l.fe=function(a,b,c){E(this,a,b,c,"SOUND2",null,!0);this.ma=b};l.ge=function(a,b,c){E(this,a,b,c,"WATCHDOG",null,!0)};function Sd(a){var b=0,c=0,d=~a.O;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.Wd=function(a,b){var c=this.I,c=c&~T.La.fc;if((Gc(this.b)&64)<<1&&(c|=T.La.fc,c!=this.I)){var d,e;d=this.N&1;e=this.N>>1&7;switch(e){case T.Ma.Ta.wd:break;case T.Ma.Ta.Hc:this.O=this.O<<1|d;break;case T.Ma.Ta.Oc:d=Sd(this);this.D[d]=T.Ma.Eb;ib(this,"doNVRCommand(): erase data at addr "+u(d));break;case T.Ma.Ta.Ic:this.j=this.j<<1|d;break;case T.Ma.Ta.Ed:d=Sd(this);e=this.j&T.Ma.Eb;this.D[d]=e;ib(this,"doNVRCommand(): write data "+u(e)+" to addr "+u(d));break;case T.Ma.Ta.td:d=Sd(this);e=this.D[d];
null==e&&(e=T.Ma.Eb);this.j=e;ib(this,"doNVRCommand(): read data "+u(e)+" from addr "+u(d));break;case T.Ma.Ta.vd:this.j<<=1;this.ba=this.j&T.Ma.Eb+1;break;default:ib(this,"doNVRCommand(): unrecognized command "+ca(e))}}c&=~T.La.gc;this.ba&&(c|=T.La.gc);c&=~T.La.ac;if(d=this.J){d=this.J;if(e=d.C)e=d.b,e=Gc(d.b)>=d.I+e.X*e.Ra/1E3*1.2731488;e&&(d.C=!1);d=!d.C}d&&(c|=T.La.ac);c&=~T.La.pc;this.Ga&&this.Ga.Ea&1&&(c|=T.La.pc);this.I=c;E(this,a,null,b,"FLAGS",c);return c};
l.he=function(a,b,c){E(this,a,b,c,"BRIGHTNESS");this.ga=b};l.ke=function(a,b,c){E(this,a,b,c,"NVR.LATCH");this.N=b};l.je=function(a,b,c){E(this,a,b,c,"DC012");a=b&3;switch(b>>2&3){case 0:this.C=this.C&-4|a;break;case 1:this.C=this.C&-13|a<<2;this.video&&(b=this.video,a=this.C,ib(b,"updateScrollOffset("+a+")"),b.hb!==a&&((b.hb=a)?Nc(b,!0):b.rb=!0));break;case 2:switch(a){case 0:this.aa=~this.aa;break;case 2:case 3:this.ka=3-a}break;case 3:this.ia=a}};
l.ie=function(a,b,c){E(this,a,b,c,"DC011");b&T.Ua.sd?(b&=T.Ua.lc,this.L!=b&&(this.L=b,this.video&&(a=this.video,b=this.L==T.Ua.lc?50:60,ib(a,"updateRate("+b+")"),a.tc=b))):(b&=T.Ua.Zb,this.K!=b&&(this.K=b,this.video&&(a=this.K==T.Ua.Zb?132:80,b=this.video,ib(b,"updateDimensions("+a+","+(80<a&&this.I&T.La.ec?14:24)+")"),b.ba=a,b.ra=b.ic,80<a&&b.ra--,Td(b)&&Ud(b))))};S.Ib={0:R.prototype.Td,1:R.prototype.Ud,2:R.prototype.Vd,3:R.prototype.Sd};
S.Jb={2:R.prototype.ce,3:R.prototype.ee,4:R.prototype.de,5:R.prototype.fe,6:R.prototype.ge};T.Ib={66:R.prototype.Wd};T.Jb={66:R.prototype.he,98:R.prototype.ke,162:R.prototype.je,194:R.prototype.ie};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){z.call(this,"ROM",a,Vd);this.A=null;this.C=a.addr;this.j=a.size;this.D=a.alias;this.w=a.file;this.G=da(this.w);if(this.w){a=this.w;var b=fa(this.G);"json"!=b&&"hex"!=b&&(a=ia()+"/api/v1/dump?file="+this.w+"&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.u=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.C,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.xc);0>q&&p.splice(-(q+1),0,k)}m&&(h.a=m.replace(/''/g,'"'))}a.G.push({lf:b,F:c,Yd:d,Da:e,wc:f})}delete this.Da}return!0};Vd.prototype.Ja=function(){return!0};
function Wd(a,b,c,d){if(d)a.ja("Unable to load system ROM (error "+d+": "+b+")");else{cb(a.gb,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.ja("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.w)F(a);else if(a.A&&a.u){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.C;if(yb(a.u,b,a.j,bc)){var c;for(c=0;c<a.A.length;c++)Db(a.u,b+c,a.A[c]);b=!0}else b=!1;if(b){b=[];"number"==typeof a.D?b.push(a.D):null!=a.D&&a.D.length&&(b=a.D);for(c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.u,g=d.j,h=[],k=d.C>>>f.ha;0<g&&k<f.W.length;)h.push(f.W[k++]),g-=f.Ia;f=d.u;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){z.call(this,"RAM",a,Yd);this.Da=this.j=null;this.D=a.addr;this.C=a.size;this.ab=a.load;this.Sa=a.exec;this.w=!1;this.A=a.file;this.G=da(this.A);if(this.A){a=this.A;var b=fa(this.G);"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.ja("Unable to load RAM resource (error "+f+": "+a+")"):(cb(c.gb,a,b),(a=wa(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.u=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.w&&a.C&&yb(a.u,a.D,a.C,1)&&(a.w=!0);if(!mb(a)){if(!a.w)w("No RAM allocated");else if(a.A){if(!a.j||!a.u)return;var b=a.D;null!==a.ab&&(b=a.ab);for(var c=0;c<a.j.length;c++)Db(a.u,b+c,a.j[c]);if(null!==a.Sa){if(256==a.Sa){for(c=0;c<$d.length;c++)Db(a.u,$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.qa());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){z.call(this,"Keyboard",a,be,65536);(a=a.model)&&!ce[a]&&Qa("Unrecognized Keyboard8080 model: "+a);this.u=ce[a]||{};this.reset();F(this)}A(be);var de={};de[n.Xb]=37;de[n.$b]=39;de[n.bc]=32;
var ee={Ba:1978.1,Lb:{},Yb:de,sb:{},Ya:{"1p":49,"2p":50,coin:51,left:37,right:39,fire:32}},V={},W={Ba:100,Lb:(V[8]=3,V[n.ld]=5,V[n.kd]=6,V[n.Gd]=7,V[n.Ad]=8,V[n.Dd]=9,V[n.Q]=10,V[39]=16,V[221]=20,V[219]=21,V[n.Sc]=22,V[n.Bd]=23,V[n.rd]=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.bc]=70,V[n.$c]=71,V[n.Qc]=72,V[n.Pc]=73,V[n.Xb]=74,V[104]=80,V[2013]=81,V[98]=82,V[97]=83,V[222]=85,V[186]=86,V[n.Zc]=87,V[n.Rc]=88,V[n.$b]=89,V[n.ud]=90,V[110]=96,V[116]=97,V[101]=98,V[100]=99,V[13]=100,V[190]=101,V[188]=102,V[n.hd]=103,V[n.Kc]=104,V[n.Fd]=105,V[119]=106,V[105]=112,V[99]=113,V[102]=114,V[109]=115,V[191]=117,V[n.gd]=118,V[n[" "]]=119,V[n.Cd]=120,V[n.Mc]=121,V[n.Hd]=122,V[120]=123,V[17]=124,V[16]=125,V[20]=126,V),Yb:{},sb:{},Ya:{setup:120},Jc:{Ca:130,INIT:127},Na:{Ca:130,
ed:1,dd:2,cd:4,bd:8,fd:16,dc:32,cc:63,xd:64,ne:128,INIT:0},ad:127};W.sb={l4:W.Na.ed,l3:W.Na.dd,l2:W.Na.cd,l1:W.Na.bd,locked:W.Na.fd,local:W.Na.dc,online:~W.Na.dc};var ce={SI1978:ee,VT100:W};
be.prototype.pa=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.M[e]){if("led"==a&&this.u.sb[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)},!0;default:if(this.u.Ya&&void 0!==this.u.Ya[b])return this.M[e]=c,a=function(a,b){return function(c){c.preventDefault();ge(a,b,!0)}}(this,this.u.Ya[b]),b=function(a,b){return function(){ge(a,b,!1)}}(this,this.u.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.K=Kc(this.b,function(){he(e)});this.D=ub(a,"ChipSet");Hb(b,this,this.u.Ib);Ub(b,this,this.u.Jb)};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.Jc.INIT,!1,0,-1]];l=be.prototype;
l.reset=function(){this.j=[];this.u.INIT&&!this.restore(this.u.INIT)&&this.ja("reset error")};l.save=function(){var a=new Vc(this);switch(this.u.Ba){case W.Ba:a.set(0,[this.J,this.G,this.C,this.I,-1])}return a.data()};l.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.u.Ba){case ee.Ba:return!0;case W.Ba:return this.J=b[0],ie(this,this.J&W.Na.cc),this.G=b[1],this.C=b[2],this.I=b[3],this.w=b[4],!0}return!1};
function ie(a,b){for(var c in a.u.sb){var d=a.M["led-"+c];if(d){var e=a.u.sb[c],f=!!(b&e);e&e-1&&(f=!(b&~e));d.style.backgroundColor=f?"#ff0000":"#000000"}}}function fe(a,b,c){var d=!0,e;a:if(e=b.keyCode,e=a.u.Yb[e]||e,!a.u.Lb[e]){for(var f in a.u.Ya)if(a.u.Ya[f]===e){e=f;break a}e=null}e&&(d=ge(a,e,c),b.preventDefault());return d}
function ge(a,b,c){var d;a:{for(d=0;d<a.j.length;d++)if(a.j[d].Ub==b)break a;d=-1}if(c)0>d?a.j.push({Ub:b,Rb:Date.now(),Fb:!1}):(a.j[d].Rb=Date.now(),a.j[d].Fb=!1);else if(0<=d){if(!a.j[d].Fb){var e=a.j[d].Rb;if(e&&50>Date.now()-e)return a.j[d].Fb=!0,he(a),!0}a.j.splice(d,1)}if(a.D){d=0;switch(b){case "1p":d=S.Za.md;break;case "2p":d=S.Za.qd;break;case "coin":d=S.Za.Nc;break;case "left":d=S.Za.od;break;case "right":d=S.Za.pd;break;case "fire":d=S.Za.nd}d&&(a=a.D,b=d,a.G&=~b,c&&(a.G|=b))}return!0}
function he(a){for(var b=0,c=-1;b<a.j.length;){if(a.j[b].Fb){var d=a.j[b].Ub,e=50-(Date.now()-a.j[b].Rb);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.K,c)}l.Xd=function(a,b){var c=this.G;0<=this.w&&(this.w<this.j.length?(c=this.j[this.w],this.w++,c=W.Lb[c.Ub],c&128&&(c&=127)):(this.w=-1,c=W.ad),this.G=c,Jd(this.b,1));E(this,a,null,b,"KBDUART.ADDRESS",c);return c};
l.le=function(a,b,c){E(this,a,b,c,"KBDUART.STATUS");this.J=b;this.C=!0;this.I=Gc(this.b);ie(this,b&W.Na.cc);b&W.Na.xd&&(this.w=0,Jd(this.b,1))};W.Ib={130:be.prototype.Xd};W.Jb={130:be.prototype.le};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 je(a,b,c,d,e){var f=this;this.nc=Da("Gecko/");var g=["","moz","ms","webkit"];z.call(this,"Video",a,je,262144);this.X=a.screenWidth;this.N=a.screenHeight;this.Va=a.bufferAddr;this.Kd=a.bufferRAM;var h=a.bufferFormat;this.ma=h&&ke[h.toUpperCase()]||le;this.ba=a.bufferCols;this.va=a.bufferRows;this.ic=this.ra=a.cellWidth||1;this.na=a.cellHeight||1;this.Aa=null;this.mc=!1;this.Wa=a.bufferBits||1;this.Md=a.bufferLeft||0;if(this.w=a.bufferRotate)this.w=this.w%360,0<this.w&&(this.w-=360),-90!=this.w&&
(this.ja("unsupported buffer rotation: "+this.w),this.w=0);this.Xa=a.interruptRate;this.uc=a.refreshRate||60;this.L=b;this.D=c;this.ka=(this.Pd=d)||b||null;this.Gc=this.X;this.Jd=this.N;this.jc=this.X/this.ba|0;this.kc=this.N/this.va|0;1<this.na&&(this.va++,this.hb=0,this.rb=!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.D[d]){this.D[d]=b;break}if(this.C=a.screenRotate)this.C=this.C%
360,0<this.C&&(this.C-=360),-90!=this.C?(this.ja("unsupported screen rotation: "+this.C),this.C=0):(this.D.translate(0,this.N),this.D.rotate(this.C*Math.PI/180),this.D.scale(this.N/this.X,this.X/this.N));if(this.j=e)if(this.j.jb=e.requestFullscreen||e.msRequestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,this.j.jb){for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenchange","on"+d in document){document.addEventListener(d,function(){me(f,document.fullscreenElement||document.msFullscreenElement||
document.mozFullScreenElement||document.webkitFullscreenElement?!0:!1)},!1);break}for(c=0;c<g.length;c++)if(d=g[c]+"fullscreenerror","on"+d in document){document.addEventListener(d,function(){me(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){ne(f,a,b,c)});this.Mb={}}A(je);var le=0,ke={SI1978:1,VT100:2};
function Td(a){a.I=a.ba*a.ra;a.aa=a.va*a.na;var b=a.I,c=a.aa;a.w&&(b=a.aa,c=a.I);a.O=0;if(!a.Kd&&(a.O=(a.I*a.Wa>>3)*a.aa,!yb(a.u,a.Va,a.O,3)))return!1;a.O?(a.oc=a.D.createImageData(b,c),a.rc=16/a.Wa|0,oe(a,a.O>>1)):oe(a,(a.ba+1)*a.va);a.K=document.createElement("canvas");a.K.width=b;a.K.height=c;a.qb=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.ma&&(a.ga[a.la+0]=[255,255,0,255],a.ga[a.la+1]=[0,255,0,255]);2==a.ma&&(a.tc=60,a.tb=!1,
a.Ga=Array(a.ba));return!0}je.prototype.Qa=function(a,b,c,d){this.A=a;this.u=b;this.b=c;this.H=d;Td(this);if(this.J=ub(a,"Keyboard")){for(var e in this.Mb)this.J.pa("led",e,this.Mb[e]);this.L&&this.J.pa(this.Pd?"textarea":"canvas","kbd",this.ka)}var f=this;this.vc=Kc(this.b,function(){Nc(f)});Lc(this.b,this.vc,1E3/Math.max(this.uc,this.Xa));this.sc=0;this.da||F(this)};
function ne(a,b,c,d){if(d)a.ja("Unable to load font ROM (error "+d+": "+b+")");else{cb(a.gb,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.ja("Unrecognized font data length ("+f.length+")");return}}catch(g){a.ja("Font ROM data error: "+g.message);return}(a.D||a.H)&&F(a)}}
function Ud(a){a.Aa&&(a.mc=2==a.ma,a.ea[96]=[pe(a,a.ra,a.na),pe(a,a.ra,a.na,a.tb)],a.ea[64]=[pe(a,2*a.ra,a.na),pe(a,2*a.ra,a.na,a.tb)],a.ea[32]=a.ea[0]=[pe(a,2*a.ra,2*a.na),pe(a,2*a.ra,2*a.na,a.tb)])}
function pe(a,b,c,d){var e=8>=a.ic?8:16,f=8<e?15:0,g=a.Aa.length/e,h=!1===d,k={ra:b,na: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,x=q;q<a.na;q++)for(var v=p*e+(f+q&e-1),v=d&&8==q?255:a.Aa[v],r=0;r<c/a.na;r++){for(var y=0,H=0,ha=H;H<a.ra;H++){for(var C=v&128>>(7<H?7:H),y=a.mc&&!C&&y?y:C,U=0;U<b/a.ra;U++)h&&(y=!y),qe(a,m,ha,x,y?1:0),ha++;y=C}x++}k.context.putImageData(m,
(p&15)*b,(p>>4)*c)}return k}je.prototype.Fa=function(){return!0};je.prototype.pa=function(a,b,c){var d=this;if("led"==a||"rled"==a)return this.Mb[b]=c,!0;switch(b){case "fullScreen":return this.M[b]=c,this.j&&this.j.jb?c.onclick=function(){d.jb()}:c.parentNode.removeChild(c),!0}return!1};
je.prototype.jb=function(){var a=!1;if(this.j){if(this.j.jb){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.nc?(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.jb();a=!0}this.ka&&this.ka.focus()}return a};
function me(a,b){!b&&a.j&&(a.nc?a.L.style.width=a.L.style.height="":a.j.style.width=a.j.style.height="");ib(a,"notifyFullScreen("+b+")")}function oe(a,b){a.qc=b;a.ia=!1;if(void 0===a.G||a.G.length!=a.qc)a.G=Array(a.qc)}function qe(a,b,c,d,e){d=a.w?(b.height-c-1)*b.width+d:c+d*b.width;e&&1==a.ma&&(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.sc&1?(Jd(a.b,2),c=!1):Jd(a.b,1):Jd(a.b,4));if(c&&a.ia&&a.O){for(var d=a.u,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].Ac=!0),e-=d.Ia,g++;f&&(c=!1)}Lc(a.b,a.vc,1E3/Math.max(a.uc,a.Xa));a.sc++}if(c)if(1<a.ra)switch(a.ma){case 2:for(var c=a.Va,d=-1,e=0,f=60==a.tc?2:5,h=g=0,k=-1;e<a.va;){var m=0,p=c,q=d,x=a.ba;for(96!=q&&(x>>=1);;){var v=Bb(a.u,p++);if(127==(v&127)){var r=Bb(a.u,p++),d=r&96,c=(r&15)<<8|Bb(a.u,p),c=c+
(r&16?8192:16384);break}if(m<x)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.ia&&a.G[g]==x,a.G[g++]=x,x=0;x<m;x++){v=a.Ga[x];if(!p||v!==a.G[g]){a.G[k=g]=v;var r=a,y=a.qb,H=v&127;if(v=r.ea[q][v&128?1:0]){var ha=(H&15)*v.ra,H=(H>>4)*v.na,C,U,ea,Y,ua=v.ra,Gb=v.na;y?(C=x*r.ra,U=e*r.na,ea=r.ra,Y=r.na):(C=x*r.jc,U=e*r.kc,ea=r.jc,Y=r.kc);v.ra>r.ra&&(C*=2,ea*=2);v.na>r.na&&(q||(H+=r.na),Gb=r.na);y?y.drawImage(v.canvas,ha,H,ua,Gb,C,U,ea,Y):(C+=0,U+=0,r.D.drawImage(v.canvas,
ha,H,ua,Gb,C,U,ea,Y))}h++}g++}e++}}a.ia=!0;!b&&a.rb&&1==h&&(a.G[k]=-1,h=0);a.rb=!1;(h||b)&&a.qb&&a.D.drawImage(a.K,0,a.hb,a.I,a.aa-a.na,0,0,a.Gc,a.Jd)}else{e=a.Va;f=e+a.O;k=h=g=0;b=a.I;m=0;c=a.aa;q=d=0;p=a.Wa;x=(1<<p)-1;a.Md&&(p=-p,q=16+p);for(;e<f;){r=Cb(a.u,e);if(a.ia&&r===a.G[g])h+=a.rc;else{a.G[g]=r;(y=q)&&(r=r>>8|(r&255)<<8);h<b&&(b=h);for(v=a.rc;v--;)ha=r>>y&x,qe(a,a.oc,h++,k,ha),y+=p;h>m&&(m=h);k<c&&(c=k);k>=d&&(d=k+1)}e+=2;g++;if(h>=a.I&&(h=0,k++,k>a.aa))break}a.ia=!0;b<a.I&&(e=m-b,d-=c,a.w&&
(f=b,g=e,b=c,e=d,c=a.I-(f+g),d=g),a.qb.putImageData(a.oc,0,0,b,c,e,d),a.D.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 je(d,e,g,f,c);gb(d,c)}});
function re(a){this.ea=+a.adapter;switch(this.ea){case 0:this.ga=0;this.ka=2;break;default:w("Unrecognized serial adapter #"+this.ea);return}this.j=this.w=null;this.ia=a.tabSize;this.da=a.charBOL;this.C=0;this.aa=!1;z.call(this,"SerialPort",a,re,8388608);var b=a.binding;if("console"==b)this.w="";else{var c;a=se;b&&(void 0===c&&(c="Panel"),(c=fb(c,this.id))&&(b=c.M[b])&&this.pa(null,a,b))}this.G="";this.J=this.L=null;this.exports={connect:this.Cc,receiveData:this.Tb}}A(re);
var te=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],ue=[!1,0,0,133,142,39,238],se="buffer";l=re.prototype;
l.pa=function(a,b,c,d){var e=this;switch(b){case se: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),ve(e,b);return!0},c.onkeypress=function(a){a=a||window.event;ve(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.Tb(d);return!0},
!0}return!1};l.Qa=function(a,b,c,d){this.A=a;this.u=b;this.b=c;this.H=d;var e=this;this.la=Kc(this.b,function(){e.Tb()});this.ma=Kc(this.b,function(){e.Ea|=5});this.D=ub(a,"ChipSet");Hb(b,this,we,this.ga);Ub(b,this,xe,this.ga);F(this)};
l.Cc=function(){if(!this.J){var a=oc(this.A,"connection");if(a){var b=a.split("->");if(2==b.length){var c=na(b[0]);if(c!=this.fb)return;b=na(b[1]);if(this.J=eb(b)){var d=this.J.exports;if(d){var e=d.connect;e&&e.call(this.J);if(this.L=d.receiveData){this.status(this.gb+"."+c+" connected to "+b);return}}}}this.status("Unable to establish connection: "+a)}}};l.Fa=function(a,b){if(!b)if(this.Cc(),!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(){ye(this)};l.save=function(){var a=new Vc(this),b=0,c=[];c[b++]=this.K;c[b++]=this.X;c[b++]=this.ba;c[b++]=this.Ea;c[b++]=this.I;c[b++]=this.O;c[b]=this.N;a.set(0,c);return a.data()};l.restore=function(a){return ye(this,a[0])};function ye(a,b){var c=0;b||(b=ue);a.K=b[c++];a.X=b[c++];a.ba=b[c++];a.Ea=b[c++];a.I=b[c++];a.O=b[c++];a.N=b[c];return!0}
function ze(a,b){var c=a.N&b;b&15||(c>>=4);b=te[c];c=((a.I&12)>>2)+6;a.I&16&&c++;c+=((a.I&192)>>6)+1>>1;return 1E3/Math.round(b/c)}function ve(a,b){ib(a,"receiveByte("+ca(b)+"), status="+ca(a.Ea));return a.aa||a.Ea&2?!1:(a.X=b,a.Ea|=2,Jd(a.b,a.ka),!0)}l.Tb=function(a){null!=a&&(this.G="number"!=typeof a?a:this.G+String.fromCharCode(a));this.G&&(ve(this,this.G.charCodeAt(0))&&(this.G=this.G.substr(1)),this.G&&this.b&&Lc(this.b,this.la,ze(this,15)));return!0};
l.Rd=function(a,b){var c=this.X;E(this,a,null,b,"DATA",c);this.Ea&=-3;return c};l.Qd=function(a,b){var c=this.Ea;E(this,a,null,b,"STATUS",c);return c};
l.be=function(a,b,c){E(this,a,b,c,"DATA");this.ba=b;this.Ea&=-6;ib(this,"transmitByte("+ca(b)+")");if(19==b)this.aa=!0;else if(17==b)this.aa=!1;else if(this.L&&this.L.call(this.J,b),this.j)8==b?(this.j.value=this.j.value.slice(0,-1),0<this.C&&this.C--):(a=(a=oa[b])?"<"+a+">":String.fromCharCode(b),c=a.length,9==b?(b=this.ia||8,c=b-this.C%b,this.ia&&(a=ma("",c))):13==b&&(this.C=c=0,a="\n"),this.da&&!this.C&&c&&(a=String.fromCharCode(this.da)+a),this.j.value+=a,this.j.scrollTop=this.j.scrollHeight,
this.C+=c);else if(null!=this.w){if(10==b||1024<=this.w.length)this.g(this.w),this.w="";10!=b&&(this.w+=String.fromCharCode(b))}this.b&&Lc(this.b,this.ma,ze(this,240))};l.ae=function(a,b,c){E(this,a,b,c,"CONTROL");this.K?(this.O=b,this.O&64&&(this.K=!1)):(this.I=b,this.K=!0)};l.$d=function(a,b,c){E(this,a,b,c,"BAUDRATES");this.N=b};var we={0:re.prototype.Rd,1:re.prototype.Qd},xe={0:re.prototype.be,1:re.prototype.ae,2:re.prototype.$d};
Oa(function(){for(var a=D(document,"pc8080","serial"),b=0;b<a.length;b++){var c=a[b],d=B(c),d=new re(d);gb(d,c)}});function Ae(a){z.call(this,"Debugger",a,Ae);this.Wa=a.base||16;this.aa=this.ma=this.I=0;this.O=!1;this.j=-1;this.w=[];this.da={}}A(Ae);var Be={"||":0,"&&":1,"|":2,"^":3,"&":4,"!=":5,"==":5,">=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9};Ae.prototype.Pb=function(){return-1};Ae.prototype.Qb=function(){};
Ae.prototype.Hb=function(a,b,c){if(b)if(a){0>this.j&&this.w.length&&(this.j=0);if(0>this.j||a!=this.w[this.j])this.w.splice(0,0,a),this.j=0;this.j--}else this.O?a="end":a=this.w[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 Ce(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 De(a,b,c){var d;if(b){b=Ee(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=Fe(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++],x=p.length;k.length&&Be[p]<Be[k[k.length-1]]&&Ce(h,k,1);k.push(p);b=b.substr(q+x)}Ce(h,k)&&1==h.length||(f=!0);f?c&&a.g("error parsing '"+g+"' at character "+(g.length-b.length)):(d=h.pop(),c&&Ge(a,null,
d))}return d}function Ee(a,b){for(var c,d=/\{(.*?)\}/;(c=b.match(d))&&!(0<=c[1].indexOf("{"));){var e=De(a,c[1]);b=b.replace("{"+c[1]+"}",null!=e?He(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.ma}if(null==d)break;b=b.replace(c[0],d.toString())}return b}
function Fe(a,b,c,d){var e;null!=b?(e=a.Pb(b),0<=e?e=a.Qb(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 Ge(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 Ie(a,b){if(b)return Ge(a,b,a.da[b]);var c=0;for(b in a.da)Ge(a,b,a.da[b]),c++;return 0<c}
function He(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 Je(a){Ae.call(this,a);this.style=Ke;this.L=X();this.Va=X();this.ba=X();this.G=[];this.D=this.N=this.C=[];Le(this);this.ia=0;Me(this);this.va={};Ne(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(Je,Ae);
var Oe={"?":"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"},
Ke=8080,Pe="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(" "),Qe="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(" "),
Re="B C D E H L M A BC DE HL SP PC PS PSW".split(" "),Se=[[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=Je.prototype;
l.Qa=function(a,b,c,d){this.u=b;this.b=c;this.A=a;(a=oc(a,"messages"))&&Ne(this,a);this.Ga=Se;Rd(this,64,function(a){a:{var b=d.u.W,c=a[0],e=a=0,k=b.length;if(c){a=Te(Ue(d,c));if(-1===a){d.g("invalid address: "+c);break a}e=a>>>d.u.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.u.ha)+" %%"+t(p.F)+" "+u(p.Bb)+" "+
u(p.size)+" "+m),c!=ac&&(c=-1),m=0);a+=d.u.Ia;e++}}});F(this)};
l.pa=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.w.length-1&&(b=d.w[++d.j])):40==a.keyCode&&(0<d.j?b=d.w[--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.nb(a?1:0),kb(d,!1));return b}),!0}return!1};l.Ab=function(){this.ga&&this.ga.focus()};function Te(a){a=a&&a.F;null==a&&(a=-1);return a}l.Z=function(a,b){var c=255,d=Te(a);-1!==d&&(c=Bb(this.u,d),b&&Ve(a,b));return c};l.bb=function(a,b){var c=65535,d=Te(a);-1!==d&&(c=Cb(this.u,d),b&&Ve(a,b));return c};
l.ua=function(a,b,c){var d=Te(a);-1!==d&&(Db(this.u,d,b),c&&Ve(a,c),Ec(this.b,!0))};l.Kb=function(a,b,c){var d=Te(a);if(-1!==d){var e=this.u,f=d&e.u,g=(d&e.w)>>>e.ha;f!=e.u?e.W[g].Wb(f,b&65535,d):(e.W[g++].Cb(f,b&255,d),e.W[g&e.G].Cb(0,b>>8&255,d+1));c&&Ve(a,c);Ec(this.b,!0)}};function X(a){return{F:a,Pa:!1}}function vf(a){return[a.F,a.Pa]}function wf(a){return{F:a[0],Pa:a[1]}}
function Ue(a,b,c){var d;c=(c?a.L:a.Va).F;if(void 0!==b){d=b=Ee(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;c<a.G.length;c++){var f=a.G[c].Da[d];if(void 0!==f){d=f.o;void 0!==d&&(e=X(d));break}}if(d=e)return d;c=De(a,b,void 0)}null!=c&&(d=X(c));return d}function xf(a,b,c){c&&(c=c.match(/(['"])(.*?)\1/))&&(b.Id=a.Hb(b.Ec=c[2]))}function Ve(a,b){null!=a.F&&(a.F+=b||1)}function Z(a){return t(a,4)}
function yf(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 Ne(a,b){a.H=a;a.sa=a.Ld=536870912;a.ka=null;a.la=[];b=a.Hb(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.Pb=function(a,b){var c;a=a.toUpperCase();null==b?c=sa(Re,a):(c=sa(Re,a.substr(b,2)),0>c&&(c=sa(Re,a.substr(b,1))));return c};function zf(a,b){var c=0;a=a.Qb(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.Qb=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.oa;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 Af(a,b){b=Ee(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=a.Pb(b,c+1),0<=e&&(b=b.substr(0,c)+zf(a,e)+b.substr(c+1+Re[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=Ue(a,e))?(d=e+' "'+yf(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=Ue(a,e))?(Ve(d),d=e+
' "'+yf(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).F));this.sa&1073741824?this.la.push(a):this.ka&&a==this.ka||(this.ka=a,this.sa&-2147483648&&(this.qa(),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.fb+"."+(null!=d?"outPort":"inPort")+"("+u(c)+","+(f?f:"unknown")+(null!=d?","+ca(d):"")+")"+(null!=g?": "+ca(g):"")+(null!=e?" at "+Z(e):""))}
function Me(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.J||!a.J.length)for(a.J=Array(256),b=0;b<a.J.length;b++)a.J[b]=[b,0]}else a.K&&a.K.length&&a.g("instruction history buffer freed"),a.ea=0,a.K=[],a.J=[]}l.eb=function(a){if(!Bf(this))return!1;this.b.eb(a);return!0};
l.nb=function(a,b,c){if(!Bf(this))return!1;this.I=0;a||Kd(this)&&Ld(this,this.b.P,0);try{var d=this.b.nb(a);0<d&&(this.I+=d,Ic(this.b,d,!0),Fc(this.b,d),this.aa++)}catch(e){"number"!=typeof e&&(this.I=0,nb(this.b,e.stack||e.message))}!1!==c&&Ec(this.b);this.Ka(b||!1);return 0<this.I};l.qa=function(a){this.b&&this.b.qa(a)};l.Ka=function(a){void 0===a&&(a=!0);this.L=X(this.b.P);a&&1!=this.X?Cf(this):Df(this)};
function Bf(a){var b;if(b=a.b&&mb(a.b))b=a.b,b.B.wa?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!lb(a.b)?(a=a.b,a.B.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){Me(this);this.aa=this.ma=0;this.ka=null;this.I=0;this.L=X(this.b.P);this.B.ya=!1;Ef(this);a||this.Ka()};
l.save=function(){var a=new Vc(this);a.set(0,vf(this.L));a.set(1,vf(this.ba));a.set(2,[this.w,this.O,this.sa]);a.set(3,this.G);return a.data()};l.restore=function(a){var b=0;void 0!==a[2]&&(this.L=wf(a[b++]),this.ba=wf(a[b++]),this.w=a[b][0],"string"==typeof this.w&&(this.w=[this.w]),this.O=a[b][1],this.sa|=a[b][2]);a[3]&&(this.G=a[3]);return!0};l.start=function(a,b){this.X||this.g("running");this.B.ya=!0;this.qb=a;this.rb=b};
l.stop=function(a,b){if(this.B.ya){this.B.ya=!1;this.I=b-this.rb;if(!this.X){b="stopped";if(this.I){a-=this.qb;var c=0<a?Math.round(1E3*this.I/a):0;b+=" (";Kd(this)&&(b+=this.aa+" opcodes, ",this.ma-=this.aa,this.aa=0);b+=this.I+" 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.Ab();Ef(this,this.b.P)}};function Kd(a){return 1<a.D.length||!!a.ia}
function Ld(a,b,c){var d=a.b;if(0<c&&(a.ia&&!--a.ia||jc(a,b,1,a.D)))return!0;0<=c&&a.J.length&&(a.aa++,b=Bb(a.u,b),null!=b&&(a.J[b][1]++,b=a.K[a.ea],b.F=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.qa(!0)}function Wb(a,b,c){a.g("break on output to port "+u(b)+": "+t(c));a.qa(!0)}
function Le(a){var b,c;a.D=["bp"];if(a.N)for(b=1;b<a.N.length;b++){c=a.N[b];var d=a.u;kc(d.W[Te(c)>>>d.ha],!1)}a.N=["br"];if(a.C)for(b=1;b<a.C.length;b++)c=a.C[b],d=a.u,kc(d.W[Te(c)>>>d.ha],!0);a.C=["bw"];a.Xa=0}l.$a=function(a,b,c){var d=!0;c||Ff(this,a,b,!1,!0);if(a!=this.D){var e=Te(b);if(-1===e)this.g("invalid address: "+Z(b.F)),d=!1;else{var f=this.u;f.W[e>>>f.ha].$a(e&f.u,a==this.C)}}d&&(a.push(b),c?b.Pa=!0:(Gf(this,a,a.length-1,"set"),Me(this)));return d};
function Ff(a,b,c,d,e){var f=!1;c=Te(c);for(var g=1;g<b.length;g++){var h=b[g];if(c==Te(h)&&(!d||h.Pa)){f=!0;h.Pa||e||Gf(a,b,g,"cleared");b.splice(g,1);b!=a.D&&(d=a.u,kc(d.W[c>>>d.ha],b==a.C));h.Pa||Me(a);break}}return f}function Hf(a,b){for(var c=1;c<b.length;c++)Gf(a,b,c);return b.length-1}function Gf(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.F)+(d?" "+d:c.Ec?' "'+c.Ec+'"':""))}
function Ef(a,b){if(void 0!==b)jc(a,b,1,a.D,!0),a.X=0;else for(b=1;b<a.D.length;b++){var c=a.D[b];if(c.Pa){if(!Ff(a,a.D,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=Te(h),m=0;m<c;m++)if(b+m==k){var p,f=!0;h.Pa&&(Ff(a,d,h,!0),e=!0);if(p=h.Id){for(var f=!1,q=0;q<p.length;q++)if(!If(a,p[q],!0)){if(p[q].indexOf("if")){f=!0;break}for(var x=q+1;x<p.length&&p[x].indexOf("else");x++)q++;if(x==p.length){f=!0;break}}a.b.B.ya||(f=!0)}if(f){e||Gf(a,d,g,"hit");break}}}a.Xa--;return f}
function Jf(a,b,c,d){for(var e=X(b.F),f=a.Z(b,1),g=a.Ga[f],h="",k=(8086!=a.style?Pe:Qe)[g[0]],m=g.length-1,p=0,q,x=1;x<=m;x++){var v="";q=g[x];if(void 0!==q&&!(q&16384&&a.style==Ke)){var r=q&240;if(r){var y=q&15;y?p=y:q|=p;q&61440||(q|=1==x?8192:4096);if(r&32)a:{v=a;r=q;y=b;switch(r&15){case 1:y=t(v.Z(y,1),2);break;case 2:y=t(v.Z(y,1)<<24>>24,4);break;case 3:y=t(v.bb(y,2),4);break;default:v="imm("+u(r)+")";break a}8086==v.style&&r&64?y="["+y+"]":r&16||(y=(v.style==Ke?"$":"0x")+y);v=y}else r&16?(v=
(q&3840)>>8,r=Re[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.F)+" ";if(-1!==e.F&&-1!==b.F){do if(f+=t(a.Z(e,1),2),null==e.F)break;while(e.F!=b.F)}g+=ma(f,10);g=g+(q&32768?"*":" ")+ma(k,7);h&&(g+=" "+h);c&&(g=ma(g,40)+";"+c,g=a.b.B.ib?g+("cycles="+Gc(a.b).toString()+" cs="+t(a.b.wb)):g+(null!=d?"="+d.toString():""));return g}
function Kf(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 Lf(a,b){return Re[b]+"="+zf(a,b)+" "}function Mf(a){return Lf(a,7)+Lf(a,8)+Lf(a,9)+Lf(a,10)+Lf(a,11)+Kf(a,"IF")+Kf(a,"SF")+Kf(a,"ZF")+Kf(a,"AF")+Kf(a,"PF")+Kf(a,"CF")}l.xc=function(a,b){return a[0]>b[0]?1:a[0]<b[0]?-1:0};
function Nf(a,b,c){var d=[],e=Te(b)>>>0;for(b=0;b<a.G.length;b++){var f=a.G[b],g=f.F>>>0,h=f.Yd;if(e>=g&&e<g+h){e=pa(f.wc,[e-g],a.xc);0<=e?Of(a,b,e,d):c&&(e=~e,Of(a,b,e-1,d),Of(a,b,e,d));break}}return d}function Of(a,b,c,d){var e={},f=a.G[b].wc,g=0,h=null;0<=c&&c<f.length&&(g=f[c][0],h=f[c][1]);h&&(e=a.G[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 Pf(a,b){if("?"==b)a.g("frequency commands:"),a.g("\tclear\tclear all frequency counts");else{var c=0;if(a.J)if("clear"==b){for(b=0;b<a.J.length;b++)a.J[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.J.slice();d.sort(function(a,b){return b[1]-a[1]});var e=8086!=a.style?Pe:Qe;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 Qf(a,b){var c=b.match(/^\s*([A-Z_]?[A-Z0-9_]*)\s*(=?)\s*(.*)$/i);if(c){if(!c[1])return Ie(a)||a.g("no variables"),!0;if(!c[2])return Ie(a,c[1]);if(!c[3])return delete a.da[c[1]],!0;b=De(a,c[3]);return void 0!==b?(a.da[c[1]]=b,!0):!1}a.g("invalid assignment:"+b);return!1}
function Rf(a,b,c){var d=null;if(b=Ue(a,b,!0)){var e=Nf(a,b,!0);if(e.length){var f,g;e[0]&&(g="",(f=b.F-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.F)&&(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 Sf(a,b){switch(b[1]){case "8080":a.style=Ke;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.kb=c;break;case "start":a.b.xb=c;break;case "stop":a.b.lb=c;break;default:a.g("unknown cs option");return}void 0!==c&&Cc(a.b);a.g("checksums "+(a.b.B.ib?"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 Cf(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=De(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.oa=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(Mf(a));c&&(a.L=X(d.P),Df(a,Z(a.L.F)))}}function Tf(a,b){b=na(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(Af(a,c[2])):De(a,b,!0)}function Uf(a,b,c){var d="t"!=b;c=Fe(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.nb(e,d,!1)},function(){Ec(a.b);kb(a,!1)})}
function Df(a,b,c,d){if(b=Ue(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=Ue(a,c,!0);if(!d||d.F<b.F)return;e=d.F-b.F;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.I:null;var g=null!=f?"cycles":null,h=Nf(a,b),k=b.F;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=Jf(a,b,g,f);a.g(f);a.L=b;e-=b.F-k;c++}}}
l.Hb=function(a,b,c){if(b)if(a){0>this.j&&this.w.length&&(this.j=0);if(0>this.j||a!=this.w[this.j])this.w.splice(0,0,a),this.j=0;this.j--}else this.O?a="end":a=this.w[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 If(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.F)),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.F)+" "+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=Ue(a,f[1],!0);if(p)if(a.ba=
p,void 0===f[2])a.g("begin assemble at "+Z(p.F)),a.O=!0,Ec(a.b);else{var q;a.g("not supported yet");q=[];if(q.length){for(var x=0;x<q.length;x++)a.ua(p,q[x],1);a.g(Jf(a,a.ba))}}break;case "b":a:{var v=f[0],r=f[1],y=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+Hf(a,a.D);ha+=Hf(a,a.N);(ha+=Hf(a,a.C))||a.g("no breakpoints")}else if("n"==H)a.ia=Fe(a,r),a.g("break after "+a.ia+" instruction(s)");else if(void 0===r)a.g("missing breakpoint address");else{var C=X();if("*"!=r&&(C=Ue(a,r,!0),!C))break a;r=u(C.F);"c"==H?null==C.F?(Le(a),a.g("all breakpoints cleared")):Ff(a,a.D,C)||Ff(a,a.N,C)||Ff(a,a.C,C)||a.g("breakpoint missing: "+Z(C.F)):
"i"==H?a.g("breakpoint "+(Fb(a.u,C.F)?"enabled":"cleared")+": port "+r+" (input)"):"o"==H?a.g("breakpoint "+(Tb(a.u,C.F)?"enabled":"cleared")+": port "+r+" (output)"):null!=C.F&&(xf(a,C,y),"p"==H?a.$a(a.D,C):"r"==H?a.$a(a.N,C):"w"==H?a.$a(a.C,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],ua=f[2],Gb=f[3];if("?"==Y){var pb="";for(U in sb)a.va[U]&&(pb&&(pb+=","),pb+=U);pb+=",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");pb.length&&a.g("dump extension commands:\n\t"+pb)}else if("state"==Y){var We=Vf(a.A,!0);"console"==ua?console.log(We):(a.Ha&&(a.Ha.value=""),a.g(We))}else if("symbols"==Y)for(var ld=0;ld<a.G.length;ld++){var md=a.G[ld],qb;for(qb in md.Da)if("."!=qb.charAt(0)){var Xe=md.Da[qb].o;if(void 0!==Xe){var Ye=md.Da[qb].l;Ye&&(qb=Ye);a.g(Z(Xe)+" "+qb)}}}else{if("d"==
ea){for(U in sb)if(f[1]==U){var Ze=a.va[U];Ze?(f.shift(),f.shift(),Ze(f)):a.g("no dump registered for "+Y);break a}Y||(ea=a.tb||"db")}else a.tb=ea;if("dh"==ea){var $e=Y,af=ua,bf="",cf=0,va=a.ea,Ha=a.K;if(Ha.length){var ja=+$e||a.hb,Kb=+af||10;isNaN(ja)?ja=Kb:bf="more ";ja>Ha.length&&(a.g("note: only "+Ha.length+" available"),ja=Ha.length);va-=ja;0>va&&(null==Ha[Ha.length-1].F?(ja=va+ja,va=0):va+=Ha.length);var nd=[];"call"==af&&(Kb=1E5,nd=["CALL"]);for(void 0!==$e&&a.g(ja+" instructions earlier:");0<
Kb&&va!=a.ea;){var df=Ha[va++];if(null==df.F)break;var Lb=X(df.F),mg=ja--,ef=Jf(a,Lb,"history",mg);(!nd.length||0<=ef.indexOf(nd[0]))&&a.g(ef);Lb.Ob&&(va+=Lb.Ob,Kb-=Lb.Ob,ja-=Lb.Ob);va>=Ha.length&&(va=0);a.hb=ja;cf++;Kb--}}cf||(a.g("no "+bf+"history available"),a.hb=void 0)}else{var qc=Ue(a,Y);if(qc){var rc=0;ua&&("l"==ua.charAt(0)&&(ua=ua.substr(1)||Gb),rc=Fe(a,ua)>>>0,65536<rc&&(rc=65536));for(var Mb="",sc="dd"==ea?4:"dw"==ea?2:1,tc=sc*rc||128,ng=tc+15>>4||1;ng--&&0<tc;){var uc=0,od=0,Nb,pd="",
ff="",Y=Z(qc.F);for(Nb=16;0<Nb&&0<tc;Nb--){var vc=a.Z(qc,1),uc=uc|vc<<(od++<<3);od==sc&&(pd+=t(uc,2*sc),pd+=1==sc?9==Nb?"-":" ":" ",uc=od=0);ff+=32<=vc&&128>vc?String.fromCharCode(vc):".";tc--}Mb&&(Mb+="\n");Mb+=Y+" "+pd+(Nb?"":" "+ff)}Mb&&a.g(Mb);a.Va=qc}}}}break;case "e":if("else"==f[0])break;var wc=1,gf=255,hf=a.Z,jf=a.ua;"ew"==f[0]&&(wc=2,gf=65535,hf=a.bb,jf=a.Kb);var kf=wc<<1,lf=f[1];if(null==lf)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 xc=Ue(a,lf);if(xc)for(var yc=2;yc<f.length;yc++){var Ob=De(a,f[yc]);if(void 0===Ob){a.g("unrecognized value: "+f[yc]);break}Ob&~gf&&a.g("warning: "+t(Ob)+" exceeds "+wc+"-byte value");var og=hf.call(a,xc);a.g("changing "+Z(xc.F)+" from "+t(og,kf,!0)+" to "+t(Ob,kf,!0));jf.call(a,xc,Ob,wc)}}break;case "f":Pf(a,f[1]);break;case "g":a:{var mf=f[1],pg=b;if(void 0!==mf){var qd=Ue(a,mf,!0);if(!qd)break a;xf(a,qd,pg);a.$a(a.D,qd,!0)}a.eb(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var rd;if(a.B.ya)rd="halting",a.qa();else{if(lb(a,!0))break a;rd="already halted"}c||a.g(rd)}break;case "i":if("if"==f[0]){var sd;var Pb=b.substr(2),Pb=na(Pb);De(a,Pb)?(c||a.g("true: "+Pb),sd=!0):(c||a.g("false: "+Pb),sd=!1);sd||(d=!1);break}if("int"==f[0]){var zc;var qg=f[1];if(a.b.ta&512){var td=De(a,qg);null==td?zc=!1:(a.g("requesting interrupt level "+td),Jd(a.b,td),zc=!0)}else a.g("interrupts disabled (use rif=1 to enable)"),zc=!1;zc||(d=!1);break}var ud=f[1];if(ud&&"?"!=ud){var vd=
Fe(a,ud);if(void 0!==vd){var rg=Ib(a.u,vd);a.g(u(vd)+": "+ca(rg))}}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 sg=f[0];if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var wd=0,nf=X(),Qb=X(a.b.oa);for(a.g("stack trace for "+Z(Qb.F));10>wd;){for(var $a=null,tg=256;65536>Qb.F>>>0;){nf.F=a.bb(Qb,2);if(null==Qb.F||!tg--)break;for(var ug=a,Ac=nf,of=
null,Rb=Ac.F,pf=Rb,xd=1;6>=xd&&Rb;xd++){if(2<xd){Ac.F=Rb;var Bc=Jf(ug,Ac);if(0<=Bc.indexOf("CALL")){var qf=Bc.indexOf(" ");if(Rb+(Bc.indexOf(" ",qf+1)-qf-1)/2==pf){of=Bc;break}}}Rb--}Ac.F=pf;if($a=of)break}if(!$a||null==$a)break;var rf=null;if("ks"==sg){var sf=$a.match(/[0-9A-F]+$/);sf&&(rf=Rf(a,sf[0]))}$a=ma($a,50)+" ;"+(rf||"stack="+Z(Qb.F));a.g($a);wd++}wd||a.g("no return addresses found")}break;case "l":"ln"==f[0]&&Rf(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 yd=0;yd<a.la.length;yd++)a.g(a.la[yd]);a.la=[]}}var vg=0,Sb="";for(Ia in sb)if(!O||O==Ia){var wg=!!(a.sa&sb[Ia]);if(null===Ja||Ja==wg)Sb&&(Sb+=
","),++vg%10||(Sb+="\n\t"),"key"==Ia&&(Ia="keys"),Sb+=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")+(Sb||"none"));Me(a)}break;case "o":var zd=f[1],xg=f[2];if(zd&&"?"!=zd){var Ad=Fe(a,zd,"port #"),Bd=Fe(a,xg);void 0!==Ad&&void 0!==Bd&&(Vb(a.u,Ad,Bd),a.g(u(Ad)+": "+ca(Bd)))}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]){Tf(a,b.substr(5));break}var tf="pr"==f[0]?1:0,yg=1+tf;if(a.X)a.g("step in progress");else{var Cd=X(a.b.P);switch(a.Z(Cd)){case 205:a.X=yg,Ve(Cd,3)}a.X?(a.$a(a.D,Cd,!0),a.eb()||(a.A&&a.A.Ab(),a.X=0)):Uf(a,tf?"tr":"t")}break;case "r":if("reset"==b){a.A&&a.A.reset();break}Cf(a,f);break;case "s":Sf(a,f);break;case "t":Uf(a,f[0],f[1]);break;case "u":Df(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Qf(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.30.4 ("+a.b.Zd+",RELEASE"+
(ob?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(xa());break;case "?":if(f[1]){Tf(a,b.substr(1));break}var Dd="commands:",Ed;for(Ed in Oe)Dd+="\n"+ma(Ed,9)+Oe[Ed];Kd(a)||(Dd+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Dd);break;default:a.g("unknown command: "+b),d=!1}}}catch(uf){a.g("debugger error: "+(uf.stack||uf.message)),d=!1}return d}function Dc(a,b,c){b=a.Hb(b,c);for(var d in b)if(!If(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 Je(d);gb(d,c)}});
function Wf(a,b,c){z.call(this,"Computer",a,Wf,67108864);this.B.wa=!1;Xf(this,b);this.N=oc(this,"autoPower",a);this.w=0;this.da=a.busWidth||a.buswidth;this.A=Yf;this.K=null;this.J=this.aa=!1;this.ea=oc(this,"url")||"";(Math.random()+.1).toString(36);this.j=Zf(this);if(this.b=fb("CPU",this.id)){this.H=fb("Debugger",this.id);this.G=[];for(b=null;b=ub(this,"Video",b);)this.G.push(b);this.u=new wb({id:this.gb+".bus",busWidth:this.da},this.b,this.H);var d,e=db(this.id);if((this.D=fb("Panel",this.id))&&
this.D.Ha)for(b=0;b<e.length;b++)d=e[b],d.ja=this.D.ja,d.g=this.D.g,d.Ha=this.D.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.u,this.b,this.H);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.I=d:this.A=parseInt(d,10));var f;if(a=oc(this,"state")||(f=!0,a.state))b=this.O=a,f||(this.J=!0,this.A=Yf),this.A&&(this.L=new Vc(this,"1.30.4"),$f(this.L)?
b=null:delete this.L);!b&&this.A&&(b=ag(this))&&(this.J=!0);if(b){var g=this;ta(b,null,!0,function(a,b,c){c?(g.I=null,g.J=!1,g.ja("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&&bg(this,this.yb)}else w("Unable to find CPU component")}A(Wf);var Yf=0;function Xf(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 bg(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(){bg(a,b,c)});return}}b.call(a,c)}
function cg(a,b){var c=new Vc(a,"1.30.4","validate");if($f(c)&&dg(c)){var d=c.get("timestamp"),e=b?b.get("timestamp"):"unknown";d!=e&&(a.ja("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}l=Wf.prototype;
l.yb=function(a){void 0===a&&(a=this.A||(this.K?1:Yf));if(!this.w){this.w++;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>Yf){if($f(d,this.K)){this.C=new Vc(this,"1.30.4","failsafe");$f(this.C)&&(eg(this,d),a=2,fg(this.C));this.C.set("timestamp",ra());gg(this.C);var e=this.A&&!this.J;if(1==a||ya("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=dg(d)){var f=d.get("code"),g=d.get("data");f&&("ok"==f?$f(d,g):("error"==
f&&"no machine state"!=g?(this.ja("Error: "+g),"unable to verify user"==g&&(Ca("user",""),this.j=null)):this.g(f+": "+g),fg(d),$f(d)?(c=dg(d),e=!0):c=!1))}e&&cg(this,c?d:null)}else 2==a&&d.clear()}else cg(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=hg(this,g,d,b,c));b=[d,a,c];-1!=a?bg(this,this.zc,b):this.zc(b)}};
function hg(a,b,c,d,e){if(!b.B.wa){b.B.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=Yf,window&&window.location.reload()):a.X=!0,b.Fa(null),e=!1)}if(!d&&b.hc)for(a=b.hc.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
l.zc=function(a){var b=a[0],c=0>a[1];a=a[2];this.ga=!0;this.B.wa=!0;var d=this.M.power;d&&(d.textContent="Shutdown");this.b&&(hg(this,this.b,b,c,a),this.b.ub());this.X&&(eg(this,b),b.clear());!c&&this.C&&(this.C.clear(),delete this.C);this.w=0};
function eg(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 Vf(a,b,c){var d,e="none";if(a.w)return null;a.w--;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.qa(),d=a.b.Ja(b,c),"object"===typeof d&&f.set(a.b.id,d),c&&(a.b.B.wa=!1,!1===d&&(e=null)));for(var h=db(a.id),k=0;k<h.length;k++){var m=h[k];m.B.wa&&(m.Ja&&(d=m.Ja(b,c),"object"===typeof d&&f.set(m.id,d)),c&&(m.B.wa=!1,!1===
d&&(e=null)))}e&&(c?(h=d=!1,b?(a.j&&ig(a,a.j,f.toString()),gg(g)&&gg(f)||(e=null,d=h=!0)):a.A&&(d=!0,h=3==a.A),d&&f.clear(h)):e=f.toString());c&&(a.B.wa=!1,b=a.M.power)&&(b.textContent="Power");a.w=0;return e}l.reset=function(){this.u&&this.u.reset&&(ib(this,"Resetting "+this.u.type),this.u.reset());for(var a=db(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.u&&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.pa=function(a,b,c){var d=this;switch(b){case "power":return this.M[b]=c,c.onclick=function(){d.w||(d.B.wa?Vf(d,!1,!0):bg(d,d.yb))},!0;case "reset":return this.M[b]=c,c.onclick=function(){if(d.B.wa&&!d.w)if(d.A&&!d.I){var a=ya("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");Vf(d,a,!0);!a&&d.O?window&&window.location.reload():d.yb(Yf)}else d.reset(),d.b&&d.b.ub()},!0;case "save":if(ga())c.parentNode.removeChild(c);else return this.M[b]=
c,c.onclick=function(){var a=Zf(d,!0);if(a){var b=!!(d.A&&!d.I||d.O),c=Vf(d,b);b?ig(d,a,c):d.ja("Resume disabled, machine state not saved")}},!0}return!1};
function Zf(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=jg(a,c))||a.ja("The user ID is invalid.")):b&&a.ja("Browser local storage is not available"));return c}
function jg(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 ag(a){var b=null;a.j&&(b=ia()+"/api/v1/user?req=load&user="+a.j+"&state="+kg(a,"1.30.4"));return b}
function ig(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=kg(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.ja("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.ja(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.Ab=function(a){if(this.G.length){var b=0,c=0;!a&&window&&(b=window.scrollX,c=window.scrollY);var d=this.G[0];d.ka&&d.ka.focus();!a&&window&&window.scrollTo(b,c)}};l.Ka=function(a){this.b&&this.b.Ka(a);this.D&&this.D.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 Wf(g,d,!0);gb(g,f);g.N&&bg(g,g.yb)}});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.B.wa&&c.yb(-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.B.wa&&Vf(c,!(!c.A||c.I),!0)}});function Vc(a,b,c){this.id=a.id;this.key=kg(a,b,c);this.H=a.H;fg(this,a.Od)}function kg(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){fg(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 fg(a,b){a[a.id]={};b&&a.set("parms",b);a.b=!1}function gg(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 dg(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){w(c.message||c),b=!1}return b}function $f(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 lg=0;
function zg(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)):Ag(h,a,b,c,d,e,f)})}
function Ag(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?Bg(a,f,h):h(a,null):g("no data"+(b?" for file: "+b:""),
null)}
function Bg(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);Bg(a,b,c)}})}else c(a,null)}
function Cg(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&&(--lg||Ra(!0));k=!1}var g,h,k=!0;lg++;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?zg(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,--lg||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),--lg||Ra(!0)):f("invalid machine element: "+
a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser")):f(d)}):f(d)};"<"!=b.charAt(0)?zg(b,a,d,!0,e,m):Ag(b,null,a,d,!1,e,m)}else f("missing machine element: "+a)}catch(x){f(x.message)}return k}window.embedPC8080=function(a,b,c,d){Ra(!1);return Cg(a,b,c,d)};window.enableEvents=Ra;window.sendEvent=Ta;})();