From 59c3ddc83b106f1af6588f818b2ba022ad8c2a50 Mon Sep 17 00:00:00 2001 From: Jeff Parsons Date: Tue, 3 May 2016 16:24:41 -0700 Subject: [PATCH] Supoprt for overlay colors --- modules/pc8080/lib/video.js | 60 +++-- versions/pc8080/1.22.0/pc8080-dbg.js | 386 +++++++++++++-------------- versions/pc8080/1.22.0/pc8080.js | 246 ++++++++--------- 3 files changed, 353 insertions(+), 339 deletions(-) diff --git a/modules/pc8080/lib/video.js b/modules/pc8080/lib/video.js index fa99f5301..c1a69f2ab 100644 --- a/modules/pc8080/lib/video.js +++ b/modules/pc8080/lib/video.js @@ -75,7 +75,7 @@ if (NODE) { * bufferRotate is an alternative to screenRotate; you may set one or the other (but not both) to -90 to * enable different approaches to counter-clockwise 90-degree image rotation. screenRotate uses canvas * transformation methods (translate(), rotate(), and scale()), while bufferRotate inverts the dimensions - * of the off-screen buffer and then relies on setPixel() to rotate the data into it. + * of the off-screen buffer and then relies on setPixel() to "rotate" the data into it. * * @constructor * @extends Component @@ -128,7 +128,7 @@ function Video(parmsVideo, canvas, context, textarea, container) */ var fSmoothing = parmsVideo['smoothing']; var sSmoothing = Component.parmsURL['smoothing']; - if (sSmoothing) fSmoothing = (sSmoothing == "true")? true : false; + if (sSmoothing) fSmoothing = (sSmoothing == "true"); if (fSmoothing != null) { for (i = 0; i < asWebPrefixes.length; i++) { sEvent = asWebPrefixes[i]; @@ -208,6 +208,12 @@ function Video(parmsVideo, canvas, context, textarea, container) Component.subclass(Video); +Video.COLORS = { + OVERLAY_TOP: 0, + OVERLAY_BOTTOM: 1, + OVERLAY_TOTAL: 2 +}; + /** * initBus(cmp, bus, cpu, dbg) * @@ -399,36 +405,34 @@ Video.prototype.initCache = function() /** * initColors() * + * This creates an array of nColors, with additional OVERLAY_TOTAL colors tacked on to the end of the array. + * * @this {Video} */ Video.prototype.initColors = function() { - this.aRGB = [ - [0x00, 0x00, 0x00, 0xff], // black - [0xff, 0xff, 0xff, 0xff] // white - ]; + var rgbBlack = [0x00, 0x00, 0x00, 0xff]; + var rgbWhite = [0xff, 0xff, 0xff, 0xff]; + var rgbGreen = [0x00, 0xff, 0x00, 0xff]; + var rgbYellow = [0xff, 0xff, 0x00, 0xff]; + this.nColors = (1 << this.nBitsPerPixel); + this.aRGB = new Array(this.nColors + Video.COLORS.OVERLAY_TOTAL); + this.aRGB[0] = rgbBlack; + this.aRGB[1] = rgbWhite; + this.aRGB[this.nColors + Video.COLORS.OVERLAY_TOP] = rgbYellow; + this.aRGB[this.nColors + Video.COLORS.OVERLAY_BOTTOM] = rgbGreen; }; /** - * getColors() - * - * @this {Video} - */ -Video.prototype.getColors = function() -{ - return this.aRGB; -}; - -/** - * setPixel(imageBuffer, x, y, rgb) + * setPixel(imageBuffer, x, y, bPixel) * * @this {Video} * @param {Object} imageBuffer * @param {number} x * @param {number} y - * @param {Array.} rgb is a 4-element array containing the red, green, blue and alpha values + * @param {number} bPixel (ie, an index into aRGB) */ -Video.prototype.setPixel = function(imageBuffer, x, y, rgb) +Video.prototype.setPixel = function(imageBuffer, x, y, bPixel) { var index; if (!this.rotateBuffer) { @@ -436,6 +440,15 @@ Video.prototype.setPixel = function(imageBuffer, x, y, rgb) } else { index = (imageBuffer.height - x - 1) * imageBuffer.width + y; } + if (bPixel) { + if (x >= 208 && x < 236) { + bPixel = this.nColors + Video.COLORS.OVERLAY_TOP; + } + else if (x >= 28 && x < 72) { + bPixel = this.nColors + Video.COLORS.OVERLAY_BOTTOM; + } + } + var rgb = this.aRGB[bPixel]; index *= rgb.length; imageBuffer.data[index] = rgb[0]; imageBuffer.data[index+1] = rgb[1]; @@ -488,7 +501,6 @@ Video.prototype.updateScreen = function(n) var iCell = 0; var nPixelShift = 1; - var aPixelColors = this.getColors(); var xBuffer = 0, yBuffer = 0; var xDirty = this.cxBuffer, xMaxDirty = 0, yDirty = this.cyBuffer, yMaxDirty = 0; @@ -509,11 +521,12 @@ Video.prototype.updateScreen = function(n) } else { this.aCellCache[iCell] = data; var nShift = nShiftInit; - if (nShiftInit) data = ((data >> 8) | ((data & 0xff) << 8)); + if (nShift) data = ((data >> 8) | ((data & 0xff) << 8)); if (xBuffer < xDirty) xDirty = xBuffer; - for (var iPixel = 0; iPixel < this.nPixelsPerCell; iPixel++) { + var cPixels = this.nPixelsPerCell; + while (cPixels--) { var bPixel = (data >> nShift) & nMask; - this.setPixel(this.imageBuffer, xBuffer++, yBuffer, aPixelColors[bPixel]); + this.setPixel(this.imageBuffer, xBuffer++, yBuffer, bPixel); nShift += nShiftPixel; } if (xBuffer > xMaxDirty) xMaxDirty = xBuffer; @@ -546,6 +559,7 @@ Video.prototype.updateScreen = function(n) * this.contextBuffer.putImageData(this.imageBuffer, 0, 0); */ var xDirtyOrig = xDirty, cxDirtyOrig = cxDirty; + //noinspection JSSuspiciousNameCombination xDirty = yDirty; cxDirty = cyDirty; yDirty = this.cxBuffer - (xDirtyOrig + cxDirtyOrig); diff --git a/versions/pc8080/1.22.0/pc8080-dbg.js b/versions/pc8080/1.22.0/pc8080-dbg.js index f0e857e45..a5ebe96c4 100644 --- a/versions/pc8080/1.22.0/pc8080-dbg.js +++ b/versions/pc8080/1.22.0/pc8080-dbg.js @@ -1,210 +1,210 @@ (function(){var m;function aa(a,b){var c;if(a){b||(b=16);if("$"==a.charAt(0))b=16,a=a.substr(1);else if("0x"==a.substr(0,2))b=16,a=a.substr(2);else{var d=a.charAt(a.length-1).toLowerCase();"h"==d?(b=16,d=null):"."==d&&(b=10,d=null);null==d&&(a=a.substr(0,a.length-1))}var e,d=a,f=b;(f&&10!=f?16==f?null!==d.match(/^[0-9a-f]+$/i):2==f&&null!==d.match(/^[01]+$/i):null!==d.match(/^[0-9]+$/))&&!isNaN(e=parseInt(a,b))&&(c=e|0)}return c} function q(a,b){var c="";void 0===b?b=8:8=d?48:55),c=String.fromCharCode(d)+c;a>>=4}return c}function r(a){return"0x"+q(a,4)}function ba(a,b){var c=a,d=a.lastIndexOf("/");0<=d&&(c=a.substr(d+1));d=c.indexOf("&");0":">",'"':""","'":"'"};function fa(a){return a.replace(/[&<>"']/g,function(a){return ea[a]})}function ga(a,b){return(a+" ").slice(0,b)}function ha(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")} -function ia(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a>1,g;g=c(b,a[h]);0a?"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 ma(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=this.J?10:20>=this.J?12:24>=this.J?14:15;this.ua=1<>2;this.B=this.ua-1;this.L=this.W/this.ua|0;this.K=this.L-1;this.w=[];this.u=[];this.G=this.H=!1;this.aa=[];this.ba=[];a=new D;rb(a,this.F);this.U=Array(this.L);for(b=0;b>>a.ea;0f&&(k=f);if(g&&g.size){if(g.type==d){if(e+f<=g.D)return g.nb+=g.D-e,g.D=e,!0;if(e>=g.D+g.nb){k=g.size-(e-l);k>f&&(k=f);g.nb=e-g.D+k;e=l+a.ua;f-=k;h++;continue}}return tb(1,e,f)}e=new D(e,k,a.ua,d);rb(e,a.F,g);a.U[h++]=e;e=l+a.ua;f-=k}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+ub[d]+" at "+r(b)),!0):tb(2,b,c)}m.X=function(a){return this.U[(a&this.C)>>>this.ea].ab(a&this.B,a)}; -function vb(a,b){return a.U[(b&a.C)>>>a.ea].lb(b&a.B,b)}m.Fa=function(a){var b=a&this.B,c=(a&this.C)>>>this.ea;return b!=this.B?this.U[c].Tb(b,a):this.U[c++].ab(b,a)|this.U[c&this.K].ab(0,a+1)<<8};function wb(a,b){var c=b&a.B,d=(b&a.C)>>>a.ea;return c!=a.B?a.U[d].Bb(c,b):a.U[d++].lb(c,b)|a.U[d&a.K].lb(0,b+1)<<8}m.ga=function(a,b){this.U[(a&this.C)>>>this.ea].cb(a&this.B,b&255,a)};function xb(a,b,c){a.U[(b&a.C)>>>a.ea].ob(b&a.B,c&255,b)} -m.ub=function(a,b){var c=a&this.B,d=(a&this.C)>>>this.ea;c!=this.B?this.U[d].Vb(c,b&65535,a):(this.U[d++].cb(c,b&255,a),this.U[d&this.K].cb(0,b>>8&255,a+1))};function yb(a,b){if(void 0===b)return a.G=!a.G,a.G;void 0===a.w[b]&&(a.w[b]=[null,!1]);a.w[b][1]=!a.w[b][1];return a.w[b][1]} -function zb(a,b,c){for(var d=1,e=0,f=0;0>>=f)&l;if(void 0!==h){if(h[0])h[0](b,l,d);a.F&&a.H!=h[1]&&Lb(a.F,b,l)}else a.F&&(eb(a.F,a,b,l,d),a.H&&Lb(a.F,b,l));f+=g<<3;b+=g;e-=g}}function tb(a,b,c){t("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Mb;if(lb){var Nb=new ArrayBuffer(2);(new DataView(Nb)).setUint16(0,256,!0);Mb=256===(new Uint16Array(Nb))[0]}else Mb=!1;var Ob=Mb; -function D(a,b,c,d){this.id=Pb+=2;this.b=null;this.D=a;this.nb=b;this.size=c||0;this.type=d||Qb;this.w=d==Rb;rb(this);this.ya=this.Lb=!1;if(c)if(lb)this.G=new ArrayBuffer(c),this.H=new DataView(this.G,0,c),this.B=new Uint8Array(this.G,0,c),this.K=new Uint16Array(this.G,0,c>>1),this.b=new Int32Array(this.G,0,c>>2),Sb(this,Ob?Tb:Ub);else{this.b=Array(c>>2);for(a=0;a>2),b=0;b>8,c)},fa:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},ra: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},xa:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<>8);this.ya=!0},aa:function(a,b){if(this.F&&null!=this.D){var c=this.F;Zb(c,this.D+a,1,c.aa)&&c.da(!0)}return this.lb(a,b)},la:function(a,b){if(this.F&&null!=this.D){var c=this.F;Zb(c,this.D+a,2,c.aa)&&c.da(!0)}return this.Bb(a,b)},sa:function(a,b,c){if(this.F&&null!=this.D){var d=this.F;Zb(d,this.D+a,1,d.H)&&d.da(!0)}this.w?this.C(a,b,c):this.ob(a,b,c)},Ha:function(a, -b,c){if(this.F&&null!=this.D){var d=this.F;Zb(d,this.D+a,2,d.H)&&d.da(!0)}this.w?this.C(a,b,c):this.Cb(a,b,c)},Y:function(a){return this.B[a]},ba:function(a){return this.B[a]},ka:function(a){return this.H.getUint16(a,!0)},pa:function(a){return a&1?this.B[a]|this.B[a+1]<<8:this.K[a>>1]},Ea:function(a,b){this.B[a]=b;this.ya=!0},wa:function(a,b){this.B[a]=b;this.ya=!0},Ca:function(a,b){this.H.setUint16(a,b,!0);this.ya=!0},eb:function(a,b){a&1?(this.B[a]=b,this.B[a+1]=b>>8):this.K[a>>1]=b;this.ya=!0}}; -function rb(a,b,c){a.F=b;a.T=a.u=0;c&&((a.T=c.T)&&Yb(a,Xb,!1),(a.u=c.u)&&Wb(a,Xb,!1))}function $b(a,b){b?0===--a.u&&(a.cb=a.w?a.C:a.ob,a.Vb=a.w?a.J:a.Cb):0===--a.T&&(a.ab=a.lb,a.Tb=a.Bb)}function Wb(a,b,c){c&&a.u||(a.cb=!a.w&&b[2]||a.C,a.Vb=!a.w&&b[3]||a.J);if(c||void 0===c)a.ob=b[2]||a.C,a.Cb=b[3]||a.J}function Yb(a,b,c){c&&a.T||(a.ab=b[0]||a.L,a.Tb=b[1]||a.W);if(c||void 0===c)a.lb=b[0]||a.L,a.Bb=b[1]||a.W}function Sb(a,b){b||(b=ac);Yb(a,b,void 0);Wb(a,b,void 0)} -var ac=[],Vb=[D.prototype.fa,D.prototype.ra,D.prototype.xa,D.prototype.Ia],Xb=[D.prototype.aa,D.prototype.la,D.prototype.sa,D.prototype.Ha];if(lb)var Ub=[D.prototype.Y,D.prototype.ka,D.prototype.Ea,D.prototype.Ca],Tb=[D.prototype.ba,D.prototype.pa,D.prototype.wa,D.prototype.eb]; -function bc(a,b){w.call(this,"CPU",a,bc,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.$a=c;this.i.tb=0;this.i.Na=d;this.i.yb=Math.round(this.i.$a/1E4)/100;this.i.La=this.i.yb*this.i.Na;this.A.ma=!1;this.A.xb=!1;this.A.Kb=a.autoStart;this.A.Mb=!1;this.A.Ra=!1;this.i.fb=this.i.Xa=0;this.i.gb=a.csStart;this.i.Wa=a.csInterval;this.i.Ya=a.csStop;this.aa=this.Oa.bind(this);C(this)}Wa(bc);var cc=["power","reset"];m=bc.prototype; -m.Ga=function(a,b,c,d){this.w=a;this.B=b;this.F=d;for(b=0;b=a.i.Xa&&(a.i.Xa+=a.i.Wa,c=!0);0<=a.i.Ya&&a.i.Ya<=vc(a)&&(a.i.Wa=a.i.Ya=-1,qc(a),a.da(),c=!0);c&&a.g(vc(a)+" cycles: checksum="+q(a.i.fb))}} -m.oa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.T[b]=c;a=!0;break;case "run":this.T[b]=c;c.onclick=function(){var a;if(a=d.w)if(a=d.w,a.A.ia)a=!0;else{var b=null,c,g=Za(a.id);for(c=0;cc&&(c=2);var d=1;b&&1a.i.Ka/a.i.La?b=1:d=!0;a.i.Na=b;b=a.i.yb*a.i.Na;if(a.i.La!=b){a.i.La=b;b=a.i.La.toFixed(2)+"Mhz";var e=a.T.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.w&&a.w.mb()}xc(a,a.G);a.G=0;a.i.Va=ja();a.i.Ma=0;yc(a);return d} -m.Oa=function(a){if(hb(this,!0)){if(!this.A.ma){wc(this);this.w&&this.w.start(this.i.Va,vc(this));this.A.ma=!0;this.A.xb=!0;this.K&&this.K.start();var b=this.T.run;b&&(b.textContent="Halt");this.w&&(this.w.va(!0),a&&this.w.mb(!0))}this.i.Ab>=this.i.$a&&yc(this,!0);this.i.jb=0;this.i.sb=ja();this.i.Ma&&(a=this.i.sb-this.i.Ma,a>this.i.Pb&&(this.i.Va+=a,this.i.Va>this.i.sb&&(this.i.Va=this.i.sb)));try{do{var c=this.A.Ra?1:this.i.hc;try{this.bb(c)}catch(e){if("number"!=typeof e)throw e;}var d=this.C- -this.b;this.G+=d;this.i.jb+=d;xc(this,0,!0);uc(this,d);this.i.ib-=d;0>=this.i.ib&&(this.i.ib+=this.i.Rb,this.w&&zc(this.w,this.i.tb++),this.i.tb>this.Ea&&(this.i.tb=0));this.i.hb-=d;0>=this.i.hb&&(this.i.hb+=this.i.Qb,this.w&&this.w.va());this.i.Za-=d;if(0>=this.i.Za){this.i.Za+=this.i.zb;break}}while(this.A.ma)}catch(e){this.da();sc(this);this.w&&this.w.stop(ja(),vc(this));hb(this,!1);kb(this,e.stack||e.message);return}c=setTimeout;d=this.aa;this.i.Ma=ja();a=this.i.Pb;this.i.jb&&(a=Math.round(a* -this.i.jb/this.i.zb));a-=this.i.Ma-this.i.sb;if(b=this.i.Ma-this.i.Va)this.i.Ka=Math.round(this.G/(10*b))/100,864E5<=b&&(this.H=0,wc(this));if(0>a||this.i.Ka>8&255;a.O=b&255}function Kc(a){return a.P<<8|a.R}function Lc(a,b){a.P=b>>8&255;a.R=b&255}function I(a){return a.S<<8|a.V} -function Mc(a,b){a.S=b>>8&255;a.V=b&255}function F(a,b){a.M=b&65535}function Nc(a){return a.I&256?1:0}function Oc(a){return mb[a.Z&255]?4:0}function Pc(a){return(a.Z^a.ja)&16?16:0}function Qc(a){return a.I&255?0:64}function Rc(a){return a.Z&128?128:0}function Gc(a){return a.qa&-214|Rc(a)|Qc(a)|Pc(a)|Oc(a)|Nc(a)}function Ec(a,b){a.I=a.Z=a.ja=0;b&1&&(a.I|=256);b&4||(a.Z|=1);b&16&&(a.ja|=16);b&64||(a.I|=255);b&128&&(a.Z^=192);a.qa=a.qa&-513|b&512|2} -function Sc(a,b){a.ja=a.j^b;return a.Z=(a.I=a.j+b)&255}function Tc(a,b){a.ja=a.j^b;return a.Z=(a.I=a.j+b+(a.I&256?1:0))&255}function Uc(a,b){a.I=a.Z=a.ja=a.j&b;(a.j|b)&8&&(a.ja^=16);return a.I}function ld(a,b){a.ja=b^255;b=a.Z=b+255&255;a.I=a.I&-256|b;return b}function md(a,b){a.ja=b;b=a.Z=b+1&255;a.I=a.I&-256|b;return b}function nd(a,b){return a.Z=a.I=a.ja=a.j|b}function J(a,b){b^=255;a.ja=a.j^b;return a.Z=(a.I=a.j+b+1^256)&255} -function od(a,b){b^=255;a.ja=a.j^b;return a.Z=(a.I=a.j+b+(a.I&256?0:1)^256)&255}function pd(a,b){return a.Z=a.I=a.ja=a.j^b}m.X=function(a){return this.B.X(a)};m.ga=function(a,b){this.B.ga(a,b)};function L(a){var b=a.X(a.M);F(a,a.M+1);return b}function M(a){var b=a.B.Fa(a.M);F(a,a.M+2);return b}function N(a){var b=a.B.Fa(a.ca);a.ca=a.ca+2&65535;return b}function Q(a,b){a.ca=a.ca-2&65535;a.B.ub(a.ca,b)} -function R(a,b,c,d){d=d||2;a.T[b]&&(void 0===c&&(kb(a,"Value for "+b+" is invalid"),a.da()),c=!a.A.ma||a.A.Mb?q(c,d):"--------".substr(0,d),a.T[b].textContent!=c&&(a.T[b].textContent=c))} -m.va=function(a){this.Y&&(a||!this.A.ma||this.A.Mb)&&(R(this,"A",this.j),R(this,"B",this.N),R(this,"C",this.O),R(this,"BC",Ic(this),4),R(this,"D",this.P),R(this,"E",this.R),R(this,"DE",Kc(this),4),R(this,"H",this.S),R(this,"L",this.V),R(this,"HL",I(this),4),R(this,"SP",this.ca,4),R(this,"PC",this.M,4),a=Gc(this),R(this,"PS",a,4),R(this,"IF",a&512?1:0,1),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.T.speed)a.textContent= +function ea(a,b){return-1!==a.indexOf(b,a.length-b.length)}var fa={"&":"&","<":"<",">":">",'"':""","'":"'"};function ga(a){return a.replace(/[&<>"']/g,function(a){return fa[a]})}function ha(a,b){return(a+" ").slice(0,b)}function ia(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")} +function ja(a,b,c){var d=0,e=a.length,f=0;for(void 0===c&&(c=function(a,b){return a>b?1:a>1,g;g=c(b,a[h]);0a?"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 na(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=this.J?10:20>=this.J?12:24>=this.J?14:15;this.ua=1<>2;this.B=this.ua-1;this.L=this.W/this.ua|0;this.K=this.L-1;this.w=[];this.u=[];this.G=this.H=!1;this.aa=[];this.ba=[];a=new E;qb(a,this.F);this.U=Array(this.L);for(b=0;b>>a.ea;0f&&(k=f);if(g&&g.size){if(g.type==d){if(e+f<=g.D)return g.nb+=g.D-e,g.D=e,!0;if(e>=g.D+g.nb){k=g.size-(e-l);k>f&&(k=f);g.nb=e-g.D+k;e=l+a.ua;f-=k;h++;continue}}return sb(1,e,f)}e=new E(e,k,a.ua,d);qb(e,a.F,g);a.U[h++]=e;e=l+a.ua;f-=k}return 0>=f?(a.status(Math.floor(c/1024)+"Kb "+tb[d]+" at "+r(b)),!0):sb(2,b,c)}m.X=function(a){return this.U[(a&this.C)>>>this.ea].ab(a&this.B,a)}; +function ub(a,b){return a.U[(b&a.C)>>>a.ea].lb(b&a.B,b)}m.Ha=function(a){var b=a&this.B,c=(a&this.C)>>>this.ea;return b!=this.B?this.U[c].Tb(b,a):this.U[c++].ab(b,a)|this.U[c&this.K].ab(0,a+1)<<8};function vb(a,b){var c=b&a.B,d=(b&a.C)>>>a.ea;return c!=a.B?a.U[d].Cb(c,b):a.U[d++].lb(c,b)|a.U[d&a.K].lb(0,b+1)<<8}m.ga=function(a,b){this.U[(a&this.C)>>>this.ea].cb(a&this.B,b&255,a)};function wb(a,b,c){a.U[(b&a.C)>>>a.ea].ob(b&a.B,c&255,b)} +m.vb=function(a,b){var c=a&this.B,d=(a&this.C)>>>this.ea;c!=this.B?this.U[d].Vb(c,b&65535,a):(this.U[d++].cb(c,b&255,a),this.U[d&this.K].cb(0,b>>8&255,a+1))};function xb(a,b){if(void 0===b)return a.G=!a.G,a.G;void 0===a.w[b]&&(a.w[b]=[null,!1]);a.w[b][1]=!a.w[b][1];return a.w[b][1]} +function yb(a,b,c){for(var d=1,e=0,f=0;0>>=f)&l;if(void 0!==h){if(h[0])h[0](b,l,d);a.F&&a.H!=h[1]&&Kb(a.F,b,l)}else a.F&&(db(a.F,a,b,l,d),a.H&&Kb(a.F,b,l));f+=g<<3;b+=g;e-=g}}function sb(a,b,c){t("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Lb;if(kb){var Mb=new ArrayBuffer(2);(new DataView(Mb)).setUint16(0,256,!0);Lb=256===(new Uint16Array(Mb))[0]}else Lb=!1;var Nb=Lb; +function E(a,b,c,d){this.id=Ob+=2;this.b=null;this.D=a;this.nb=b;this.size=c||0;this.type=d||Pb;this.w=d==Qb;qb(this);this.ya=this.Lb=!1;if(c)if(kb)this.G=new ArrayBuffer(c),this.H=new DataView(this.G,0,c),this.B=new Uint8Array(this.G,0,c),this.K=new Uint16Array(this.G,0,c>>1),this.b=new Int32Array(this.G,0,c>>2),Rb(this,Nb?Sb:Tb);else{this.b=Array(c>>2);for(a=0;a>2),b=0;b>8,c)},fa:function(a){return this.b[a>>2]>>>((a&3)<<3)&255},qa: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},xa:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<>8);this.ya=!0},aa:function(a,b){if(this.F&&null!=this.D){var c=this.F;Yb(c,this.D+a,1,c.aa)&&c.da(!0)}return this.lb(a,b)},ia:function(a,b){if(this.F&&null!=this.D){var c=this.F;Yb(c,this.D+a,2,c.aa)&&c.da(!0)}return this.Cb(a,b)},sa:function(a,b,c){if(this.F&&null!=this.D){var d=this.F;Yb(d,this.D+a,1,d.H)&&d.da(!0)}this.w?this.C(a,b,c):this.ob(a,b,c)},Fa:function(a, +b,c){if(this.F&&null!=this.D){var d=this.F;Yb(d,this.D+a,2,d.H)&&d.da(!0)}this.w?this.C(a,b,c):this.Db(a,b,c)},Y:function(a){return this.B[a]},ba:function(a){return this.B[a]},ha:function(a){return this.H.getUint16(a,!0)},oa:function(a){return a&1?this.B[a]|this.B[a+1]<<8:this.K[a>>1]},Ea:function(a,b){this.B[a]=b;this.ya=!0},wa:function(a,b){this.B[a]=b;this.ya=!0},Ca:function(a,b){this.H.setUint16(a,b,!0);this.ya=!0},eb:function(a,b){a&1?(this.B[a]=b,this.B[a+1]=b>>8):this.K[a>>1]=b;this.ya=!0}}; +function qb(a,b,c){a.F=b;a.T=a.u=0;c&&((a.T=c.T)&&Xb(a,Wb,!1),(a.u=c.u)&&Vb(a,Wb,!1))}function Zb(a,b){b?0===--a.u&&(a.cb=a.w?a.C:a.ob,a.Vb=a.w?a.J:a.Db):0===--a.T&&(a.ab=a.lb,a.Tb=a.Cb)}function Vb(a,b,c){c&&a.u||(a.cb=!a.w&&b[2]||a.C,a.Vb=!a.w&&b[3]||a.J);if(c||void 0===c)a.ob=b[2]||a.C,a.Db=b[3]||a.J}function Xb(a,b,c){c&&a.T||(a.ab=b[0]||a.L,a.Tb=b[1]||a.W);if(c||void 0===c)a.lb=b[0]||a.L,a.Cb=b[1]||a.W}function Rb(a,b){b||(b=$b);Xb(a,b,void 0);Vb(a,b,void 0)} +var $b=[],Ub=[E.prototype.fa,E.prototype.qa,E.prototype.xa,E.prototype.Ga],Wb=[E.prototype.aa,E.prototype.ia,E.prototype.sa,E.prototype.Fa];if(kb)var Tb=[E.prototype.Y,E.prototype.ha,E.prototype.Ea,E.prototype.Ca],Sb=[E.prototype.ba,E.prototype.oa,E.prototype.wa,E.prototype.eb]; +function ac(a,b){v.call(this,"CPU",a,ac,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.$a=c;this.i.ub=0;this.i.Na=d;this.i.zb=Math.round(this.i.$a/1E4)/100;this.i.La=this.i.zb*this.i.Na;this.A.ma=!1;this.A.yb=!1;this.A.Kb=a.autoStart;this.A.Mb=!1;this.A.Ra=!1;this.i.fb=this.i.Xa=0;this.i.gb=a.csStart;this.i.Wa=a.csInterval;this.i.Ya=a.csStop;this.aa=this.Oa.bind(this);D(this)}Va(ac);var bc=["power","reset"];m=ac.prototype; +m.Ia=function(a,b,c,d){this.w=a;this.B=b;this.F=d;for(b=0;b=a.i.Xa&&(a.i.Xa+=a.i.Wa,c=!0);0<=a.i.Ya&&a.i.Ya<=uc(a)&&(a.i.Wa=a.i.Ya=-1,pc(a),a.da(),c=!0);c&&a.g(uc(a)+" cycles: checksum="+q(a.i.fb))}} +m.pa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.T[b]=c;a=!0;break;case "run":this.T[b]=c;c.onclick=function(){var a;if(a=d.w)if(a=d.w,a.A.ka)a=!0;else{var b=null,c,g=Ya(a.id);for(c=0;cc&&(c=2);var d=1;b&&1a.i.Ka/a.i.La?b=1:d=!0;a.i.Na=b;b=a.i.zb*a.i.Na;if(a.i.La!=b){a.i.La=b;b=a.i.La.toFixed(2)+"Mhz";var e=a.T.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.w&&a.w.mb()}wc(a,a.G);a.G=0;a.i.Va=ka();a.i.Ma=0;xc(a);return d} +m.Oa=function(a){if(gb(this,!0)){if(!this.A.ma){vc(this);this.w&&this.w.start(this.i.Va,uc(this));this.A.ma=!0;this.A.yb=!0;this.K&&this.K.start();var b=this.T.run;b&&(b.textContent="Halt");this.w&&(this.w.va(!0),a&&this.w.mb(!0))}this.i.Bb>=this.i.$a&&xc(this,!0);this.i.jb=0;this.i.tb=ka();this.i.Ma&&(a=this.i.tb-this.i.Ma,a>this.i.Pb&&(this.i.Va+=a,this.i.Va>this.i.tb&&(this.i.Va=this.i.tb)));try{do{var c=this.A.Ra?1:this.i.hc;try{this.bb(c)}catch(e){if("number"!=typeof e)throw e;}var d=this.C- +this.b;this.G+=d;this.i.jb+=d;wc(this,0,!0);tc(this,d);this.i.ib-=d;0>=this.i.ib&&(this.i.ib+=this.i.Rb,this.w&&yc(this.w,this.i.ub++),this.i.ub>this.Ea&&(this.i.ub=0));this.i.hb-=d;0>=this.i.hb&&(this.i.hb+=this.i.Qb,this.w&&this.w.va());this.i.Za-=d;if(0>=this.i.Za){this.i.Za+=this.i.Ab;break}}while(this.A.ma)}catch(e){this.da();rc(this);this.w&&this.w.stop(ka(),uc(this));gb(this,!1);jb(this,e.stack||e.message);return}c=setTimeout;d=this.aa;this.i.Ma=ka();a=this.i.Pb;this.i.jb&&(a=Math.round(a* +this.i.jb/this.i.Ab));a-=this.i.Ma-this.i.tb;if(b=this.i.Ma-this.i.Va)this.i.Ka=Math.round(this.G/(10*b))/100,864E5<=b&&(this.H=0,vc(this));if(0>a||this.i.Ka>8&255;a.O=b&255}function Jc(a){return a.P<<8|a.R}function Kc(a,b){a.P=b>>8&255;a.R=b&255}function I(a){return a.S<<8|a.V} +function Lc(a,b){a.S=b>>8&255;a.V=b&255}function F(a,b){a.M=b&65535}function Mc(a){return a.I&256?1:0}function Nc(a){return lb[a.Z&255]?4:0}function Oc(a){return(a.Z^a.la)&16?16:0}function Pc(a){return a.I&255?0:64}function Qc(a){return a.Z&128?128:0}function Fc(a){return a.ra&-214|Qc(a)|Pc(a)|Oc(a)|Nc(a)|Mc(a)}function Dc(a,b){a.I=a.Z=a.la=0;b&1&&(a.I|=256);b&4||(a.Z|=1);b&16&&(a.la|=16);b&64||(a.I|=255);b&128&&(a.Z^=192);a.ra=a.ra&-513|b&512|2} +function Rc(a,b){a.la=a.j^b;return a.Z=(a.I=a.j+b)&255}function Sc(a,b){a.la=a.j^b;return a.Z=(a.I=a.j+b+(a.I&256?1:0))&255}function Tc(a,b){a.I=a.Z=a.la=a.j&b;(a.j|b)&8&&(a.la^=16);return a.I}function kd(a,b){a.la=b^255;b=a.Z=b+255&255;a.I=a.I&-256|b;return b}function ld(a,b){a.la=b;b=a.Z=b+1&255;a.I=a.I&-256|b;return b}function md(a,b){return a.Z=a.I=a.la=a.j|b}function J(a,b){b^=255;a.la=a.j^b;return a.Z=(a.I=a.j+b+1^256)&255} +function nd(a,b){b^=255;a.la=a.j^b;return a.Z=(a.I=a.j+b+(a.I&256?0:1)^256)&255}function od(a,b){return a.Z=a.I=a.la=a.j^b}m.X=function(a){return this.B.X(a)};m.ga=function(a,b){this.B.ga(a,b)};function L(a){var b=a.X(a.M);F(a,a.M+1);return b}function N(a){var b=a.B.Ha(a.M);F(a,a.M+2);return b}function O(a){var b=a.B.Ha(a.ca);a.ca=a.ca+2&65535;return b}function Q(a,b){a.ca=a.ca-2&65535;a.B.vb(a.ca,b)} +function R(a,b,c,d){d=d||2;a.T[b]&&(void 0===c&&(jb(a,"Value for "+b+" is invalid"),a.da()),c=!a.A.ma||a.A.Mb?q(c,d):"--------".substr(0,d),a.T[b].textContent!=c&&(a.T[b].textContent=c))} +m.va=function(a){this.Y&&(a||!this.A.ma||this.A.Mb)&&(R(this,"A",this.j),R(this,"B",this.N),R(this,"C",this.O),R(this,"BC",Hc(this),4),R(this,"D",this.P),R(this,"E",this.R),R(this,"DE",Jc(this),4),R(this,"H",this.S),R(this,"L",this.V),R(this,"HL",I(this),4),R(this,"SP",this.ca,4),R(this,"PC",this.M,4),a=Fc(this),R(this,"PS",a,4),R(this,"IF",a&512?1:0,1),R(this,"SF",a&128?1:0,1),R(this,"ZF",a&64?1:0,1),R(this,"AF",a&16?1:0,1),R(this,"PF",a&4?1:0,1),R(this,"CF",a&1?1:0,1));if(a=this.T.speed)a.textContent= this.A.ma&&this.i.Ka?this.i.Ka.toFixed(2)+"Mhz":"Stopped"}; -m.bb=function(a){this.A.qb=!0;var b=this.A.Yb=this.F&&qd(this.F),c=a?this.A.xb?0:1:-1;this.A.xb=!1;this.C=this.b=a;do{if(this.u){var d;this.u&8&&this.qa&512?(d=199|(this.u&7)<<3,this.u&=-16,this.qa&=-513,this.L[d].call(this),d=!0):d=!1;if(d){if(!a){this.g("interrupt dispatched");break}}else if(this.u&16){this.b=0;break}}if(b){if(rd(this.F,this.M,c)){this.da();break}c=1}this.L[L(this)].call(this)}while(0>8;this.I=this.I&255|a&256;this.b-=4},sd,function(){var a;Mc(this,a=I(this)+Ic(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.X(Ic(this));this.b-=7},function(){Jc(this,Ic(this)- -1);this.b-=5},function(){this.O=md(this,this.O);this.b-=5},function(){this.O=ld(this,this.O);this.b-=5},function(){this.O=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;this.I=this.I&255|a;this.b-=4},sd,function(){Lc(this,M(this));this.b-=10},function(){this.ga(Kc(this),this.j);this.b-=7},function(){Lc(this,Kc(this)+1);this.b-=5},function(){this.P=md(this,this.P);this.b-=5},function(){this.P=ld(this,this.P);this.b-=5},function(){this.P=L(this);this.b-=7},function(){var a=this.j<< -1;this.j=a&255|this.I>>8;this.I=this.I&255|a&256;this.b-=4},sd,function(){var a;Mc(this,a=I(this)+Kc(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.X(Kc(this));this.b-=7},function(){Lc(this,Kc(this)-1);this.b-=5},function(){this.R=md(this,this.R);this.b-=5},function(){this.R=ld(this,this.R);this.b-=5},function(){this.R=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(this.I&256|this.j)>>1;this.I=this.I&255|a;this.b-=4},sd,function(){Mc(this,M(this));this.b-=10},function(){var a= -M(this);this.B.ub(a,I(this));this.b-=16},function(){Mc(this,I(this)+1);this.b-=5},function(){this.S=md(this,this.S);this.b-=5},function(){this.S=ld(this,this.S);this.b-=5},function(){this.S=L(this);this.b-=7},function(){var a=0,b=Nc(this);if(Pc(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=Sc(this,a);this.I=b?this.I|256:this.I&-257;this.b-=4},sd,function(){var a;Mc(this,a=I(this)+I(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){var a;a=M(this);a=this.B.Fa(a);Mc(this,a);this.b-= -16},function(){Mc(this,I(this)-1);this.b-=5},function(){this.V=md(this,this.V);this.b-=5},function(){this.V=ld(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},sd,function(){this.ca=M(this)&65535;this.b-=10},function(){this.ga(M(this),this.j);this.b-=13},function(){this.ca=this.ca+1&65535;this.b-=5},function(){var a=I(this);this.ga(a,md(this,this.X(a)));this.b-=10},function(){var a=I(this);this.ga(a,ld(this,this.X(a)));this.b-=10},function(){this.ga(I(this), -L(this));this.b-=10},function(){this.I|=256;this.b-=4},sd,function(){var a;Mc(this,a=I(this)+this.ca);this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.X(M(this));this.b-=13},function(){this.ca=this.ca-1&65535;this.b-=5},function(){this.j=md(this,this.j);this.b-=5},function(){this.j=ld(this,this.j);this.b-=5},function(){this.j=L(this);this.b-=7},function(){this.I=Nc(this)?this.I&-257:this.I|256;this.b-=4},function(){this.b-=5},function(){this.N=this.O;this.b-=5},function(){this.N=this.P; +m.bb=function(a){this.A.rb=!0;var b=this.A.Yb=this.F&&pd(this.F),c=a?this.A.yb?0:1:-1;this.A.yb=!1;this.C=this.b=a;do{if(this.u){var d;this.u&8&&this.ra&512?(d=199|(this.u&7)<<3,this.u&=-16,this.ra&=-513,this.L[d].call(this),d=!0):d=!1;if(d){if(!a){this.g("interrupt dispatched");break}}else if(this.u&16){this.b=0;break}}if(b){if(qd(this.F,this.M,c)){this.da();break}c=1}this.L[L(this)].call(this)}while(0>8;this.I=this.I&255|a&256;this.b-=4},rd,function(){var a;Lc(this,a=I(this)+Hc(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.X(Hc(this));this.b-=7},function(){Ic(this,Hc(this)- +1);this.b-=5},function(){this.O=ld(this,this.O);this.b-=5},function(){this.O=kd(this,this.O);this.b-=5},function(){this.O=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(a|this.j)>>1;this.I=this.I&255|a;this.b-=4},rd,function(){Kc(this,N(this));this.b-=10},function(){this.ga(Jc(this),this.j);this.b-=7},function(){Kc(this,Jc(this)+1);this.b-=5},function(){this.P=ld(this,this.P);this.b-=5},function(){this.P=kd(this,this.P);this.b-=5},function(){this.P=L(this);this.b-=7},function(){var a=this.j<< +1;this.j=a&255|this.I>>8;this.I=this.I&255|a&256;this.b-=4},rd,function(){var a;Lc(this,a=I(this)+Jc(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.X(Jc(this));this.b-=7},function(){Kc(this,Jc(this)-1);this.b-=5},function(){this.R=ld(this,this.R);this.b-=5},function(){this.R=kd(this,this.R);this.b-=5},function(){this.R=L(this);this.b-=7},function(){var a=this.j<<8&256;this.j=(this.I&256|this.j)>>1;this.I=this.I&255|a;this.b-=4},rd,function(){Lc(this,N(this));this.b-=10},function(){var a= +N(this);this.B.vb(a,I(this));this.b-=16},function(){Lc(this,I(this)+1);this.b-=5},function(){this.S=ld(this,this.S);this.b-=5},function(){this.S=kd(this,this.S);this.b-=5},function(){this.S=L(this);this.b-=7},function(){var a=0,b=Mc(this);if(Oc(this)||9<(this.j&15))a|=6;if(b||154<=this.j)a|=96,b=1;this.j=Rc(this,a);this.I=b?this.I|256:this.I&-257;this.b-=4},rd,function(){var a;Lc(this,a=I(this)+I(this));this.I=this.I&255|a>>8&256;this.b-=10},function(){var a;a=N(this);a=this.B.Ha(a);Lc(this,a);this.b-= +16},function(){Lc(this,I(this)-1);this.b-=5},function(){this.V=ld(this,this.V);this.b-=5},function(){this.V=kd(this,this.V);this.b-=5},function(){this.V=L(this);this.b-=7},function(){this.j=~this.j&255;this.b-=4},rd,function(){this.ca=N(this)&65535;this.b-=10},function(){this.ga(N(this),this.j);this.b-=13},function(){this.ca=this.ca+1&65535;this.b-=5},function(){var a=I(this);this.ga(a,ld(this,this.X(a)));this.b-=10},function(){var a=I(this);this.ga(a,kd(this,this.X(a)));this.b-=10},function(){this.ga(I(this), +L(this));this.b-=10},function(){this.I|=256;this.b-=4},rd,function(){var a;Lc(this,a=I(this)+this.ca);this.I=this.I&255|a>>8&256;this.b-=10},function(){this.j=this.X(N(this));this.b-=13},function(){this.ca=this.ca-1&65535;this.b-=5},function(){this.j=ld(this,this.j);this.b-=5},function(){this.j=kd(this,this.j);this.b-=5},function(){this.j=L(this);this.b-=7},function(){this.I=Mc(this)?this.I&-257:this.I|256;this.b-=4},function(){this.b-=5},function(){this.N=this.O;this.b-=5},function(){this.N=this.P; this.b-=5},function(){this.N=this.R;this.b-=5},function(){this.N=this.S;this.b-=5},function(){this.N=this.V;this.b-=5},function(){this.N=this.X(I(this));this.b-=7},function(){this.N=this.j;this.b-=5},function(){this.O=this.N;this.b-=5},function(){this.b-=5},function(){this.O=this.P;this.b-=5},function(){this.O=this.R;this.b-=5},function(){this.O=this.S;this.b-=5},function(){this.O=this.V;this.b-=5},function(){this.O=this.X(I(this));this.b-=7},function(){this.O=this.j;this.b-=5},function(){this.P= this.N;this.b-=5},function(){this.P=this.O;this.b-=5},function(){this.b-=5},function(){this.P=this.R;this.b-=5},function(){this.P=this.S;this.b-=5},function(){this.P=this.V;this.b-=5},function(){this.P=this.X(I(this));this.b-=7},function(){this.P=this.j;this.b-=5},function(){this.R=this.N;this.b-=5},function(){this.R=this.O;this.b-=5},function(){this.R=this.P;this.b-=5},function(){this.b-=5},function(){this.R=this.S;this.b-=5},function(){this.R=this.V;this.b-=5},function(){this.R=this.X(I(this)); this.b-=7},function(){this.R=this.j;this.b-=5},function(){this.S=this.N;this.b-=5},function(){this.S=this.O;this.b-=5},function(){this.S=this.P;this.b-=5},function(){this.S=this.R;this.b-=5},function(){this.b-=5},function(){this.S=this.V;this.b-=5},function(){this.S=this.X(I(this));this.b-=7},function(){this.S=this.j;this.b-=5},function(){this.V=this.N;this.b-=5},function(){this.V=this.O;this.b-=5},function(){this.V=this.P;this.b-=5},function(){this.V=this.R;this.b-=5},function(){this.V=this.S;this.b-= 5},function(){this.b-=5},function(){this.V=this.X(I(this));this.b-=7},function(){this.V=this.j;this.b-=5},function(){this.ga(I(this),this.N);this.b-=7},function(){this.ga(I(this),this.O);this.b-=7},function(){this.ga(I(this),this.P);this.b-=7},function(){this.ga(I(this),this.R);this.b-=7},function(){this.ga(I(this),this.S);this.b-=7},function(){this.ga(I(this),this.V);this.b-=7},function(){var a=this.M-1;if(this.J.length)for(var b=0;b>8;this.b-=10},function(){var a=M(this);Rc(this)||F(this,a);this.b-=10},function(){this.qa&=-513;this.b-=4},function(){var a=M(this);Rc(this)||(Q(this,this.M),F(this,a),this.b-=6);this.b-=11},function(){Q(this,Gc(this)&255|this.j<<8);this.b-=11},function(){this.j=nd(this,L(this));this.b-=7},function(){Q(this, -this.M);F(this,48);this.b-=11},function(){Rc(this)&&(F(this,N(this)),this.b-=6);this.b-=5},function(){this.ca=I(this)&65535;this.b-=5},function(){var a=M(this);Rc(this)&&F(this,a);this.b-=10},function(){this.qa|=512;this.b-=4},function(){var a=M(this);Rc(this)&&(Q(this,this.M),F(this,a),this.b-=6);this.b-=11},vd,function(){J(this,L(this));this.b-=7},function(){Q(this,this.M);F(this,56);this.b-=11}]; -function S(a){w.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!wd[b]&&t("Unrecognized ChipSet model: "+b);this.Ua=wd[b]||xd;a.sound&&(this.W=null,window&&(this.W=window.AudioContext||window.webkitAudioContext),this.W&&new this.W);C(this)}Wa(S);var xd=1978.1,wd={SI1978:xd};m=S.prototype;m.oa=function(){return!1}; -m.Ga=function(a,b,c,d){this.B=b;this.b=c;this.F=d;this.w=a;if(this.Ua==xd){var e;a=yd;void 0===e&&(e=0);for(var f in a){c=b;d=+f+e;var h=a[f].bind(this);if(void 0!==h)for(var g=+f+e;g<=d;g++)void 0!==c.w[g]?t("Input port "+r(g)+" already registered"):c.w[g]=[h,!1]}var l;e=zd;void 0===l&&(l=0);for(var k in e)if(f=b,a=+k+l,c=e[k].bind(this),void 0!==c)for(d=+k+l;d<=a;d++)void 0!==f.u[d]?t("Output port "+r(d)+" already registered"):f.u[d]=[c,!1]}}; -m.Ba=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.Aa=function(a){return a?this.save():!0};m.reset=function(){this.G=this.H=this.C=this.u=this.L=this.K=this.J=0};m.save=function(){var a=new Hc(this);this.Ua==xd&&H(a,0,[this.J,this.K,this.L,this.u,this.C,this.G,this.H]);return a.data()};m.restore=function(a){a=a[0];this.Ua==xd&&(this.J=a[0],this.K=a[1],this.L=a[2],this.u=a[3],this.C=a[4],this.G=a[5],this.H=a[6]);return!0};m.start=function(){};m.stop=function(){}; -m.cc=function(a,b){var c=this.J;db(this,a,null,b,"STATUS0",c);return c};m.dc=function(a,b){var c=this.K;db(this,a,null,b,"STATUS1",c);return c};m.ec=function(a,b){var c=this.L;db(this,a,null,b,"STATUS2",c);return c};m.bc=function(a,b){var c=this.u>>8-this.C&255;db(this,a,null,b,"SHIFT.RESULT",c);return c};m.ic=function(a,b,c){db(this,a,b,c,"SHIFT.COUNT",null);this.C=b};m.kc=function(a,b,c){db(this,a,b,c,"SOUND1",null);this.G=b}; -m.jc=function(a,b,c){db(this,a,b,c,"SHIFT.DATA",null);this.u=b<<8|this.u>>8};m.lc=function(a,b,c){db(this,a,b,c,"SOUND2",null);this.H=b};m.mc=function(a,b,c){db(this,a,b,c,"WATCHDOG",null)};var yd={0:S.prototype.cc,1:S.prototype.dc,2:S.prototype.ec,3:S.prototype.bc},zd={2:S.prototype.ic,3:S.prototype.kc,4:S.prototype.jc,5:S.prototype.lc,6:S.prototype.mc};Ja(function(){for(var a=A(document,"pc8080","chipset"),b=0;b>>0,h],n=ia(p,l,a.Fb);0>n&&p.splice(-(n+1),0,l)}k&&(g.a=k.replace(/''/g,'"'))}a.J.push({nc:b,D:c,gc:d,Da:e,Db:f})}delete this.Da}return!0};Ad.prototype.Aa=function(){return!0}; -function Bd(a,b,c,d){if(d)a.na("Unable to load system ROM (error "+d+": "+b+")");else{Ya(a.Hb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.w=f;else if(h)for(a.w=Array(4*h.length),d=c=0;c>8&255,a.w[d++]=h[c]>>16&255,a.w[d++]=h[c]>>24&255;else a.w=e;a.Da=e.symbols;if(!a.w.length){t("Empty ROM: "+b);return}if(1==a.w.length){t(a.w[0]);return}}catch(g){a.na("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm, -" ").replace(/ +$/,"").split(" "),a.w=Array(b.length),e=0;e>>f.ea;0>>=f.ea;0>3)*this.W;sb(this.B,this.ka,this.fa,3)&&(this.xa=this.fa>>1,this.Ca=16/this.pa|0,this.la=!1,void 0===this.aa||this.aa.length!=this.xa)&&(this.aa=Array(this.xa));C(this)}; -Id.prototype.oa=function(a,b,c){var d=this;switch(b){case "fullScreen":return this.T[b]=c,this.u&&this.u.Pa?c.onclick=function(){d.Pa()}:c.parentNode.removeChild(c),!0}return!1}; -Id.prototype.Pa=function(){var a=!1;if(this.u){if(this.u.Pa){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.ba/this.Y;b>c&&(a=Math.round(c/b*100)+"%")}this.ra?(this.K.style.width=a,this.K.style.width=a,this.K.style.display="block",this.K.style.margin="auto"):(this.u.style.width=a,this.u.style.height="auto");this.u.style.backgroundColor="black";this.u.Pa();a=!0}this.wa&&this.wa.focus()}return a}; -function Jd(a,b){!b&&a.u&&(a.ra?a.K.style.width=a.K.style.height="":a.u.style.width=a.u.style.height="");fb(a,"notifyFullScreen("+b+")",!0)} -Ja(function(){for(var a=A(document,"pc8080","video"),b=0;bMissing <canvas> 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<=pa().indexOf("MSIE")&&(c.onresize=function(a,b,c,d){return function(){b.style.height= -(a.clientWidth*d/c|0)+"px"}}(c,e,d.screenWidth,d.screenHeight),c.onresize());var f=+(d.aspect||Ra.aspect);f&&.3<=f&&3.33>=f&&(Ha("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");va("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new Id(d,e,h,f,c);cb(d,c)}}); -function Kd(a){w.call(this,"Debugger",a,Kd);this.style=Ld;this.fa=this.Ca=this.L=0;this.Y=T();this.Gb=T();this.G=-1;this.C=[];this.la=!1;this.ka=T();this.J=[];this.pa={};this.u=this.aa=this.H=[];Md(this);this.wa=0;Nd(this);this.Ha=[];Od(this,a.messages);this.Ia=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return rc(b,a)}):void 0===global.$&&(global.$=function(a){return rc(b,a)})}Wa(Kd); -var Pd={"?":"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",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"},Ld=8080,Qd="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(" "), -Rd="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(" "),Sd="B C D E H L M A BC DE HL SP PC PSW".split(" "),Td=[[45],[42,2067,32],[71,2131,18193],[29,2067],[28,17],[22,17],[44,17,32],[63],[45,32768], +this.F&&fb(this,-2147483648)?(F(this,a),this.F.da()):this.ra&512||(this.F&&F(this,a),this.da())},function(){this.ga(I(this),this.j);this.b-=7},function(){this.j=this.N;this.b-=5},function(){this.j=this.O;this.b-=5},function(){this.j=this.P;this.b-=5},function(){this.j=this.R;this.b-=5},function(){this.j=this.S;this.b-=5},function(){this.j=this.V;this.b-=5},function(){this.j=this.X(I(this));this.b-=7},function(){this.b-=5},function(){this.j=Rc(this,this.N);this.b-=4},function(){this.j=Rc(this,this.O); +this.b-=4},function(){this.j=Rc(this,this.P);this.b-=4},function(){this.j=Rc(this,this.R);this.b-=4},function(){this.j=Rc(this,this.S);this.b-=4},function(){this.j=Rc(this,this.V);this.b-=4},function(){this.j=Rc(this,this.X(I(this)));this.b-=7},function(){this.j=Rc(this,this.j);this.b-=4},function(){this.j=Sc(this,this.N);this.b-=4},function(){this.j=Sc(this,this.O);this.b-=4},function(){this.j=Sc(this,this.P);this.b-=4},function(){this.j=Sc(this,this.R);this.b-=4},function(){this.j=Sc(this,this.S); +this.b-=4},function(){this.j=Sc(this,this.V);this.b-=4},function(){this.j=Sc(this,this.X(I(this)));this.b-=7},function(){this.j=Sc(this,this.j);this.b-=4},function(){this.j=J(this,this.N);this.b-=4},function(){this.j=J(this,this.O);this.b-=4},function(){this.j=J(this,this.P);this.b-=4},function(){this.j=J(this,this.R);this.b-=4},function(){this.j=J(this,this.S);this.b-=4},function(){this.j=J(this,this.V);this.b-=4},function(){this.j=J(this,this.X(I(this)));this.b-=7},function(){this.j=J(this,this.j); +this.b-=4},function(){this.j=nd(this,this.N);this.b-=4},function(){this.j=nd(this,this.O);this.b-=4},function(){this.j=nd(this,this.P);this.b-=4},function(){this.j=nd(this,this.R);this.b-=4},function(){this.j=nd(this,this.S);this.b-=4},function(){this.j=nd(this,this.V);this.b-=4},function(){this.j=nd(this,this.X(I(this)));this.b-=7},function(){this.j=nd(this,this.j);this.b-=4},function(){this.j=Tc(this,this.N);this.b-=4},function(){this.j=Tc(this,this.O);this.b-=4},function(){this.j=Tc(this,this.P); +this.b-=4},function(){this.j=Tc(this,this.R);this.b-=4},function(){this.j=Tc(this,this.S);this.b-=4},function(){this.j=Tc(this,this.V);this.b-=4},function(){this.j=Tc(this,this.X(I(this)));this.b-=7},function(){this.j=Tc(this,this.j);this.b-=4},function(){this.j=od(this,this.N);this.b-=4},function(){this.j=od(this,this.O);this.b-=4},function(){this.j=od(this,this.P);this.b-=4},function(){this.j=od(this,this.R);this.b-=4},function(){this.j=od(this,this.S);this.b-=4},function(){this.j=od(this,this.V); +this.b-=4},function(){this.j=od(this,this.X(I(this)));this.b-=7},function(){this.j=od(this,this.j);this.b-=4},function(){this.j=md(this,this.N);this.b-=4},function(){this.j=md(this,this.O);this.b-=4},function(){this.j=md(this,this.P);this.b-=4},function(){this.j=md(this,this.R);this.b-=4},function(){this.j=md(this,this.S);this.b-=4},function(){this.j=md(this,this.V);this.b-=4},function(){this.j=md(this,this.X(I(this)));this.b-=7},function(){this.j=md(this,this.j);this.b-=4},function(){J(this,this.N); +this.b-=4},function(){J(this,this.O);this.b-=4},function(){J(this,this.P);this.b-=4},function(){J(this,this.R);this.b-=4},function(){J(this,this.S);this.b-=4},function(){J(this,this.V);this.b-=4},function(){J(this,this.X(I(this)));this.b-=7},function(){J(this,this.j);this.b-=4},function(){Pc(this)||(F(this,O(this)),this.b-=6);this.b-=5},function(){Ic(this,O(this));this.b-=10},function(){var a=N(this);Pc(this)||F(this,a);this.b-=10},sd,function(){var a=N(this);Pc(this)||(Q(this,this.M),F(this,a),this.b-= +6);this.b-=11},function(){Q(this,Hc(this));this.b-=11},function(){this.j=Rc(this,L(this));this.b-=7},function(){Q(this,this.M);F(this,0);this.b-=11},function(){Pc(this)&&(F(this,O(this)),this.b-=6);this.b-=5},td,function(){var a=N(this);Pc(this)&&F(this,a);this.b-=10},sd,function(){var a=N(this);Pc(this)&&(Q(this,this.M),F(this,a),this.b-=6);this.b-=11},ud,function(){this.j=Sc(this,L(this));this.b-=7},function(){Q(this,this.M);F(this,8);this.b-=11},function(){Mc(this)||(F(this,O(this)),this.b-=6); +this.b-=5},function(){Kc(this,O(this));this.b-=10},function(){var a=N(this);Mc(this)||F(this,a);this.b-=10},function(){var a=L(this);Jb(this.B,a,this.j,this.M+-2&65535);this.b-=10},function(){var a=N(this);Mc(this)||(Q(this,this.M),F(this,a),this.b-=6);this.b-=11},function(){Q(this,Jc(this));this.b-=11},function(){this.j=J(this,L(this));this.b-=7},function(){Q(this,this.M);F(this,16);this.b-=11},function(){Mc(this)&&(F(this,O(this)),this.b-=6);this.b-=5},td,function(){var a=N(this);Mc(this)&&F(this, +a);this.b-=10},function(){var a=L(this);this.j=yb(this.B,a,this.M+-2&65535)&255;this.b-=10},function(){var a=N(this);Mc(this)&&(Q(this,this.M),F(this,a),this.b-=6);this.b-=11},ud,function(){this.j=nd(this,L(this));this.b-=7},function(){Q(this,this.M);F(this,24);this.b-=11},function(){Nc(this)||(F(this,O(this)),this.b-=6);this.b-=5},function(){Lc(this,O(this));this.b-=10},function(){var a=N(this);Nc(this)||F(this,a);this.b-=10},function(){var a=O(this);Q(this,I(this));Lc(this,a);this.b-=18},function(){var a= +N(this);Nc(this)||(Q(this,this.M),F(this,a),this.b-=6);this.b-=11},function(){Q(this,I(this));this.b-=11},function(){this.j=Tc(this,L(this));this.b-=7},function(){Q(this,this.M);F(this,32);this.b-=11},function(){Nc(this)&&(F(this,O(this)),this.b-=6);this.b-=5},function(){F(this,I(this));this.b-=5},function(){var a=N(this);Nc(this)&&F(this,a);this.b-=10},function(){var a=I(this);Lc(this,Jc(this));Kc(this,a);this.b-=5},function(){var a=N(this);Nc(this)&&(Q(this,this.M),F(this,a),this.b-=6);this.b-= +11},ud,function(){this.j=od(this,L(this));this.b-=7},function(){Q(this,this.M);F(this,40);this.b-=11},function(){Qc(this)||(F(this,O(this)),this.b-=6);this.b-=5},function(){var a=O(this);Dc(this,a);this.j=a>>8;this.b-=10},function(){var a=N(this);Qc(this)||F(this,a);this.b-=10},function(){this.ra&=-513;this.b-=4},function(){var a=N(this);Qc(this)||(Q(this,this.M),F(this,a),this.b-=6);this.b-=11},function(){Q(this,Fc(this)&255|this.j<<8);this.b-=11},function(){this.j=md(this,L(this));this.b-=7},function(){Q(this, +this.M);F(this,48);this.b-=11},function(){Qc(this)&&(F(this,O(this)),this.b-=6);this.b-=5},function(){this.ca=I(this)&65535;this.b-=5},function(){var a=N(this);Qc(this)&&F(this,a);this.b-=10},function(){this.ra|=512;this.b-=4},function(){var a=N(this);Qc(this)&&(Q(this,this.M),F(this,a),this.b-=6);this.b-=11},ud,function(){J(this,L(this));this.b-=7},function(){Q(this,this.M);F(this,56);this.b-=11}]; +function S(a){v.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!vd[b]&&t("Unrecognized ChipSet model: "+b);this.Ua=vd[b]||wd;a.sound&&(this.W=null,window&&(this.W=window.AudioContext||window.webkitAudioContext),this.W&&new this.W);D(this)}Va(S);var wd=1978.1,vd={SI1978:wd};m=S.prototype;m.pa=function(){return!1}; +m.Ia=function(a,b,c,d){this.B=b;this.b=c;this.F=d;this.w=a;if(this.Ua==wd){var e;a=xd;void 0===e&&(e=0);for(var f in a){c=b;d=+f+e;var h=a[f].bind(this);if(void 0!==h)for(var g=+f+e;g<=d;g++)void 0!==c.w[g]?t("Input port "+r(g)+" already registered"):c.w[g]=[h,!1]}var l;e=yd;void 0===l&&(l=0);for(var k in e)if(f=b,a=+k+l,c=e[k].bind(this),void 0!==c)for(d=+k+l;d<=a;d++)void 0!==f.u[d]?t("Output port "+r(d)+" already registered"):f.u[d]=[c,!1]}}; +m.Ba=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.Aa=function(a){return a?this.save():!0};m.reset=function(){this.G=this.H=this.C=this.u=this.L=this.K=this.J=0};m.save=function(){var a=new Gc(this);this.Ua==wd&&H(a,0,[this.J,this.K,this.L,this.u,this.C,this.G,this.H]);return a.data()};m.restore=function(a){a=a[0];this.Ua==wd&&(this.J=a[0],this.K=a[1],this.L=a[2],this.u=a[3],this.C=a[4],this.G=a[5],this.H=a[6]);return!0};m.start=function(){};m.stop=function(){}; +m.cc=function(a,b){var c=this.J;cb(this,a,null,b,"STATUS0",c);return c};m.dc=function(a,b){var c=this.K;cb(this,a,null,b,"STATUS1",c);return c};m.ec=function(a,b){var c=this.L;cb(this,a,null,b,"STATUS2",c);return c};m.bc=function(a,b){var c=this.u>>8-this.C&255;cb(this,a,null,b,"SHIFT.RESULT",c);return c};m.ic=function(a,b,c){cb(this,a,b,c,"SHIFT.COUNT",null);this.C=b};m.kc=function(a,b,c){cb(this,a,b,c,"SOUND1",null);this.G=b}; +m.jc=function(a,b,c){cb(this,a,b,c,"SHIFT.DATA",null);this.u=b<<8|this.u>>8};m.lc=function(a,b,c){cb(this,a,b,c,"SOUND2",null);this.H=b};m.mc=function(a,b,c){cb(this,a,b,c,"WATCHDOG",null)};var xd={0:S.prototype.cc,1:S.prototype.dc,2:S.prototype.ec,3:S.prototype.bc},yd={2:S.prototype.ic,3:S.prototype.kc,4:S.prototype.jc,5:S.prototype.lc,6:S.prototype.mc};Ia(function(){for(var a=C(document,"pc8080","chipset"),b=0;b>>0,h],p=ja(n,l,a.qb);0>p&&n.splice(-(p+1),0,l)}k&&(g.a=k.replace(/''/g,'"'))}a.J.push({nc:b,D:c,gc:d,Da:e,Eb:f})}delete this.Da}return!0};zd.prototype.Aa=function(){return!0}; +function Ad(a,b,c,d){if(d)a.na("Unable to load system ROM (error "+d+": "+b+")");else{Xa(a.Hb,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.w=f;else if(h)for(a.w=Array(4*h.length),d=c=0;c>8&255,a.w[d++]=h[c]>>16&255,a.w[d++]=h[c]>>24&255;else a.w=e;a.Da=e.symbols;if(!a.w.length){t("Empty ROM: "+b);return}if(1==a.w.length){t(a.w[0]);return}}catch(g){a.na("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm, +" ").replace(/ +$/,"").split(" "),a.w=Array(b.length),e=0;e>>f.ea;0>>=f.ea;0>3)*this.Y;rb(this.B,this.qa,this.oa,3)&&(this.Fa=this.oa>>1,this.Ga=16/this.ia|0,this.sa=!1,void 0===this.fa||this.fa.length!=this.Fa)&&(this.fa=Array(this.Fa));D(this)};Hd.prototype.pa=function(a,b,c){var d=this;switch(b){case "fullScreen":return this.T[b]=c,this.u&&this.u.Pa?c.onclick=function(){d.Pa()}:c.parentNode.removeChild(c),!0}return!1}; +Hd.prototype.Pa=function(){var a=!1;if(this.u){if(this.u.Pa){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.ha/this.aa;b>c&&(a=Math.round(c/b*100)+"%")}this.wa?(this.K.style.width=a,this.K.style.width=a,this.K.style.display="block",this.K.style.margin="auto"):(this.u.style.width=a,this.u.style.height="auto");this.u.style.backgroundColor="black";this.u.Pa();a=!0}this.Ca&&this.Ca.focus()}return a}; +function Id(a,b){!b&&a.u&&(a.wa?a.K.style.width=a.K.style.height="":a.u.style.width=a.u.style.height="");eb(a,"notifyFullScreen("+b+")",!0)} +Ia(function(){for(var a=C(document,"pc8080","video"),b=0;bMissing <canvas> 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<=qa().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||Qa.aspect);f&&.3<=f&&3.33>=f&&(Ga("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");wa("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);var h=e.getContext("2d"),d=new Hd(d,e,h,f,c);bb(d,c)}}); +function Jd(a){v.call(this,"Debugger",a,Jd);this.style=Kd;this.fa=this.Ca=this.L=0;this.Y=T();this.Gb=T();this.G=-1;this.C=[];this.ia=!1;this.ha=T();this.J=[];this.oa={};this.u=this.aa=this.H=[];Ld(this);this.wa=0;Md(this);this.Fa=[];Nd(this,a.messages);this.Ga=a.commands;var b=this;window?void 0===window.$&&(window.$=function(a){return qc(b,a)}):void 0===global.$&&(global.$=function(a){return qc(b,a)})}Va(Jd); +var Od={"?":"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",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"},Kd=8080,Pd="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(" "), +Qd="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(" "),Rd="B C D E H L M A BC DE HL SP PC PSW".split(" "),Sd=[[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,3347],[35,51],[24],[12,51],[51,3347],[47,18193,33],[65,128],[56],[69,19219,18963],[32,51],[25],[9,51],[7,32819],[19, -18193,33],[65,128]],Ud={cpu:1,bus:64,mem:128,port:256,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:536870912,warn:1073741824,halt:-2147483648};m=Kd.prototype; -m.Ga=function(a,b,c,d){this.B=b;this.b=c;this.w=a;(a=dc(a,"messages"))&&Od(this,a);this.pb=Td;Vd(this,function(a){a:{var b=d.B.U,c=a[0],g=a=0,l=b.length;if(c){a=W(X(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.B.ea;l=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,k=0;l--;){var p=b[g];p.type==c?k++||d.g("..."):(c=p.type,k=ub[c],p&&d.g(q(p.id)+" %"+q(g<>>e.ea;f!=e.B?e.U[h].Cb(f,b&65535,d):(e.U[h++].ob(f,b&255,d),e.U[h&e.K].ob(0,b>>8&255,d+1));c&&Wd(a,c);sc(this.b,!0)}};function T(a){return{D:a,za:!1}}function Xd(a){return[a.D,a.za]}function Yd(a){return{D:a[0],za:a[1]}} -function X(a,b,c){var d;c=(c?a.Y:a.Gb).D;if(void 0!==b){d=b=Zd(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;cc&&(c=ma(Sd,a.substr(b,2))));return c}function ee(a,b){var c=0,d=fe(a,b);if(void 0!==d)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:c=4}return c?q(d,c):"??"} -function fe(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.N;break;case 1:c=d.O;break;case 8:c=Ic(d);break;case 2:c=d.P;break;case 3:c=d.R;break;case 9:c=Kc(d);break;case 4:c=d.S;break;case 5:c=d.V;break;case 10:c=I(d);break;case 6:c=d.X(I(d));break;case 11:c=d.ca;break;case 12:c=d.M;break;case 13:c=d.j<<8|Gc(d)&255}}return c} -function ge(a,b){b=Zd(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=de(b,c+1),0<=e&&(b=b.substr(0,c)+ee(a,e)+b.substr(c+1+Sd[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=X(a,e))?(d=e+' "'+ce(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=X(a,e))?(Wd(d),d=e+' "'+ -ce(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+Z(T(this.b.M).D));if(!this.xa||a!=this.xa)if(this.xa=a,this.ha&-2147483648&&(this.da(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.Za=0;c.C-=c.b;c.b=0;sc(c)}};function eb(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.ha&g)!=g||a.message(b.eb+"."+(null!=d?"outPort":"inPort")+"("+r(c)+","+(f?f:"unknown")+(null!=d?",0x"+q(d,2):"")+")"+(null!=h?": 0x"+q(h,2):"")+(null!=e?" at "+Z(e):""))} -function Nd(a){var b;if(qd(a)){if(!a.W||!a.W.length){a.W=Array(1E3);for(b=0;b>>d.ea],!1)}a.aa=["br"];if(void 0!==a.H)for(b=1;b>>d.ea],!0);a.H=["bw"];a.Jb=0}m.Ja=function(a,b,c){var d=!0;c||le(this,a,b,!1,!0);if(a!=this.u){var e=W(b);if(-1===e)this.g("invalid address: "+Z(b.D)),d=!1;else{var f=this.B;f.U[e>>>f.ea].Ja(e&f.B,a==this.H)}}d&&(a.push(b),c?b.za=!0:(me(this,a,a.length-1,"set"),Nd(this)));return d}; -function le(a,b,c,d,e){var f=!1;c=W(c);for(var h=1;h>>d.ea],b==a.H));g.za||Nd(a);break}}return f}function ne(a,b){for(var c=1;c>24,4);break;case 3:B=q(z.Fa(O,2),4);break;default:z="imm("+r(v)+")";break a}8086==z.style&&v&64?B="["+B+"]":v&16||(B=(z.style==Ld?"$":"0x")+B);z=B}else v& -16?(z=(n&3840)>>8,v=Sd[z],8086==a.style&&n&64&&(6==z&&(v="HL"),v="["+v+"]"),z=v):v&128&&(z=(f>>3&7).toString());if(!z||!z.length){g="INVALID";break}0=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9}; -function Se(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<>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f":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; +18193,33],[65,128]],Td={cpu:1,bus:64,mem:128,port:256,chipset:32768,keyboard:65536,key:131072,video:262144,fdc:524288,disk:2097152,serial:8388608,speaker:33554432,computer:67108864,log:536870912,warn:1073741824,halt:-2147483648};m=Jd.prototype; +m.Ia=function(a,b,c,d){this.B=b;this.b=c;this.w=a;(a=cc(a,"messages"))&&Nd(this,a);this.pb=Sd;Ud(this,function(a){a:{var b=d.B.U,c=a[0],g=a=0,l=b.length;if(c){a=V(W(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.B.ea;l=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,k=0;l--;){var n=b[g];n.type==c?k++||d.g("..."):(c=n.type,k=tb[c],n&&d.g(q(n.id)+" %"+q(g<>>e.ea;f!=e.B?e.U[h].Db(f,b&65535,d):(e.U[h++].ob(f,b&255,d),e.U[h&e.K].ob(0,b>>8&255,d+1));c&&Vd(a,c);rc(this.b,!0)}};function T(a){return{D:a,za:!1}}function Wd(a){return[a.D,a.za]}function Xd(a){return{D:a[0],za:a[1]}} +function W(a,b,c){var d;c=(c?a.Y:a.Gb).D;if(void 0!==b){d=b=Yd(a,b);var e;if(d.match(/^[a-z_][a-z0-9_]*$/i))for(d=d.toUpperCase(),c=0;cc&&(c=na(Rd,a.substr(b,2))));return c}function de(a,b){var c=0,d=ee(a,b);if(void 0!==d)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:c=4}return c?q(d,c):"??"} +function ee(a,b){var c;if(0<=b){var d=a.b;switch(b){case 7:c=d.j;break;case 0:c=d.N;break;case 1:c=d.O;break;case 8:c=Hc(d);break;case 2:c=d.P;break;case 3:c=d.R;break;case 9:c=Jc(d);break;case 4:c=d.S;break;case 5:c=d.V;break;case 10:c=I(d);break;case 6:c=d.X(I(d));break;case 11:c=d.ca;break;case 12:c=d.M;break;case 13:c=d.j<<8|Fc(d)&255}}return c} +function fe(a,b){b=Yd(a,b);for(var c=0,d,e;0<=(c=b.indexOf("@",c));)e=ce(b,c+1),0<=e&&(b=b.substr(0,c)+de(a,e)+b.substr(c+1+Rd[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=W(a,e))?(d=e+' "'+be(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=W(a,e))?(Vd(d),d=e+' "'+ +be(a,d,11)+'"',b=b.replace("^"+e,d),c+=d.length):c++;return b}m.message=function(a,b){b&&(a+=" at "+Z(T(this.b.M).D));if(!this.xa||a!=this.xa)if(this.xa=a,this.ja&-2147483648&&(this.da(),a+=" (cpu halted)"),this.g(a),this.b){var c=this.b;c.i.Za=0;c.C-=c.b;c.b=0;rc(c)}};function db(a,b,c,d,e,f,h,g){g|=256;null!=f&&(a.ja&g)!=g||a.message(b.eb+"."+(null!=d?"outPort":"inPort")+"("+r(c)+","+(f?f:"unknown")+(null!=d?",0x"+q(d,2):"")+")"+(null!=h?": 0x"+q(h,2):"")+(null!=e?" at "+Z(e):""))} +function Md(a){var b;if(pd(a)){if(!a.W||!a.W.length){a.W=Array(1E3);for(b=0;b>>d.ea],!1)}a.aa=["br"];if(void 0!==a.H)for(b=1;b>>d.ea],!0);a.H=["bw"];a.Jb=0}m.Ja=function(a,b,c){var d=!0;c||ke(this,a,b,!1,!0);if(a!=this.u){var e=V(b);if(-1===e)this.g("invalid address: "+Z(b.D)),d=!1;else{var f=this.B;f.U[e>>>f.ea].Ja(e&f.B,a==this.H)}}d&&(a.push(b),c?b.za=!0:(le(this,a,a.length-1,"set"),Md(this)));return d}; +function ke(a,b,c,d,e){var f=!1;c=V(c);for(var h=1;h>>d.ea],b==a.H));g.za||Md(a);break}}return f}function me(a,b){for(var c=1;c>24,4);break;case 3:w=q(B.Ha(la,2),4);break;default:B="imm("+r(u)+")";break a}8086==B.style&&u&64?w="["+w+"]":u&16||(w=(B.style==Kd?"$":"0x")+w); +B=w}else u&16?(B=(p&3840)>>8,u=Rd[B],8086==a.style&&p&64&&(6==B&&(u="HL"),u="["+u+"]"),B=u):u&128&&(B=(f>>3&7).toString());if(!B||!B.length){g="INVALID";break}0=":6,">":6,"<=":6,"<":6,">>>":7,">>":7,"<<":7,"-":8,"+":8,"%":9,"/":9,"*":9}; +function Re(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<>":d=f>>e;break;case ">>>":d=f>>>e;break;case "<":d=f":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 $d(a,b,c){var d;if(b){b=Zd(a,b);for(var e=0,f=!1,h=b,g=[],l=[],k=b.split(/(\|\||&&|\||^|&|!=|==|>=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e>=1;h=p+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function Ve(a,b){if(b)return Ue(a,b,a.pa[b]);var c=0;for(b in a.pa)Ue(a,b,a.pa[b]),c++;return 0b[0]?1:a[0]>>0;for(b=0;b>>0,g=f.gc;if(e>=h&&e=|>>>|>>|>|<=|<<|<|-|\+|%|\/|\*)/);e>=1;h=n+"b"+h;d>>=8}d="0x"+q(c)+" "+c+". ("+h+")"}a.g((null!=b?b+": ":"")+d);return e}function Ue(a,b){if(b)return Te(a,b,a.oa[b]);var c=0;for(b in a.oa)Te(a,b,a.oa[b]),c++;return 0b[0]?1:a[0]>>0;for(b=0;b>>0,g=f.gc;if(e>=h&&e>8&255;case "C":d.O=g&255;break;case "D":d.P= -g&255;break;case "DE":d.P=g>>8&255;case "E":d.R=g&255;break;case "H":d.S=g&255;break;case "HL":d.S=g>>8&255;case "L":d.V=g&255;break;case "SP":d.ca=g&65535;break;case "PC":F(d,g);a.Y=T(d.M);break;case "PS":Ec(d,g);break;case "C":d.I=g?d.I|256:d.I&255;break;case "P":g?Oc(d)||(d.Z^=1):Oc(d)&&(d.Z^=1);break;case "A":d.ja=g?~d.Z&16|d.ja&-17:d.Z&16|d.ja&-17;break;case "Z":d.I=g?d.I&-256:d.I|255;break;case "S":g?Rc(d)||(d.Z^=192):Rc(d)&&(d.Z^=192);break;case "I":d.qa=g?d.qa|512:d.qa&-513;break;default:a.g("unknown register: "+ -e);return}if(!h){a.g("invalid value: "+f);return}sc(d);a.g("updated registers:")}a.g(Qe(a));c&&(a.Y=T(d.M),je(a,Z(a.Y.D)))}}function bf(a,b){b=ha(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(ge(a,c[2])):$d(a,b,!0)}function cf(a,b,c){var d="t"!=b;c=Te(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ca(c,function(){return hb(a,!0)&&a.bb(e,d,!1)},function(){sc(a.b);hb(a,!1)})} -function je(a,b,c,d){if(b=X(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=X(a,c,!0);if(!d||d.Dg[0].indexOf("+"))){var k=g[0]+":";g[2]&&(k+=" "+g[2]);a.g(k)}g[3]&&(h=g[3],f=null);f=pe(a,b,h,f);a.g(f);a.Y=b;e-=b.D-l;c++}}} -function be(a,b,c,d){if(c)if(b){0>a.G&&a.C.length&&(a.G=0);if(0>a.G||b!=a.C[a.G])a.C.splice(0,0,b),a.G=0;a.G--}else a.la?b="end":b=a.C[a.G+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(ha(b.substring(c,f))),c=f+1}}return a} -function oe(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.la&&(a.g("ended assemble at "+Z(a.ka.D)),a.Y=a.ka,a.la=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.xa=null;if(jb(a)&&0k||"z"za.length&&(a.g("note: only "+za.length+" available"),Y=za.length);V-=Y;0>V&&(null==za[za.length-1].D?(Y=V+Y,V=0):V+=za.length);var Xc=[];"call"==xe&&(bb= -1E5,Xc=["CALL"]);for(void 0!==we&&a.g(Y+" instructions earlier:");0=za.length&&(V=0);a.Nb=Y;ze++;bb--}}ze||(a.g("no "+ye+"history available"),a.Nb=void 0)}else{var ec=X(a,K);if(ec){var fc=0;ka&&("l"==ka.charAt(0)&&(ka=ka.substr(1)||xa),fc=Te(a,ka)>>>0,65536>4||1;Bf--&&0jc?String.fromCharCode(jc):".";hc--}Ma&&(Ma+="\n");Ma+=K+" "+Db+(0==Cb?" "+Zc:"")}Ma&&a.g(Ma);a.Gb=ec}}}}break;case "e":if("else"==f[0])break;var kc=1,Ce=255,De=a.X,Ee=a.ga;"ew"==f[0]&&(kc=2,Ce=65535,De=a.Fa,Ee=a.ub);var Fe=kc<<1,Ge=f[1];if(null==Ge)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 lc=X(a,Ge);if(lc)for(var mc=2;mced;){for(var Na=null,Gf=256;65536>Gb.D>>>0;){Ie.D=a.Fa(Gb,2);if(null==Gb.D||!Gf--)break;for(var Hf=a,nc=Ie,Je=null,Hb=nc.D,Ke=Hb,fd=1;6>=fd&&Hb;fd++){if(2nf){if(jf(d,this.W)){this.H=new Hc(this,qf,"failsafe");jf(this.H)&&(wf(this,d),a=2,ff(this.H));H(this.H,"timestamp",la());gf(this.H);var e=this.w&&!this.J;if(1==a||qa("Click OK to restore the previous "+pf+" machine state, or CANCEL to reset the machine.")){if(c=hf(d)){var f=kf(d,"code"),h=kf(d,"data");f&&("ok"==f?jf(d,h):("error"==f&&"no machine state"!= -h?(this.na("Error: "+h),"unable to verify user"==h&&(ua("user",""),this.u=null)):this.g(f+": "+h),ff(d),jf(d)?(c=hf(d),e=!0):c=!1))}e&&vf(this,c?d:null)}else 2==a&&d.clear()}else vf(this);delete this.W;delete this.Y}e=Za(this.id);for(f=0;fa[1];a=a[2];this.sa=!0;this.A.ia=!0;var d=this.T.power;d&&(d.textContent="Shutdown");this.b&&(xf(this,this.b,b,c,a),tc(this.b));this.ka&&(wf(this,b),b.clear());!c&&this.H&&(this.H.clear(),delete this.H);this.C=0}; -function wf(a,b){if(qa("There may be a problem with your "+pf+" machine.\n\nTo help us diagnose it, click OK to send this "+pf+" machine state to http://www.pcjs.org.")){var c=a.ra,d=a.u||"",e=b.toString(),f=qf,h={};h.app=pf;h.ver=f;h.url=c;h.user=d;h.type="bug";h.data=e;na("http://www.pcjs.org/api/v1/report",h,!0)}} -function df(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new Hc(a,qf),h=new Hc(a,qf,"validate"),g=la();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.22.0");H(f,"url",window?window.location.href:null);H(f,"browser",pa());a.b&&a.b.Aa&&(c&&a.b.da(),d=a.b.Aa(b,c),"object"===typeof d&&H(f,a.b.id,d),c&&(a.b.A.ia=!1,!1===d&&(e=null)));for(var g=Za(a.id),l=0;l>>e.ea;0>8|(U&255)<<8);n>E&B,K=d.sa,ka=n++,P=p[P],xa=void 0,xa=d.C?(K.height-ka-1)*K.width+u:ka+u*K.width,xa=xa*P.length;K.data[xa]=P[0];K.data[xa+1]=P[1];K.data[xa+2]=P[2];K.data[xa+3]=P[3];E+=O}n>z&&(z=n);u=h&&(h=u+1)}g+=2;k++;if(n>=d.H&&(n=0,u++,u>d.W))break}d.la=!0;eg.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1pc8080$2")); -g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(n){g=null,a=n.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");na(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=g[0],k,p=/( [a-z]+=)(['"])(.*?)\2/g;k=p.exec(f);)l=0>l.indexOf(k[1])?l.replace(">",k[0]+">"):l.replace(new RegExp(k[1]+"(['\"])(.*?)\\1"),k[0]);g[0]!=l&&(h=h.replace(g[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/, +function he(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(null!=b&&1>8&255;case "C":d.O=g&255;break;case "D":d.P= +g&255;break;case "DE":d.P=g>>8&255;case "E":d.R=g&255;break;case "H":d.S=g&255;break;case "HL":d.S=g>>8&255;case "L":d.V=g&255;break;case "SP":d.ca=g&65535;break;case "PC":F(d,g);a.Y=T(d.M);break;case "PS":Dc(d,g);break;case "C":d.I=g?d.I|256:d.I&255;break;case "P":g?Nc(d)||(d.Z^=1):Nc(d)&&(d.Z^=1);break;case "A":d.la=g?~d.Z&16|d.la&-17:d.Z&16|d.la&-17;break;case "Z":d.I=g?d.I&-256:d.I|255;break;case "S":g?Qc(d)||(d.Z^=192):Qc(d)&&(d.Z^=192);break;case "I":d.ra=g?d.ra|512:d.ra&-513;break;default:a.g("unknown register: "+ +e);return}if(!h){a.g("invalid value: "+f);return}rc(d);a.g("updated registers:")}a.g(Pe(a));c&&(a.Y=T(d.M),ie(a,Z(a.Y.D)))}}function af(a,b){b=ia(b);var c=b.match(/^(['"])(.*?)\1$/);c?a.g(fe(a,c[2])):Zd(a,b,!0)}function bf(a,b,c){var d="t"!=b;c=Se(a,c,null,!0)||1;var e=1==c?0:1;"tc"==b&&(e=c,c=1);Ba(c,function(){return gb(a,!0)&&a.bb(e,d,!1)},function(){rc(a.b);gb(a,!1)})} +function ie(a,b,c,d){if(b=W(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){d=W(a,c,!0);if(!d||d.Dg[0].indexOf("+"))){var k=g[0]+":";g[2]&&(k+=" "+g[2]);a.g(k)}g[3]&&(h=g[3],f=null);f=oe(a,b,h,f);a.g(f);a.Y=b;e-=b.D-l;c++}}} +function ae(a,b,c,d){if(c)if(b){0>a.G&&a.C.length&&(a.G=0);if(0>a.G||b!=a.C[a.G])a.C.splice(0,0,b),a.G=0;a.G--}else a.ia?b="end":b=a.C[a.G+1];a=[];if(b){b=b.toLowerCase().replace(/""/g,"'");c=0;var e=null;d=d||";";for(var f=0;f<=b.length;f++){var h=b.charAt(f);if('"'==h||"'"==h)e?h==e&&(e=null):e=h;else if(h==d&&!e||!h)a.push(ia(b.substring(c,f))),c=f+1}}return a} +function ne(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.ia&&(a.g("ended assemble at "+Z(a.ha.D)),a.Y=a.ha,a.ia=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.xa=null;if(ib(a)&&0k||"z"ya.length&&(a.g("note: only "+ya.length+" available"),Y=ya.length);U-=Y;0>U&&(null==ya[ya.length-1].D?(Y=U+Y,U=0):U+=ya.length);var Wc=[];"call"== +we&&(ab=1E5,Wc=["CALL"]);for(void 0!==ve&&a.g(Y+" instructions earlier:");0=ya.length&&(U=0);a.Nb=Y;ye++;ab--}}ye||(a.g("no "+xe+"history available"),a.Nb=void 0)}else{var dc=W(a,A);if(dc){var ec=0;X&&("l"==X.charAt(0)&&(X=X.substr(1)||zf),ec=Se(a,X)>>>0,65536>4||1;Bf--&&0ic?String.fromCharCode(ic):".";gc--}La&&(La+="\n");La+=A+" "+Cb+(0==Bb?" "+Yc:"")}La&&a.g(La);a.Gb=dc}}}}break;case "e":if("else"==f[0])break;var jc=1,Be=255,Ce=a.X,De=a.ga;"ew"==f[0]&&(jc=2,Be=65535,Ce=a.Ha,De=a.vb);var Ee=jc<<1,Fe=f[1];if(null==Fe)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 kc=W(a,Fe);if(kc)for(var lc=2;lcdd;){for(var Ma=null,Gf=256;65536>Fb.D>>>0;){He.D=a.Ha(Fb,2);if(null==Fb.D||!Gf--)break;for(var Hf=a,mc=He,Ie=null,Gb=mc.D,Je=Gb,ed=1;6>=ed&&Gb;ed++){if(2mf){if(hf(d,this.W)){this.H=new Gc(this,pf,"failsafe");hf(this.H)&&(vf(this,d),a=2,ef(this.H));H(this.H,"timestamp",ma());ff(this.H);var e=this.w&&!this.J;if(1==a||ra("Click OK to restore the previous "+of+" machine state, or CANCEL to reset the machine.")){if(c=gf(d)){var f=jf(d,"code"),h=jf(d,"data");f&&("ok"==f?hf(d,h):("error"==f&&"no machine state"!= +h?(this.na("Error: "+h),"unable to verify user"==h&&(va("user",""),this.u=null)):this.g(f+": "+h),ef(d),hf(d)?(c=gf(d),e=!0):c=!1))}e&&uf(this,c?d:null)}else 2==a&&d.clear()}else uf(this);delete this.W;delete this.Y}e=Ya(this.id);for(f=0;fa[1];a=a[2];this.sa=!0;this.A.ka=!0;var d=this.T.power;d&&(d.textContent="Shutdown");this.b&&(wf(this,this.b,b,c,a),sc(this.b));this.ha&&(vf(this,b),b.clear());!c&&this.H&&(this.H.clear(),delete this.H);this.C=0}; +function vf(a,b){if(ra("There may be a problem with your "+of+" machine.\n\nTo help us diagnose it, click OK to send this "+of+" machine state to http://www.pcjs.org.")){var c=a.qa,d=a.u||"",e=b.toString(),f=pf,h={};h.app=of;h.ver=f;h.url=c;h.user=d;h.type="bug";h.data=e;oa("http://www.pcjs.org/api/v1/report",h,!0)}} +function cf(a,b,c){var d,e="none";if(a.C)return null;a.C--;var f=new Gc(a,pf),h=new Gc(a,pf,"validate"),g=ma();H(h,"timestamp",g);H(f,"timestamp",g);H(f,"version","1.22.0");H(f,"url",window?window.location.href:null);H(f,"browser",qa());a.b&&a.b.Aa&&(c&&a.b.da(),d=a.b.Aa(b,c),"object"===typeof d&&H(f,a.b.id,d),c&&(a.b.A.ka=!1,!1===d&&(e=null)));for(var g=Ya(a.id),l=0;l>>e.ea;0>8|(w&255)<<8);n>da&la,P=d.xa,A=n++,X=M,M=void 0,M=d.C?(P.height-A-1)*P.width+p:A+p*P.width;X&&(208<=A&&236>A?X=d.ba+0:28<=A&&72>A&&(X=d.ba+1));A=d.W[X];M*=A.length;P.data[M]=A[0];P.data[M+1]=A[1];P.data[M+2]=A[2];P.data[M+3]=A[3];da+=u}n>x&&(x=n);p=h&&(h=p+1)}g+=2;k++;if(n>=d.H&&(n=0,p++,p>d.Y))break}d.sa=!0;eg.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/().*?(<\/xsl:variable>)/,"$1pc8080$2")); +g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/\s*/g,"")),window.ActiveXObject||"ActiveXObject"in window?(g=new window.ActiveXObject("Microsoft.XMLDOM"),g.async=!1,g.loadXML(a)):g=(new window.DOMParser).parseFromString(a,"text/xml")}catch(p){g=null,a=p.message}else a="unrecognized XML: "+(255/g.exec(a)){var e=d[2];b("Loading "+e+"...");oa(e,null,!0,function(f,h,g){if(g||!h)c(a,"unable to resolve XML reference: "+d[0]+" ("+g+")");else{if(f=d[3])if(g=h.match(new RegExp("<"+d[1]+"[^>]*>"))){for(var l=g[0],k,n=/( [a-z]+=)(['"])(.*?)\2/g;k=n.exec(f);)l=0>l.indexOf(k[1])?l.replace(">",k[0]+">"):l.replace(new RegExp(k[1]+"(['\"])(.*?)\\1"),k[0]);g[0]!=l&&(h=h.replace(g[0],l))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/, "");a=a.replace(d[0],h);Pf(a,b,c)}})}else c(a,null)} -function Qf(a,b,c,d){function e(a){if(void 0===g){var b=h&&A(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=fa(a))}function f(a){e("Error: "+a);l&&(--Mf||La(!0));l=!1}var h,g,l=!0;Mf++;Xa[a]={};try{if(h=document.getElementById(a)){var k;if("object"==typeof resources&&(k=resources.css)){var p=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css";n.styleSheet?n.styleSheet.cssText=k:n.appendChild(document.createTextNode(k));p.appendChild(n)}c|| -(c="/versions/pc8080/1.22.0/components.xsl");k=function(d,g){g?Nf(c,null,null,!1,e,function(d,k){if(k)if(Ya(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--Mf||La(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--Mf||La(!0)):f("invalid machine element: "+ -a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?Nf(b,a,d,!0,e,k):Of(b,null,a,d,!1,e,k)}else f("missing machine element: "+a)}catch(u){f(u.message)}return l}window.embedPC8080=function(a,b,c,d){La(!1);return Qf(a,b,c,d)};window.enableEvents=La;window.sendEvent=Pa; -function Rf(a,b,c,d){if(!c&&b){d.push(b);a=Xa[d[0]];b=null;for(var e in a)if(da(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?na(b,null,!0,function(a,b){Sf(b,d)}):Sf(null,d)}else t("Error ("+c+") requesting "+a)} -function Sf(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Xa[f],l={},k;for(k in g){var p=g[k],n=ca(k);if("xml"==n){for(n=/[ \t]*]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=n.exec(g[k]);){var u=d[2];u&&(g[u]||(p=p.replace(d[0],"")))}d=k=ba(k)}else"xsl"==n&&(e=k=ba(k));l[k]=p}a&&(l[k="css"]=a);b[2]&&(l[k="parms"]=b[2]);b[3]&&(l[k="state"]=b[3]);d&&e?(k=JSON.stringify(l),h+=".js",c=c[1]+"var resources="+k+";"+c[2]+c[3],c=c.replace(/\u00A9/g, -"©"),k=h,g=null,l="data:application/javascript,",l=va("Firefox")?l+encodeURIComponent(c):l+encodeURI(c),k&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=l,g.download=k,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+k+"."):(window.open(l),c="Check your browser for a new window/tab containing the requested data"+(k?" ("+k+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n', +function Qf(a,b,c,d){function e(a){if(void 0===g){var b=h&&C(h,"machine-warning");g=b&&b[0]||h}g&&(g.innerHTML=ga(a))}function f(a){e("Error: "+a);l&&(--Mf||Ka(!0));l=!1}var h,g,l=!0;Mf++;Wa[a]={};try{if(h=document.getElementById(a)){var k;if("object"==typeof resources&&(k=resources.css)){var n=document.head||document.getElementsByTagName("head")[0],p=document.createElement("style");p.type="text/css";p.styleSheet?p.styleSheet.cssText=k:p.appendChild(document.createTextNode(k));n.appendChild(p)}c|| +(c="/versions/pc8080/1.22.0/components.xsl");k=function(d,g){g?Nf(c,null,null,!1,e,function(d,k){if(k)if(Xa(a,c,d),e("Processing "+b+"..."),window.ActiveXObject||"ActiveXObject"in window){var l=g.transformNode(k);l?(h.outerHTML=l,--Mf||Ka(!0)):f("transformNodeToObject failed")}else document.implementation&&document.implementation.createDocument?(l=new XSLTProcessor,l.importStylesheet(k),(l=l.transformToFragment(g,document))?h.parentNode?(h.parentNode.replaceChild(l,h),--Mf||Ka(!0)):f("invalid machine element: "+ +a):f("transformToFragment failed")):f("unable to transform XML: unsupported browser");else f(d)}):f(d)};"<"!=b.charAt(0)?Nf(b,a,d,!0,e,k):Of(b,null,a,d,!1,e,k)}else f("missing machine element: "+a)}catch(x){f(x.message)}return l}window.embedPC8080=function(a,b,c,d){Ka(!1);return Qf(a,b,c,d)};window.enableEvents=Ka;window.sendEvent=Oa; +function Rf(a,b,c,d){if(!c&&b){d.push(b);a=Wa[d[0]];b=null;for(var e in a)if(ea(e,"components.xsl")){b=e.replace(".xsl",".css");break}b?oa(b,null,!0,function(a,b){Sf(b,d)}):Sf(null,d)}else t("Error ("+c+") requesting "+a)} +function Sf(a,b){var c,d,e,f=b[0],h=b[1];c=b[4];c=c.match(/^(\s*\(function\(\)\{)([\s\S]*)(}\)\(\);\s*)$/);var g=Wa[f],l={},k;for(k in g){var n=g[k],p=ca(k);if("xml"==p){for(p=/[ \t]*]*path=(['"])(.*?)\1.*?<\/disk>\n?/g;d=p.exec(g[k]);){var x=d[2];x&&(g[x]||(n=n.replace(d[0],"")))}d=k=ba(k)}else"xsl"==p&&(e=k=ba(k));l[k]=n}a&&(l[k="css"]=a);b[2]&&(l[k="parms"]=b[2]);b[3]&&(l[k="state"]=b[3]);d&&e?(k=JSON.stringify(l),h+=".js",c=c[1]+"var resources="+k+";"+c[2]+c[3],c=c.replace(/\u00A9/g, +"©"),k=h,g=null,l="data:application/javascript,",l=wa("Firefox")?l+encodeURIComponent(c):l+encodeURI(c),k&&(g=document.createElement("a"),"string"!=typeof g.download&&(g=null)),g?(g.href=l,g.download=k,document.body.appendChild(g),g.click(),document.body.removeChild(g),c="Check your Downloads folder for "+k+"."):(window.open(l),c="Check your browser for a new window/tab containing the requested data"+(k?" ("+k+")":"")+"."),c+=', copy it to your web server as "'+h+'", and then add the following to your web page:\n\n', c+='
\n',c+="...\n",c+='