Eliminate unwanted pixel scaling

This commit is contained in:
Jeff Parsons 2016-05-02 19:58:36 -07:00
commit 5fbcc034e3
4 changed files with 85 additions and 78 deletions

View file

@ -273,6 +273,7 @@ CPUSim.prototype.setBinding = function(sHTMLType, sBinding, control, sValue)
case "SP":
case "PC":
case "PS":
case "IF":
case "SF":
case "ZF":
case "AF":
@ -1018,6 +1019,7 @@ CPUSim.prototype.updateStatus = function(fForce)
this.updateReg("PC", this.getPC(), 4);
var regPS = this.getPS();
this.updateReg("PS", regPS, 4);
this.updateReg("IF", (regPS & CPUDef.PS.IF)? 1 : 0, 1);
this.updateReg("SF", (regPS & CPUDef.PS.SF)? 1 : 0, 1);
this.updateReg("ZF", (regPS & CPUDef.PS.ZF)? 1 : 0, 1);
this.updateReg("AF", (regPS & CPUDef.PS.AF)? 1 : 0, 1);

View file

@ -107,6 +107,11 @@ function Video(parmsVideo, canvas, context, textarea, container)
this.textareaScreen = textarea;
this.inputScreen = textarea || canvas || null;
this.contextScreen['webkitImageSmoothingEnabled'] = false;
this.contextScreen['mozImageSmoothingEnabled'] = false;
this.contextScreen['msImageSmoothingEnabled'] = false;
this.contextScreen['imageSmoothingEnabled'] = false;
this.rotateScreen = parmsVideo['screenRotate'];
if (this.rotateScreen == 90) {
this.contextScreen.translate(0, this.cyScreen);
@ -129,7 +134,6 @@ function Video(parmsVideo, canvas, context, textarea, container)
this.canvasBuffer = document.createElement("canvas");
this.canvasBuffer.width = cxBuffer;
this.canvasBuffer.height = cyBuffer;
// this.canvasBuffer.style['image-rendering'] = "pixelated";
this.contextBuffer = this.canvasBuffer.getContext("2d");
}
@ -372,7 +376,6 @@ Video.init = function()
eCanvas.setAttribute("width", parmsVideo['screenWidth']);
eCanvas.setAttribute("height", parmsVideo['screenHeight']);
eCanvas.style.backgroundColor = parmsVideo['screenColor'];
// eCanvas.style['image-rendering'] = "pixelated";
/*
* The "contenteditable" attribute on a canvas element NOTICEABLY slows down canvas drawing on

View file

@ -19,44 +19,44 @@ w.prototype={constructor:w,parent:null,toString:function(){return this.name?this
this.oa=function(a,b,c){this.g(a,"notice",c)}),!0;default:return!1}},log:function(){},g:function(){},status:function(a){this.g(this.cb+": "+a)},oa:function(a,b){b||t(a)},za:function(){return this.A.ia=!0},ya:function(a,b){b&&(this.A.ia=!1);return!0}};function db(a,b,c,d,e,f){var h=!0;a.F&&(!0===h?h=0:null==h&&(h=a.ha),eb(a.F,a,b,c,d,e,f,h))}function fb(a,b){if(a.F){a===a.F?b|=0:b=b||a.ha;var c=a.F.ha&b;return!!b&&c===b||!!(c&a.F.Xb)}return!1}
function gb(a,b){if(a.A.vb)return a.A.Oa&&(a.A.Oa=!1),a.A.vb=!1;if(a.A.Qa)return a.g(a.toString()+" error"),!1;a.A.Oa=b;return a.A.Oa}function hb(a,b){a.A.Oa&&(b?a.A.vb=!0:void 0===b&&a.g(a.toString()+" busy"));return a.A.Oa}function C(a){if(!a.A.Qa&&(a.A.Ra=!0,a.A.Ra)){var b=a.pb;a.pb=null;b&&b()}}function ib(a,b){b&&(a.A.Ra?b():a.pb=b);return a.A.Ra}function jb(a,b){a.A.Qa=!0;a.oa(b)}
var kb="undefined"!==typeof ArrayBuffer,lb=[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];function mb(a){w.call(this,"Panel",a,mb)}Wa(mb);m=mb.prototype;m.qa=function(a,b,c,d){return this.u&&this.u.qa(a,b,c,d)||this.b&&this.b.qa(a,b,c,d)||this.w&&this.w.qa(a,b,c,d)||this.F&&this.F.qa(a,b,c,d)?!0:this.parent.qa.call(this,a,b,c,d)};m.Fa=function(a,b,c,d){this.u=a;this.B=b;this.b=c;this.F=d;this.w=nb(a,"Keyboard")};m.za=function(a,b){b||ob();return!0};m.ya=function(){return!0};m.va=function(){};
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];function mb(a){w.call(this,"Panel",a,mb)}Wa(mb);m=mb.prototype;m.qa=function(a,b,c,d){return this.w&&this.w.qa(a,b,c,d)||this.b&&this.b.qa(a,b,c,d)||this.u&&this.u.qa(a,b,c,d)||this.F&&this.F.qa(a,b,c,d)?!0:this.parent.qa.call(this,a,b,c,d)};m.Fa=function(a,b,c,d){this.w=a;this.B=b;this.b=c;this.F=d;this.u=nb(a,"Keyboard")};m.za=function(a,b){b||ob();return!0};m.ya=function(){return!0};m.va=function(){};
function ob(){for(var a=!1,b=A(document,"pc8080","panel"),c=0;c<b.length;c++){var d=b[c],e=y(d),f;a:{f=e.id;if(void 0!==f)for(var h=void 0,h=0;h<x.length;h++)if(x[h].id===f){f=x[h];break a}f=null}f||(a=!0,f=new mb(e));cb(f,d);a&&C(f)}}Ja(ob);
function pb(a,b,c){w.call(this,"Bus",a,pb);this.b=b;this.F=c;this.J=a.busWidth||16;this.X=Math.pow(2,this.J);this.D=this.X-1|0;this.ea=16>=this.J?10:20>=this.J?12:24>=this.J?14:15;this.ua=1<<this.ea;this.Y=this.ua>>2;this.B=this.ua-1;this.M=this.X/this.ua|0;this.K=this.M-1;this.u=[];this.w=[];this.G=this.H=!1;this.aa=[];this.ba=[];a=new E;qb(a,this.F);this.T=Array(this.M);for(b=0;b<this.M;b++)this.T[b]=a;C(this)}Wa(pb);m=pb.prototype;m.reset=function(){};m.za=function(a,b){b||this.reset();return!0};
function rb(a,b,c,d){for(var e=b>>>a.ea;0<c&&e<a.T.length;){var f=a.T[e],h=e*a.ua,g=a.ua-(b-h);g>c&&(g=c);if(f&&f.size){if(f.type==d){if(b+c<=f.C)return f.mb+=f.C-b,f.C=b,!0;if(b>=f.C+f.mb){g=f.size-(b-h);g>c&&(g=c);f.mb=b-f.C+g;b=h+a.ua;c-=g;e++;continue}}return sb(1,b,c)}b=new E(b,g,a.ua,d);qb(b,a.F,f);a.T[e++]=b;b=h+a.ua;c-=g}return 0>=c?!0:sb(2,b,c)}m.W=function(a){return this.T[(a&this.D)>>>this.ea].Za(a&this.B,a)};function tb(a,b){return a.T[(b&a.D)>>>a.ea].kb(b&a.B,b)}
function pb(a,b,c){w.call(this,"Bus",a,pb);this.b=b;this.F=c;this.J=a.busWidth||16;this.X=Math.pow(2,this.J);this.D=this.X-1|0;this.ea=16>=this.J?10:20>=this.J?12:24>=this.J?14:15;this.ua=1<<this.ea;this.Y=this.ua>>2;this.B=this.ua-1;this.M=this.X/this.ua|0;this.K=this.M-1;this.w=[];this.u=[];this.G=this.H=!1;this.aa=[];this.ba=[];a=new D;qb(a,this.F);this.T=Array(this.M);for(b=0;b<this.M;b++)this.T[b]=a;C(this)}Wa(pb);m=pb.prototype;m.reset=function(){};m.za=function(a,b){b||this.reset();return!0};
function rb(a,b,c,d){for(var e=b>>>a.ea;0<c&&e<a.T.length;){var f=a.T[e],h=e*a.ua,g=a.ua-(b-h);g>c&&(g=c);if(f&&f.size){if(f.type==d){if(b+c<=f.C)return f.mb+=f.C-b,f.C=b,!0;if(b>=f.C+f.mb){g=f.size-(b-h);g>c&&(g=c);f.mb=b-f.C+g;b=h+a.ua;c-=g;e++;continue}}return sb(1,b,c)}b=new D(b,g,a.ua,d);qb(b,a.F,f);a.T[e++]=b;b=h+a.ua;c-=g}return 0>=c?!0:sb(2,b,c)}m.W=function(a){return this.T[(a&this.D)>>>this.ea].Za(a&this.B,a)};function tb(a,b){return a.T[(b&a.D)>>>a.ea].kb(b&a.B,b)}
m.Ea=function(a){var b=a&this.B,c=(a&this.D)>>>this.ea;return b!=this.B?this.T[c].Tb(b,a):this.T[c++].Za(b,a)|this.T[c&this.K].Za(0,a+1)<<8};function ub(a,b){var c=b&a.B,d=(b&a.D)>>>a.ea;return c!=a.B?a.T[d].Ab(c,b):a.T[d++].kb(c,b)|a.T[d&a.K].kb(0,b+1)<<8}m.ga=function(a,b){this.T[(a&this.D)>>>this.ea].ab(a&this.B,b&255,a)};function vb(a,b,c){a.T[(b&a.D)>>>a.ea].nb(b&a.B,c&255,b)}
m.sb=function(a,b){var c=a&this.B,d=(a&this.D)>>>this.ea;c!=this.B?this.T[d].Vb(c,b&65535,a):(this.T[d++].ab(c,b&255,a),this.T[d&this.K].ab(0,b>>8&255,a+1))};function wb(a,b){if(void 0===b)return a.G=!a.G,a.G;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]}
function Fb(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.u[b],g=a.aa[b]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h?(h[0]&&(l=h[0](b,c),void 0===l?l=k:l&=k),a.F&&a.G!=h[1]&&Gb(a.F,b,l)):a.F&&(eb(a.F,a,b,null,c),a.G&&Gb(a.F,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Hb(a,b){if(void 0===b)return a.H=!a.H,a.H;void 0===a.w[b]&&(a.w[b]=[null,!1]);a.w[b][1]=!a.w[b][1];return a.w[b][1]}
function Ib(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.w[b],g=a.ba[b]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h){if(h[0])h[0](b,k,d);a.F&&a.H!=h[1]&&Jb(a.F,b,k)}else a.F&&(eb(a.F,a,b,k,d),a.H&&Jb(a.F,b,k));f+=g<<3;b+=g;e-=g}}function sb(a,b,c){t("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Kb;if(kb){var Lb=new ArrayBuffer(2);(new DataView(Lb)).setUint16(0,256,!0);Kb=256===(new Uint16Array(Lb))[0]}else Kb=!1;var Mb=Kb;
function E(a,b,c,d){this.id=Nb+=2;this.b=null;this.C=a;this.mb=b;this.size=c||0;this.type=d||Ob;this.u=d==Pb;qb(this);this.wa=this.Kb=!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),Qb(this,Mb?Rb:Sb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Qb(this,Tb)}else Qb(this)}var Ob=0,Pb=2,Ub=["NONE","RAM","ROM","VIDEO","H/W"],Nb=0;
E.prototype={constructor:E,parent:null,save:function(){var a,b;if(kb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.H.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(kb)for(b=0;b<a.length;b++)this.H.setInt32(b<<2,a[b],!0);else this.b=a;return this.wa=!0}return!1},Ha:function(a,b){b?0===this.w++&&Vb(this,Wb,!1):0===this.V++&&Xb(this,Wb,!1)},M:function(){this.F&&fb(this.F,129)&&this.F.message("attempt to read invalid block %"+q(this.C),!0);
m.sb=function(a,b){var c=a&this.B,d=(a&this.D)>>>this.ea;c!=this.B?this.T[d].Vb(c,b&65535,a):(this.T[d++].ab(c,b&255,a),this.T[d&this.K].ab(0,b>>8&255,a+1))};function wb(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 Fb(a,b,c){for(var d=1,e=0,f=0;0<d;){var h=a.w[b],g=a.aa[b]||1,k=1==g?255:2==g?65535:-1,l=k;void 0!==h?(h[0]&&(l=h[0](b,c),void 0===l?l=k:l&=k),a.F&&a.G!=h[1]&&Gb(a.F,b,l)):a.F&&(eb(a.F,a,b,null,c),a.G&&Gb(a.F,b,l));e|=l<<f;f+=g<<3;b+=g;d-=g}return e}function Hb(a,b){if(void 0===b)return a.H=!a.H,a.H;void 0===a.u[b]&&(a.u[b]=[null,!1]);a.u[b][1]=!a.u[b][1];return a.u[b][1]}
function Ib(a,b,c,d){for(var e=1,f=0;0<e;){var h=a.u[b],g=a.ba[b]||1,k=1==g?255:2==g?65535:-1,k=(c>>>=f)&k;if(void 0!==h){if(h[0])h[0](b,k,d);a.F&&a.H!=h[1]&&Jb(a.F,b,k)}else a.F&&(eb(a.F,a,b,k,d),a.H&&Jb(a.F,b,k));f+=g<<3;b+=g;e-=g}}function sb(a,b,c){t("Memory block error ("+a+": "+q(b)+","+q(c)+")");return!1}var Kb;if(kb){var Lb=new ArrayBuffer(2);(new DataView(Lb)).setUint16(0,256,!0);Kb=256===(new Uint16Array(Lb))[0]}else Kb=!1;var Mb=Kb;
function D(a,b,c,d){this.id=Nb+=2;this.b=null;this.C=a;this.mb=b;this.size=c||0;this.type=d||Ob;this.w=d==Pb;qb(this);this.wa=this.Kb=!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),Qb(this,Mb?Rb:Sb);else{this.b=Array(c>>2);for(a=0;a<this.b.length;a++)this.b[a]=0;Qb(this,Tb)}else Qb(this)}var Ob=0,Pb=2,Ub=["NONE","RAM","ROM","VIDEO","H/W"],Nb=0;
D.prototype={constructor:D,parent:null,save:function(){var a,b;if(kb)for(a=Array(this.size>>2),b=0;b<a.length;b++)a[b]=this.H.getInt32(b<<2,!0);else a=this.b;return a},restore:function(a){if(a&&this.size==a.length<<2){var b;if(kb)for(b=0;b<a.length;b++)this.H.setInt32(b<<2,a[b],!0);else this.b=a;return this.wa=!0}return!1},Ha:function(a,b){b?0===this.u++&&Vb(this,Wb,!1):0===this.V++&&Xb(this,Wb,!1)},M:function(){this.F&&fb(this.F,129)&&this.F.message("attempt to read invalid block %"+q(this.C),!0);
return 255},D:function(a,b){this.F&&fb(this.F,129)&&this.F.message("attempt to write "+r(b)+" to invalid block %"+q(this.C),!0)},X:function(a,b){return this.Za(a++,b++)|this.Za(a,b)<<8},J:function(a,b,c){this.ab(a++,b&255,c++);this.ab(a,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},Ba:function(a,b){var c=a>>2,d=(a&3)<<3;this.b[c]=this.b[c]&~(255<<d)|b<<d;this.wa=!0},cb:function(a,
b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.wa=!0},aa:function(a,b){if(this.F&&null!=this.C){var c=this.F;Yb(c,this.C+a,1,c.ba)&&c.da(!0)}return this.kb(a,b)},ma:function(a,b){if(this.F&&null!=this.C){var c=this.F;Yb(c,this.C+a,2,c.ba)&&c.da(!0)}return this.Ab(a,b)},Da:function(a,b,c){if(this.F&&null!=this.C){var d=this.F;Yb(d,this.C+a,1,d.H)&&d.da(!0)}this.u?this.D(a,b,c):this.nb(a,b,c)},Na:function(a,
b,c){if(this.F&&null!=this.C){var d=this.F;Yb(d,this.C+a,2,d.H)&&d.da(!0)}this.u?this.D(a,b,c):this.Bb(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)},na:function(a){return a&1?this.B[a]|this.B[a+1]<<8:this.K[a>>1]},sa:function(a,b){this.B[a]=b;this.wa=!0},Aa:function(a,b){this.B[a]=b;this.wa=!0},Ga:function(a,b){this.H.setUint16(a,b,!0);this.wa=!0},bb:function(a,b){a&1?(this.B[a]=b,this.B[a+1]=b>>8):this.K[a>>1]=b;this.wa=!0}};
function qb(a,b,c){a.F=b;a.V=a.w=0;c&&((a.V=c.V)&&Xb(a,Wb,!1),(a.w=c.w)&&Vb(a,Wb,!1))}function Zb(a,b){b?0===--a.w&&(a.ab=a.u?a.D:a.nb,a.Vb=a.u?a.J:a.Bb):0===--a.V&&(a.Za=a.kb,a.Tb=a.Ab)}function Vb(a,b,c){c&&a.w||(a.ab=!a.u&&b[2]||a.D,a.Vb=!a.u&&b[3]||a.J);if(c||void 0===c)a.nb=b[2]||a.D,a.Bb=b[3]||a.J}function Xb(a,b,c){c&&a.V||(a.Za=b[0]||a.M,a.Tb=b[1]||a.X);if(c||void 0===c)a.kb=b[0]||a.M,a.Ab=b[1]||a.X}function Qb(a,b){b||(b=$b);Xb(a,b,void 0);Vb(a,b,void 0)}
var $b=[],Tb=[E.prototype.fa,E.prototype.ra,E.prototype.Ba,E.prototype.cb],Wb=[E.prototype.aa,E.prototype.ma,E.prototype.Da,E.prototype.Na];if(kb)var Sb=[E.prototype.Y,E.prototype.ka,E.prototype.sa,E.prototype.Ga],Rb=[E.prototype.ba,E.prototype.na,E.prototype.Aa,E.prototype.bb];
b){var c=a>>2,d=(a&3)<<3;24>d?this.b[c]=this.b[c]&~(65535<<d)|b<<d:(this.b[c]=this.b[c]&16777215|b<<24,c++,this.b[c]=this.b[c]&-256|b>>8);this.wa=!0},aa:function(a,b){if(this.F&&null!=this.C){var c=this.F;Yb(c,this.C+a,1,c.ba)&&c.da(!0)}return this.kb(a,b)},ma:function(a,b){if(this.F&&null!=this.C){var c=this.F;Yb(c,this.C+a,2,c.ba)&&c.da(!0)}return this.Ab(a,b)},Da:function(a,b,c){if(this.F&&null!=this.C){var d=this.F;Yb(d,this.C+a,1,d.H)&&d.da(!0)}this.w?this.D(a,b,c):this.nb(a,b,c)},Na:function(a,
b,c){if(this.F&&null!=this.C){var d=this.F;Yb(d,this.C+a,2,d.H)&&d.da(!0)}this.w?this.D(a,b,c):this.Bb(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)},na:function(a){return a&1?this.B[a]|this.B[a+1]<<8:this.K[a>>1]},sa:function(a,b){this.B[a]=b;this.wa=!0},Aa:function(a,b){this.B[a]=b;this.wa=!0},Ga:function(a,b){this.H.setUint16(a,b,!0);this.wa=!0},bb:function(a,b){a&1?(this.B[a]=b,this.B[a+1]=b>>8):this.K[a>>1]=b;this.wa=!0}};
function qb(a,b,c){a.F=b;a.V=a.u=0;c&&((a.V=c.V)&&Xb(a,Wb,!1),(a.u=c.u)&&Vb(a,Wb,!1))}function Zb(a,b){b?0===--a.u&&(a.ab=a.w?a.D:a.nb,a.Vb=a.w?a.J:a.Bb):0===--a.V&&(a.Za=a.kb,a.Tb=a.Ab)}function Vb(a,b,c){c&&a.u||(a.ab=!a.w&&b[2]||a.D,a.Vb=!a.w&&b[3]||a.J);if(c||void 0===c)a.nb=b[2]||a.D,a.Bb=b[3]||a.J}function Xb(a,b,c){c&&a.V||(a.Za=b[0]||a.M,a.Tb=b[1]||a.X);if(c||void 0===c)a.kb=b[0]||a.M,a.Ab=b[1]||a.X}function Qb(a,b){b||(b=$b);Xb(a,b,void 0);Vb(a,b,void 0)}
var $b=[],Tb=[D.prototype.fa,D.prototype.ra,D.prototype.Ba,D.prototype.cb],Wb=[D.prototype.aa,D.prototype.ma,D.prototype.Da,D.prototype.Na];if(kb)var Sb=[D.prototype.Y,D.prototype.ka,D.prototype.sa,D.prototype.Ga],Rb=[D.prototype.ba,D.prototype.na,D.prototype.Aa,D.prototype.bb];
function ac(a,b){w.call(this,"CPU",a,ac,1);var c=a.cycles||b,d=a.multiplier||1;this.i={};this.i.Ya=c;this.i.rb=0;this.i.La=d;this.i.xb=Math.round(this.i.Ya/1E4)/100;this.i.Ja=this.i.xb*this.i.La;this.A.la=!1;this.A.wb=!1;this.A.Jb=a.autoStart;this.A.Lb=!1;this.A.Pa=!1;this.i.eb=this.i.Va=0;this.i.fb=a.csStart;this.i.Ua=a.csInterval;this.i.Wa=a.csStop;this.aa=this.Ma.bind(this);C(this)}Wa(ac);var bc=["power","reset"];m=ac.prototype;
m.Fa=function(a,b,c,d){this.u=a;this.B=b;this.F=d;for(b=0;b<bc.length;b++)(c=this.V[bc[b]])&&this.u.qa(null,bc[b],c);this.Da=(b=nb(a,"Video"))&&Math.max(b.Da,b.Zb)||60;this.K=nb(a,"ChipSet");a=cc(a,"autoStart");null!=a&&(this.A.Jb="true"==a?!0:"false"==a?!1:!!a);C(this)};m.reset=function(){this.i.rb=0};m.save=function(){return null};m.restore=function(){return!1};
m.Fa=function(a,b,c,d){this.w=a;this.B=b;this.F=d;for(b=0;b<bc.length;b++)(c=this.V[bc[b]])&&this.w.qa(null,bc[b],c);this.Da=(b=nb(a,"Video"))&&Math.max(b.Da,b.Zb)||60;this.K=nb(a,"ChipSet");a=cc(a,"autoStart");null!=a&&(this.A.Jb="true"==a?!0:"false"==a?!1:!!a);C(this)};m.reset=function(){this.i.rb=0};m.save=function(){return null};m.restore=function(){return!1};
m.za=function(a,b){if(!b){if(a&&this.restore){oc(this);if(!this.restore(a))return!1;pc(this)}else this.reset();if(this.F){var c=this.F;c.g("Type ? for help with PC8080 Debugger commands");c.va();if(c.tb){var d=c.tb;c.tb=null;qc(c,d)}}else this.g("No debugger detected")}rc(this);return!0};m.ya=function(a){return a?this.save():!0};function sc(a){(a.A.Jb||!a.F&&void 0===a.V.run)&&a.Ma(!0)}m.Ob=function(){return 0};
function pc(a){void 0===a.i.fb&&(a.i.fb=0);void 0===a.i.Ua&&(a.i.Ua=-1);void 0===a.i.Wa&&(a.i.Wa=-1);a.A.Pa=0<=a.i.fb&&0<a.i.Ua;a.A.Pa&&(a.i.eb=0,a.i.Va=a.i.fb-a.H)}function tc(a,b){if(a.A.Pa){var c=!1;a.i.eb=a.i.eb+a.Ob()|0;a.i.Va-=b;0>=a.i.Va&&(a.i.Va+=a.i.Ua,c=!0);0<=a.i.Wa&&a.i.Wa<=uc(a)&&(a.i.Ua=a.i.Wa=-1,pc(a),a.da(),c=!0);c&&a.g(uc(a)+" cycles: checksum="+q(a.i.eb))}}
m.qa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.V[b]=c;a=!0;break;case "run":this.V[b]=c;c.onclick=function(){var a;if(a=d.u)if(a=d.u,a.A.ia)a=!0;else{var b=null,c,g=Za(a.id);for(c=0;c<g.length&&(b=g[c],b===a||b.A.Ra);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.ia);c++);c==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.A.Ra?"powered yet":"ready yet"+(b.pb?" (waiting for notification)":""))+".");a=!1}a&&(d.A.la?d.da(!0):d.Ma(!0))};a=
m.qa=function(a,b,c){var d=this;a=!1;switch(b){case "power":case "reset":this.V[b]=c;a=!0;break;case "run":this.V[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;c<g.length&&(b=g[c],b===a||b.A.Ra);c++);if(c==g.length)for(c=0;c<g.length&&(b=g[c],b===a||b.A.ia);c++);c==g.length&&(b=a);t("The "+b.type+" component ("+b.id+") is not "+(b.A.Ra?"powered yet":"ready yet"+(b.pb?" (waiting for notification)":""))+".");a=!1}a&&(d.A.la?d.da(!0):d.Ma(!0))};a=
!0;break;case "speed":this.V[b]=c;a=!0;break;case "setSpeed":this.V[b]=c,c.onclick=function(){vc(d,d.i.La<<1,!0)},c.textContent=this.i.Ja.toFixed(2)+"Mhz",a=!0}return a};function wc(a,b,c){a.H+=b;c&&(a.D=a.b=0)}
function xc(a,b){var c=30;c<a.Da&&(c=a.Da);2>c&&(c=2);var d=1;b&&1<a.i.La&&a.i.Ia&&(d=a.i.Ia/a.i.xb);a.i.Pb=Math.round(1E3/30);a.i.hc=Math.floor(a.i.Ya/c*d);a.i.yb=Math.floor(a.i.Ya/30*d);a.i.Rb=Math.floor(a.i.Ya/a.Da*d);a.i.Qb=Math.floor(a.i.Ya/2*d);b||(a.i.Xa=a.i.yb,a.i.hb=a.i.Rb,a.i.gb=a.i.Qb);a.i.zb=0}function uc(a){return a.H+a.G+a.D-a.b}function oc(a){a.i.Ia=0;a.H=a.G=a.D=a.b=0;pc(a);vc(a,1)}
function vc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.Ia/a.i.Ja?b=1:d=!0;a.i.La=b;b=a.i.xb*a.i.La;if(a.i.Ja!=b){a.i.Ja=b;b=a.i.Ja.toFixed(2)+"Mhz";var e=a.V.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.u&&a.u.lb()}wc(a,a.G);a.G=0;a.i.Ta=ja();a.i.Ka=0;xc(a);return d}
m.Ma=function(a){if(gb(this,!0)){if(!this.A.la){vc(this);this.u&&this.u.start(this.i.Ta,uc(this));this.A.la=!0;this.A.wb=!0;this.K&&this.K.start();var b=this.V.run;b&&(b.textContent="Halt");this.u&&(this.u.va(!0),a&&this.u.lb(!0))}this.i.zb>=this.i.Ya&&xc(this,!0);this.i.ib=0;this.i.qb=ja();this.i.Ka&&(a=this.i.qb-this.i.Ka,a>this.i.Pb&&(this.i.Ta+=a,this.i.Ta>this.i.qb&&(this.i.Ta=this.i.qb)));try{do{var c=this.A.Pa?1:this.i.hc;try{this.$a(c)}catch(e){if("number"!=typeof e)throw e;}var d=this.D-
this.b;this.G+=d;this.i.ib+=d;wc(this,0,!0);tc(this,d);this.i.hb-=d;0>=this.i.hb&&(this.i.hb+=this.i.Rb,this.u&&yc(this.u,this.i.rb++),this.i.rb>this.Da&&(this.i.rb=0));this.i.gb-=d;0>=this.i.gb&&(this.i.gb+=this.i.Qb,this.u&&this.u.va());this.i.Xa-=d;if(0>=this.i.Xa){this.i.Xa+=this.i.yb;break}}while(this.A.la)}catch(e){this.da();rc(this);this.u&&this.u.stop(ja(),uc(this));gb(this,!1);jb(this,e.stack||e.message);return}c=setTimeout;d=this.aa;this.i.Ka=ja();a=this.i.Pb;this.i.ib&&(a=Math.round(a*
this.i.ib/this.i.yb));a-=this.i.Ka-this.i.qb;if(b=this.i.Ka-this.i.Ta)this.i.Ia=Math.round(this.G/(10*b))/100,864E5<=b&&(this.H=0,vc(this));if(0>a||this.i.Ia<this.i.Ja)a=0;this.i.zb+=this.i.ib;this.i.Ka+=a;c(d,a)}else rc(this),this.u&&this.u.stop(ja(),uc(this))};m.$a=function(){return 0};m.da=function(a){hb(this,!0);this.D-=this.b;this.b=0;wc(this,this.G);this.G=0;if(this.A.la){this.A.la=!1;this.K&&this.K.stop();var b=this.V.run;b&&(b.textContent="Run")}this.A.ob=a};
function rc(a,b){a.u&&(yc(a.u,-1),a.u.va(b))}function zc(a){this.Sa=a.model||8080;ac.call(this,a,1E6);this.M=Ac;oc(this);this.A.ob=this.A.Yb=!1;this.Y=0;this.J=[];this.X=0;Bc(this)}Wa(zc,ac);function Cc(a,b){a.J.push(b)}m=zc.prototype;m.reset=function(){this.A.la&&this.da();Bc(this);oc(this);this.A.Qa=!1;this.parent.reset.call(this)};function Bc(a){a.j=0;a.N=0;a.O=0;a.P=0;a.R=0;a.S=0;a.U=0;a.ca=0;F(a,a.X);Dc(a,0);a.w=0}function Ec(a,b){a.X=b;F(a,b)}
function vc(a,b,c){var d=!1;if(void 0!==b){.8>a.i.Ia/a.i.Ja?b=1:d=!0;a.i.La=b;b=a.i.xb*a.i.La;if(a.i.Ja!=b){a.i.Ja=b;b=a.i.Ja.toFixed(2)+"Mhz";var e=a.V.setSpeed;e&&(e.textContent=b);a.g("target speed: "+b)}c&&a.w&&a.w.lb()}wc(a,a.G);a.G=0;a.i.Ta=ja();a.i.Ka=0;xc(a);return d}
m.Ma=function(a){if(gb(this,!0)){if(!this.A.la){vc(this);this.w&&this.w.start(this.i.Ta,uc(this));this.A.la=!0;this.A.wb=!0;this.K&&this.K.start();var b=this.V.run;b&&(b.textContent="Halt");this.w&&(this.w.va(!0),a&&this.w.lb(!0))}this.i.zb>=this.i.Ya&&xc(this,!0);this.i.ib=0;this.i.qb=ja();this.i.Ka&&(a=this.i.qb-this.i.Ka,a>this.i.Pb&&(this.i.Ta+=a,this.i.Ta>this.i.qb&&(this.i.Ta=this.i.qb)));try{do{var c=this.A.Pa?1:this.i.hc;try{this.$a(c)}catch(e){if("number"!=typeof e)throw e;}var d=this.D-
this.b;this.G+=d;this.i.ib+=d;wc(this,0,!0);tc(this,d);this.i.hb-=d;0>=this.i.hb&&(this.i.hb+=this.i.Rb,this.w&&yc(this.w,this.i.rb++),this.i.rb>this.Da&&(this.i.rb=0));this.i.gb-=d;0>=this.i.gb&&(this.i.gb+=this.i.Qb,this.w&&this.w.va());this.i.Xa-=d;if(0>=this.i.Xa){this.i.Xa+=this.i.yb;break}}while(this.A.la)}catch(e){this.da();rc(this);this.w&&this.w.stop(ja(),uc(this));gb(this,!1);jb(this,e.stack||e.message);return}c=setTimeout;d=this.aa;this.i.Ka=ja();a=this.i.Pb;this.i.ib&&(a=Math.round(a*
this.i.ib/this.i.yb));a-=this.i.Ka-this.i.qb;if(b=this.i.Ka-this.i.Ta)this.i.Ia=Math.round(this.G/(10*b))/100,864E5<=b&&(this.H=0,vc(this));if(0>a||this.i.Ia<this.i.Ja)a=0;this.i.zb+=this.i.ib;this.i.Ka+=a;c(d,a)}else rc(this),this.w&&this.w.stop(ja(),uc(this))};m.$a=function(){return 0};m.da=function(a){hb(this,!0);this.D-=this.b;this.b=0;wc(this,this.G);this.G=0;if(this.A.la){this.A.la=!1;this.K&&this.K.stop();var b=this.V.run;b&&(b.textContent="Run")}this.A.ob=a};
function rc(a,b){a.w&&(yc(a.w,-1),a.w.va(b))}function zc(a){this.Sa=a.model||8080;ac.call(this,a,1E6);this.M=Ac;oc(this);this.A.ob=this.A.Yb=!1;this.Y=0;this.J=[];this.X=0;Bc(this)}Wa(zc,ac);function Cc(a,b){a.J.push(b)}m=zc.prototype;m.reset=function(){this.A.la&&this.da();Bc(this);oc(this);this.A.Qa=!1;this.parent.reset.call(this)};function Bc(a){a.j=0;a.N=0;a.O=0;a.P=0;a.R=0;a.S=0;a.U=0;a.ca=0;F(a,a.X);Dc(a,0);a.u=0}function Ec(a,b){a.X=b;F(a,b)}
m.Ob=function(){var a=this.j+this.N+this.O+this.P+this.R+this.S+this.U|0;return a=a+this.ca+this.L+Fc(this)|0};
m.save=function(){var a=new Gc(this);H(a,0,[this.j,this.N,this.O,this.P,this.R,this.S,this.U,this.ca,this.L,Fc(this)]);H(a,1,[this.w,this.H,this.i.La]);for(var b=this.B,c=0,d=[],e=0;e<b.M;e++){var f=b.T[e];if(f.wa||f.Kb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var p=f[g],n=g+1;n<f.length&&f[n]===p;)n++;l[k++]=n-g;l[k++]=p;g=n}if(l.length<f.length){f=l;break a}}d[h]=f}}H(a,2,d);return a.data()};
m.restore=function(a){var b=a[0];this.j=b[0];this.N=b[1];this.O=b[2];this.P=b[3];this.R=b[4];this.S=b[5];this.U=b[6];this.ca=b[7]&65535;F(this,b[8]);Dc(this,b[9]);b=a[1];this.w=b[0];this.H=b[1];vc(this,b[3]);a:{b=this.B;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.Y){for(var f=0,h=Array(b.Y),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.T[d];if(!f||!f.restore(e)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.qa=function(a,b,c){var d=!1;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 "SF":case "ZF":case "AF":case "PF":case "CF":this.V[b]=c;this.Y++;d=!0;break;default:d=this.parent.qa.call(this,a,b,c)}return d};function Hc(a){return a.N<<8|a.O}function Ic(a,b){a.N=b>>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.U}
m.save=function(){var a=new Gc(this);H(a,0,[this.j,this.N,this.O,this.P,this.R,this.S,this.U,this.ca,this.L,Fc(this)]);H(a,1,[this.u,this.H,this.i.La]);for(var b=this.B,c=0,d=[],e=0;e<b.M;e++){var f=b.T[e];if(f.wa||f.Kb){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,k=0,l=[];g<f.length;){for(var p=f[g],n=g+1;n<f.length&&f[n]===p;)n++;l[k++]=n-g;l[k++]=p;g=n}if(l.length<f.length){f=l;break a}}d[h]=f}}H(a,2,d);return a.data()};
m.restore=function(a){var b=a[0];this.j=b[0];this.N=b[1];this.O=b[2];this.P=b[3];this.R=b[4];this.S=b[5];this.U=b[6];this.ca=b[7]&65535;F(this,b[8]);Dc(this,b[9]);b=a[1];this.u=b[0];this.H=b[1];vc(this,b[3]);a:{b=this.B;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.Y){for(var f=0,h=Array(b.Y),g=0;g<e.length-1;)for(var k=e[g++],l=e[g++];k--;)h[f++]=l;e=h}f=b.T[d];if(!f||!f.restore(e)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.qa=function(a,b,c){var d=!1;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.V[b]=c;this.Y++;d=!0;break;default:d=this.parent.qa.call(this,a,b,c)}return d};function Hc(a){return a.N<<8|a.O}function Ic(a,b){a.N=b>>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.U}
function Lc(a,b){a.S=b>>8&255;a.U=b&255}function F(a,b){a.L=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.ja)&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.pa&-214|Qc(a)|Pc(a)|Oc(a)|Nc(a)|Mc(a)}function Dc(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.pa=a.pa&-513|b&512|2}
function Rc(a,b){a.ja=a.j^b;return a.Z=(a.I=a.j+b)&255}function Sc(a,b){a.ja=a.j^b;return a.Z=(a.I=a.j+b+(a.I&256?1:0))&255}function jd(a,b){a.I=a.Z=a.ja=a.j&b;(a.j|b)&8&&(a.ja^=16);return a.I}function kd(a,b){a.ja=b^255;b=a.Z=b+255&255;a.I=a.I&-256|b;return b}function ld(a,b){a.ja=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.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 nd(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 od(a,b){return a.Z=a.I=a.ja=a.j^b}m.W=function(a){return this.B.W(a)};m.ga=function(a,b){this.B.ga(a,b)};function L(a){var b=a.W(a.L);F(a,a.L+1);return b}function M(a){var b=a.B.Ea(a.L);F(a,a.L+2);return b}function N(a){var b=a.B.Ea(a.ca);a.ca=a.ca+2&65535;return b}function Q(a,b){a.ca=a.ca-2&65535;a.B.sb(a.ca,b)}
function R(a,b,c,d){d=d||2;a.V[b]&&(void 0===c&&(jb(a,"Value for "+b+" is invalid"),a.da()),c=!a.A.la||a.A.Lb?q(c,d):"--------".substr(0,d),a.V[b].textContent!=c&&(a.V[b].textContent=c))}
m.va=function(a){this.Y&&(a||!this.A.la||this.A.Lb)&&(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.U),R(this,"HL",I(this),4),R(this,"SP",this.ca,4),R(this,"PC",this.L,4),a=Fc(this),R(this,"PS",a,4),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.V.speed)a.textContent=this.A.la&&this.i.Ia?
this.i.Ia.toFixed(2)+"Mhz":"Stopped"};
m.$a=function(a){this.A.ob=!0;var b=this.A.Yb=this.F&&pd(this.F),c=a?this.A.wb?0:1:-1;this.A.wb=!1;this.D=this.b=a;do{if(this.w){var d;this.w&8&&this.pa&512?(d=199|(this.w&7)<<3,this.w&=-16,this.pa&=-513,this.M[d].call(this),d=!0):d=!1;if(d){if(!a){this.g("interrupt dispatched");break}}else if(this.w&16){this.b=0;break}}if(b){if(qd(this.F,this.L,c)){this.da();break}c=1}this.M[L(this)].call(this)}while(0<this.b);return this.A.ob?this.D-this.b:void 0===this.A.ob?0:-1};
m.va=function(a){this.Y&&(a||!this.A.la||this.A.Lb)&&(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.U),R(this,"HL",I(this),4),R(this,"SP",this.ca,4),R(this,"PC",this.L,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.V.speed)a.textContent=
this.A.la&&this.i.Ia?this.i.Ia.toFixed(2)+"Mhz":"Stopped"};
m.$a=function(a){this.A.ob=!0;var b=this.A.Yb=this.F&&pd(this.F),c=a?this.A.wb?0:1:-1;this.A.wb=!1;this.D=this.b=a;do{if(this.u){var d;this.u&8&&this.pa&512?(d=199|(this.u&7)<<3,this.u&=-16,this.pa&=-513,this.M[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.L,c)){this.da();break}c=1}this.M[L(this)].call(this)}while(0<this.b);return this.A.ob?this.D-this.b:void 0===this.A.ob?0:-1};
Ja(function(){for(var a=A(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new zc(d);cb(d,c)}});function rd(){this.b-=4}function sd(){F(this,M(this));this.b-=10}function td(){F(this,N(this));this.b-=10}function ud(){var a=M(this);Q(this,this.L);F(this,a);this.b-=17}
var Ac=[rd,function(){Ic(this,M(this));this.b-=10},function(){this.ga(Hc(this),this.j);this.b-=7},function(){Ic(this,Hc(this)+1);this.b-=5},function(){this.N=ld(this,this.N);this.b-=5},function(){this.N=kd(this,this.N);this.b-=5},function(){this.N=L(this);this.b-=7},function(){var a=this.j<<1;this.j=a&255|a>>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.W(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,M(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<<
@ -67,7 +67,7 @@ L(this));this.b-=10},function(){this.I|=256;this.b-=4},rd,function(){var a;Lc(th
this.b-=5},function(){this.N=this.R;this.b-=5},function(){this.N=this.S;this.b-=5},function(){this.N=this.U;this.b-=5},function(){this.N=this.W(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.U;this.b-=5},function(){this.O=this.W(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.U;this.b-=5},function(){this.P=this.W(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.U;this.b-=5},function(){this.R=this.W(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.U;this.b-=5},function(){this.S=this.W(I(this));this.b-=7},function(){this.S=this.j;this.b-=5},function(){this.U=this.N;this.b-=5},function(){this.U=this.O;this.b-=5},function(){this.U=this.P;this.b-=5},function(){this.U=this.R;this.b-=5},function(){this.U=this.S;this.b-=
5},function(){this.b-=5},function(){this.U=this.W(I(this));this.b-=7},function(){this.U=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.U);this.b-=7},function(){var a=this.L-1;if(this.J.length)for(var b=0;b<this.J.length;b++)if(this.J[b](a))return;this.w|=16;this.b-=7;
5},function(){this.b-=5},function(){this.U=this.W(I(this));this.b-=7},function(){this.U=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.U);this.b-=7},function(){var a=this.L-1;if(this.J.length)for(var b=0;b<this.J.length;b++)if(this.J[b](a))return;this.u|=16;this.b-=7;
this.F&&fb(this,-2147483648)?(F(this,a),this.F.da()):this.pa&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.U;this.b-=5},function(){this.j=this.W(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.U);this.b-=4},function(){this.j=Rc(this,this.W(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.U);this.b-=4},function(){this.j=Sc(this,this.W(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.U);this.b-=4},function(){this.j=J(this,this.W(I(this)));this.b-=7},function(){this.j=J(this,this.j);
@ -82,24 +82,25 @@ M(this);Nc(this)||(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},function(){Q(
11},ud,function(){this.j=od(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,40);this.b-=11},function(){Qc(this)||(F(this,N(this)),this.b-=6);this.b-=5},function(){var a=N(this);Dc(this,a);this.j=a>>8;this.b-=10},function(){var a=M(this);Qc(this)||F(this,a);this.b-=10},function(){this.pa&=-513;this.b-=4},function(){var a=M(this);Qc(this)||(Q(this,this.L),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.L);F(this,48);this.b-=11},function(){Qc(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);Qc(this)&&F(this,a);this.b-=10},function(){this.pa|=512;this.b-=4},function(){var a=M(this);Qc(this)&&(Q(this,this.L),F(this,a),this.b-=6);this.b-=11},ud,function(){J(this,L(this));this.b-=7},function(){Q(this,this.L);F(this,56);this.b-=11}];
function S(a){w.call(this,"ChipSet",a,S,32768);var b=a.model;b&&!vd[b]&&t("Unrecognized ChipSet model: "+b);this.Sa=vd[b]||wd;a.sound&&(this.X=null,window&&(this.X=window.AudioContext||window.webkitAudioContext),this.X&&new this.X);C(this)}Wa(S);var wd=1978.1,vd={SI1978:wd};m=S.prototype;m.qa=function(){return!1};
m.Fa=function(a,b,c,d){this.B=b;this.b=c;this.F=d;this.u=a;if(this.Sa==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.u[g]?t("Input port "+r(g)+" already registered"):c.u[g]=[h,!1]}var k;e=yd;void 0===k&&(k=0);for(var l in e)if(f=b,a=+l+k,c=e[l].bind(this),void 0!==c)for(d=+l+k;d<=a;d++)void 0!==f.w[d]?t("Output port "+r(d)+" already registered"):f.w[d]=[c,!1]}};
m.za=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.ya=function(a){return a?this.save():!0};m.reset=function(){this.G=this.H=this.D=this.w=this.M=this.K=this.J=0};m.save=function(){var a=new Gc(this);this.Sa==wd&&H(a,0,[this.J,this.K,this.M,this.w,this.D,this.G,this.H]);return a.data()};m.restore=function(a){a=a[0];this.Sa==wd&&(this.J=a[0],this.K=a[1],this.M=a[2],this.w=a[3],this.D=a[4],this.G=a[5],this.H=a[6]);return!0};m.start=function(){};m.stop=function(){};
m.bc=function(a,b){var c=this.J;db(this,a,null,b,"STATUS0",c);return c};m.cc=function(a,b){var c=this.K;db(this,a,null,b,"STATUS1",c);return c};m.dc=function(a,b){var c=this.M;db(this,a,null,b,"STATUS2",c);return c};m.ac=function(a,b){var c=this.w>>8-this.D&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.D=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.w=b<<8|this.w>>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 xd={0:S.prototype.bc,1:S.prototype.cc,2:S.prototype.dc,3:S.prototype.ac},yd={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<a.length;b++){var c=a[b],d=y(c),d=new S(d);cb(d,c)}});
function zd(a){w.call(this,"ROM",a,zd);this.u=null;this.H=a.addr;this.w=a.size;this.J=a.writable;this.D=a.alias;this.G=a.file;this.K=ba(this.G);if(this.G){a=this.G;var b=ca(this.K);"json"!=b&&"hex"!=b&&(a=oa()+"/api/v1/dump?file="+this.G+"&format=bytes&decimal=true");var c=this;na(a,null,!0,function(a,b,f){Ad(c,a,b,f)})}}Wa(zd);var Bd=[0,5];zd.prototype.Fa=function(a,b,c,d){this.B=b;this.b=c;this.F=d;Cd(this)};
zd.prototype.za=function(){if(this.Ca){if(this.F){var a=this.F,b=this.id,c=this.H,d=this.w,e=this.Ca,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var p=f,k=[k>>>0,h],n=ia(p,k,a.Fb);0>n&&p.splice(-(n+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.J.push({nc:b,C:c,gc:d,Ca:e,Cb:f})}delete this.Ca}return!0};zd.prototype.ya=function(){return!0};
function Ad(a,b,c,d){if(d)a.oa("Unable to load system ROM (error "+d+": "+b+")");else{Ya(a.Ib,b,c);if("["==c.charAt(0)||"{"==c.charAt(0))try{var e=eval("("+c+")"),f=e.bytes,h=e.data;if(f)a.u=f;else if(h)for(a.u=Array(4*h.length),d=c=0;c<h.length;c++)a.u[d++]=h[c]&255,a.u[d++]=h[c]>>8&255,a.u[d++]=h[c]>>16&255,a.u[d++]=h[c]>>24&255;else a.u=e;a.Ca=e.symbols;if(!a.u.length){t("Empty ROM: "+b);return}if(1==a.u.length){t(a.u[0]);return}}catch(g){a.oa("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.u=Array(b.length),e=0;e<b.length;e++)a.u[e]=aa(b[e],16);Cd(a)}}
function Cd(a){if(!ib(a))if(!a.G)C(a);else if(a.u&&a.B){a.w||(a.w=a.u.length);if(a.u.length!=a.w)jb(a,"ROM size (0x"+q(a.u.length)+") does not match specified size ("+("0x"+q(a.w))+")");else if(Dd(a,a.H)){var b=[];"number"==typeof a.D?b.push(a.D):null!=a.D&&a.D.length&&(b=a.D);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.B,h=d.w,g=[],k=d.H>>>f.ea;0<h&&k<f.T.length;)g.push(f.T[k++]),h-=f.ua;f=d.B;d=d.w;h=0;for(e>>>=f.ea;0<d&&e<f.T.length;){k=g[h++];if(!k)break;f.T[e++]=k;d-=f.ua}}delete a.u}C(a)}}
function Dd(a,b){if(rb(a.B,b,a.w,a.J?1:Pb)){var c;for(c=0;c<a.u.length;c++)vb(a.B,b+c,a.u[c]);if(a.J&&256==b){for(c=0;c<Bd.length;c++)vb(a.B,Bd[c],118);Cc(a.b,function(a){return function(b){if(0<=Bd.indexOf(b)){var c=!1,h=a.b,g=a.F;if(5==b)switch(c=!0,h.O){case 2:Ed(a,String.fromCharCode(h.R));break;case 9:for(var k=Jc(h),l="",p=255;p--;){var n=a.b.W(k++);if(36==n)break;l+=String.fromCharCode(n)}Ed(a,l);break;default:c=!1}c?td.call(h):g&&(a.g("\nCP/M vector "+r(b)),F(h,b),g.da());b=!0}else b=!1;return b}}(a));
Ec(a.b,b)}return!0}return!1}function Ed(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}Ja(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new zd(d);cb(d,c)}});function Fd(a){w.call(this,"RAM",a,Fd);this.D=a.addr;this.w=a.size;this.u=!1}Wa(Fd);m=Fd.prototype;m.Fa=function(a,b,c,d){this.B=b;this.b=c;this.F=d;C(this)};m.za=function(a,b){b||this.reset();return!0};m.ya=function(a){return a?this.save():!0};
m.reset=function(){!this.u&&this.w&&rb(this.B,this.D,this.w,1)&&(this.u=!0,this.status(Math.floor(this.w/1024)+"Kb allocated"));this.u||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ja(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Fd(d);cb(d,c)}});function Gd(a){w.call(this,"Keyboard",a,Gd,65536);C(this)}Wa(Gd);
m.Fa=function(a,b,c,d){this.B=b;this.b=c;this.F=d;this.w=a;if(this.Sa==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 k;e=yd;void 0===k&&(k=0);for(var l in e)if(f=b,a=+l+k,c=e[l].bind(this),void 0!==c)for(d=+l+k;d<=a;d++)void 0!==f.u[d]?t("Output port "+r(d)+" already registered"):f.u[d]=[c,!1]}};
m.za=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};m.ya=function(a){return a?this.save():!0};m.reset=function(){this.G=this.H=this.D=this.u=this.M=this.K=this.J=0};m.save=function(){var a=new Gc(this);this.Sa==wd&&H(a,0,[this.J,this.K,this.M,this.u,this.D,this.G,this.H]);return a.data()};m.restore=function(a){a=a[0];this.Sa==wd&&(this.J=a[0],this.K=a[1],this.M=a[2],this.u=a[3],this.D=a[4],this.G=a[5],this.H=a[6]);return!0};m.start=function(){};m.stop=function(){};
m.bc=function(a,b){var c=this.J;db(this,a,null,b,"STATUS0",c);return c};m.cc=function(a,b){var c=this.K;db(this,a,null,b,"STATUS1",c);return c};m.dc=function(a,b){var c=this.M;db(this,a,null,b,"STATUS2",c);return c};m.ac=function(a,b){var c=this.u>>8-this.D&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.D=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 xd={0:S.prototype.bc,1:S.prototype.cc,2:S.prototype.dc,3:S.prototype.ac},yd={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<a.length;b++){var c=a[b],d=y(c),d=new S(d);cb(d,c)}});
function zd(a){w.call(this,"ROM",a,zd);this.w=null;this.H=a.addr;this.u=a.size;this.J=a.writable;this.D=a.alias;this.G=a.file;this.K=ba(this.G);if(this.G){a=this.G;var b=ca(this.K);"json"!=b&&"hex"!=b&&(a=oa()+"/api/v1/dump?file="+this.G+"&format=bytes&decimal=true");var c=this;na(a,null,!0,function(a,b,f){Ad(c,a,b,f)})}}Wa(zd);var Bd=[0,5];zd.prototype.Fa=function(a,b,c,d){this.B=b;this.b=c;this.F=d;Cd(this)};
zd.prototype.za=function(){if(this.Ca){if(this.F){var a=this.F,b=this.id,c=this.H,d=this.u,e=this.Ca,f=[],h;for(h in e){var g=e[h];"number"==typeof g&&(e[h]=g={o:g});var k=g.o,l=g.a;if(void 0!==k){var p=f,k=[k>>>0,h],n=ia(p,k,a.Fb);0>n&&p.splice(-(n+1),0,k)}l&&(g.a=l.replace(/''/g,'"'))}a.J.push({nc:b,C:c,gc:d,Ca:e,Cb:f})}delete this.Ca}return!0};zd.prototype.ya=function(){return!0};
function Ad(a,b,c,d){if(d)a.oa("Unable to load system ROM (error "+d+": "+b+")");else{Ya(a.Ib,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<h.length;c++)a.w[d++]=h[c]&255,a.w[d++]=h[c]>>8&255,a.w[d++]=h[c]>>16&255,a.w[d++]=h[c]>>24&255;else a.w=e;a.Ca=e.symbols;if(!a.w.length){t("Empty ROM: "+b);return}if(1==a.w.length){t(a.w[0]);return}}catch(g){a.oa("ROM data error: "+g.message);return}else for(b=c.replace(/\n/gm,
" ").replace(/ +$/,"").split(" "),a.w=Array(b.length),e=0;e<b.length;e++)a.w[e]=aa(b[e],16);Cd(a)}}
function Cd(a){if(!ib(a))if(!a.G)C(a);else if(a.w&&a.B){a.u||(a.u=a.w.length);if(a.w.length!=a.u)jb(a,"ROM size (0x"+q(a.w.length)+") does not match specified size ("+("0x"+q(a.u))+")");else if(Dd(a,a.H)){var b=[];"number"==typeof a.D?b.push(a.D):null!=a.D&&a.D.length&&(b=a.D);for(var c=0;c<b.length;c++){for(var d=a,e=b[c],f=d.B,h=d.u,g=[],k=d.H>>>f.ea;0<h&&k<f.T.length;)g.push(f.T[k++]),h-=f.ua;f=d.B;d=d.u;h=0;for(e>>>=f.ea;0<d&&e<f.T.length;){k=g[h++];if(!k)break;f.T[e++]=k;d-=f.ua}}delete a.w}C(a)}}
function Dd(a,b){if(rb(a.B,b,a.u,a.J?1:Pb)){var c;for(c=0;c<a.w.length;c++)vb(a.B,b+c,a.w[c]);if(a.J&&256==b){for(c=0;c<Bd.length;c++)vb(a.B,Bd[c],118);Cc(a.b,function(a){return function(b){if(0<=Bd.indexOf(b)){var c=!1,h=a.b,g=a.F;if(5==b)switch(c=!0,h.O){case 2:Ed(a,String.fromCharCode(h.R));break;case 9:for(var k=Jc(h),l="",p=255;p--;){var n=a.b.W(k++);if(36==n)break;l+=String.fromCharCode(n)}Ed(a,l);break;default:c=!1}c?td.call(h):g&&(a.g("\nCP/M vector "+r(b)),F(h,b),g.da());b=!0}else b=!1;return b}}(a));
Ec(a.b,b)}return!0}return!1}function Ed(a,b){b=b.replace(/\r/g,"");a.ta&&(a.ta.value+=b,a.ta.scrollTop=a.ta.scrollHeight)}Ja(function(){for(var a=A(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new zd(d);cb(d,c)}});function Fd(a){w.call(this,"RAM",a,Fd);this.D=a.addr;this.u=a.size;this.w=!1}Wa(Fd);m=Fd.prototype;m.Fa=function(a,b,c,d){this.B=b;this.b=c;this.F=d;C(this)};m.za=function(a,b){b||this.reset();return!0};m.ya=function(a){return a?this.save():!0};
m.reset=function(){!this.w&&this.u&&rb(this.B,this.D,this.u,1)&&(this.w=!0,this.status(Math.floor(this.u/1024)+"Kb allocated"));this.w||t("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};Ja(function(){for(var a=A(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Fd(d);cb(d,c)}});function Gd(a){w.call(this,"Keyboard",a,Gd,65536);C(this)}Wa(Gd);
Ja(function(){for(var a=A(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Gd(d);cb(d,c)}});
function Hd(a,b,c){w.call(this,"Video",a,Hd,262144);this.Y=a.screenWidth;this.K=a.screenHeight;this.X=a.bufferAddr;this.D=a.bufferCols;this.H=a.bufferRows;this.fa=a.bufferBits||1;this.Ba=a.bufferLeft||0;this.ka=a.bufferRotate;this.Zb=a.interruptRate;this.Da=a.refreshRate||60;this.G=c;this.sa=a.screenRotate;90==this.sa&&(this.G.translate(0,this.K),this.G.rotate(-this.sa*Math.PI/180),this.G.scale(this.K/this.Y,this.Y/this.K));this.Aa=[[0,0,0,255],[255,255,255,255]];a=this.D;b=this.H;this.ka&&(a=this.H,
b=this.D);this.ba=this.G.createImageData(a,b);this.w=document.createElement("canvas");this.w.width=a;this.w.height=b;this.ma=this.w.getContext("2d")}Wa(Hd);Hd.prototype.Fa=function(a,b,c,d){this.u=a;this.B=b;this.b=c;this.F=d;this.M=(this.D*this.fa>>3)*this.H;rb(this.B,this.X,this.M,3)&&(this.na=this.M>>1,this.ra=16/this.fa|0,this.aa=!1,void 0===this.J||this.J.length!=this.na)&&(this.J=Array(this.na));C(this)};
function Hd(a,b,c){w.call(this,"Video",a,Hd,262144);this.Y=a.screenWidth;this.K=a.screenHeight;this.X=a.bufferAddr;this.G=a.bufferCols;this.H=a.bufferRows;this.fa=a.bufferBits||1;this.Ba=a.bufferLeft||0;this.ka=a.bufferRotate;this.Zb=a.interruptRate;this.Da=a.refreshRate||60;this.u=c;this.u.webkitImageSmoothingEnabled=!1;this.u.mozImageSmoothingEnabled=!1;this.u.msImageSmoothingEnabled=!1;this.u.imageSmoothingEnabled=!1;this.sa=a.screenRotate;90==this.sa&&(this.u.translate(0,this.K),this.u.rotate(-this.sa*
Math.PI/180),this.u.scale(this.K/this.Y,this.Y/this.K));this.Aa=[[0,0,0,255],[255,255,255,255]];a=this.G;b=this.H;this.ka&&(a=this.H,b=this.G);this.ba=this.u.createImageData(a,b);this.D=document.createElement("canvas");this.D.width=a;this.D.height=b;this.ma=this.D.getContext("2d")}Wa(Hd);
Hd.prototype.Fa=function(a,b,c,d){this.w=a;this.B=b;this.b=c;this.F=d;this.M=(this.G*this.fa>>3)*this.H;rb(this.B,this.X,this.M,3)&&(this.na=this.M>>1,this.ra=16/this.fa|0,this.aa=!1,void 0===this.J||this.J.length!=this.na)&&(this.J=Array(this.na));C(this)};
Ja(function(){for(var a=A(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=y(c),e=document.createElement("canvas");if(void 0===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<=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);e=e.getContext("2d");d=new Hd(d,0,e);cb(d,c)}});
function Id(a){w.call(this,"Debugger",a,Id);this.aa=Jd;this.ka=this.Na=this.M=0;this.Y=T();this.Gb=T();this.G=-1;this.D=[];this.na=!1;this.ma=T();this.J=[];this.ra={};this.w=this.ba=this.H=[];Kd(this);this.Ba=0;Ld(this);this.bb=[];Md(this,a.messages);this.tb=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)})}Wa(Id);
function Id(a){w.call(this,"Debugger",a,Id);this.aa=Jd;this.ka=this.Na=this.M=0;this.Y=T();this.Gb=T();this.G=-1;this.D=[];this.na=!1;this.ma=T();this.J=[];this.ra={};this.u=this.ba=this.H=[];Kd(this);this.Ba=0;Ld(this);this.bb=[];Md(this,a.messages);this.tb=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)})}Wa(Id);
var Nd={"?":"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"},Jd=8080,Od="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(" "),
Pd="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(" "),Qd="B C D E H L M A BC DE HL SP PC PSW".split(" "),Rd=[[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],
@ -109,7 +110,7 @@ Pd="NONE ADC ADC ADD ADD AND AND CALL CALLC CALLS CALLNC CALLNZ CALLNS CALLP CAL
[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]],Sd={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=Id.prototype;
m.Fa=function(a,b,c,d){this.B=b;this.b=c;this.u=a;(a=cc(a,"messages"))&&Md(this,a);this.Db=Rd;Td(this,function(a){a:{var b=d.B.T,c=a[0],g=a=0,k=b.length;if(c){a=W(X(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.B.ea;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[g];p.type==c?l++||d.g("..."):(c=p.type,l=Ub[c],p&&d.g(q(p.id)+" %"+q(g<<d.B.ea)+" %%"+q(p.C)+" "+r(p.mb)+" "+r(p.size)+
m.Fa=function(a,b,c,d){this.B=b;this.b=c;this.w=a;(a=cc(a,"messages"))&&Md(this,a);this.Db=Rd;Td(this,function(a){a:{var b=d.B.T,c=a[0],g=a=0,k=b.length;if(c){a=W(X(d,c));if(-1===a){d.g("invalid address: "+c);break a}g=a>>>d.B.ea;k=1}d.g("blockid physical blockaddr used size type");d.g("-------- --------- ---------- ------ ------ ----");for(var c=-1,l=0;k--;){var p=b[g];p.type==c?l++||d.g("..."):(c=p.type,l=Ub[c],p&&d.g(q(p.id)+" %"+q(g<<d.B.ea)+" %%"+q(p.C)+" "+r(p.mb)+" "+r(p.size)+
" "+l),c!=Ob&&(c=-1),l=0);a+=d.B.ua;g++}}});C(this)};
m.qa=function(a,b,c){var d=this;switch(b){case "debugInput":return this.Aa=this.V[b]=c,c.onkeydown=function(a){var b;if(13==a.keyCode)b=c.value,c.value="",qc(d,b,!0);else if(27==a.keyCode)c.value=b="";else if(38==a.keyCode?d.G<d.D.length-1&&(b=d.D[++d.G]):40==a.keyCode&&(0<d.G?b=d.D[--d.G]:(b="",d.G=-1)),null!=b){var h=b.length;c.value=b;c.setSelectionRange(h,h)}null!=b&&a.preventDefault&&a.preventDefault()},!0;case "debugEnter":return this.V[b]=c,Da(c,function(){if(d.Aa){var a=d.Aa.value;d.Aa.value=
"";qc(d,a,!0);return!0}return!1}),!0;case "step":return this.V[b]=c,Da(c,function(a){var b=!1;hb(d,!0)||(gb(d,!0),b=d.$a(a?1:0),gb(d,!1));return b}),!0}return!1};m.lb=function(){this.Aa&&this.Aa.focus()};function W(a){a=a&&a.C;null==a&&(a=-1);return a}m.W=function(a,b){var c=255,d=W(a);-1!==d&&(c=tb(this.B,d),b&&Ud(a,b));return c};m.Ea=function(a,b){var c=65535,d=W(a);-1!==d&&(c=ub(this.B,d),b&&Ud(a,b));return c};m.ga=function(a,b,c){var d=W(a);-1!==d&&(vb(this.B,d,b),c&&Ud(a,c),rc(this.b,!0))};
@ -124,11 +125,11 @@ function Ld(a){var b;if(pd(a)){if(!a.X||!a.X.length){a.X=Array(1E3);for(b=0;b<a.
m.$a=function(a,b,c){if(!fe(this))return!1;this.M=0;a||pd(this)&&qd(this,this.b.L,0);try{var d=this.b.$a(a);0<d&&(this.M+=d,wc(this.b,d,!0),tc(this.b,d),this.ka++)}catch(e){"number"!=typeof e&&(this.M=0,jb(this.b,e.stack||e.message))}!1!==c&&rc(this.b);this.va(b||!1);return 0<this.M};m.da=function(a){this.b&&this.b.da(a)};m.va=function(a){void 0===a&&(a=!0);this.Y=T(this.b.L);a&&1!=this.fa?ge(this):he(this)};
function fe(a){var b;if(b=a.b&&ib(a.b))b=a.b,b.A.ia?b=!0:(b.g(b.toString()+" not powered"),b=!1);b&&!hb(a.b)?(a=a.b,a.A.Qa?(a.g(a.toString()+" error"),a=!0):a=!1,a=!a):a=!1;return a}m.za=function(a,b){return!b&&(this.reset(!0),a&&this.restore&&!this.restore(a))?!1:!0};m.ya=function(a,b){b&&this.g(a?"suspending":"shutting down");return a?this.save():!0};m.reset=function(a){Ld(this);this.ka=this.Na=0;this.Ga=null;this.M=0;this.Y=T(this.b.L);this.A.la=!1;ie(this);a||this.va()};
m.save=function(){var a=new Gc(this);H(a,0,Vd(this.Y));H(a,1,Vd(this.ma));H(a,2,[this.D,this.na,this.ha]);H(a,3,this.J);return a.data()};m.restore=function(a){var b=0;void 0!==a[2]&&(this.Y=Wd(a[b++]),this.ma=Wd(a[b++]),this.D=a[b][0],"string"==typeof this.D&&(this.D=[this.D]),this.na=a[b][1],this.ha|=a[b][2]);a[3]&&(this.J=a[3]);return!0};m.start=function(a,b){this.fa||this.g("running");this.A.la=!0;this.$b=a;this.ec=b};
m.stop=function(a,b){if(this.A.la){this.A.la=!1;this.M=b-this.ec;if(!this.fa){var c="stopped";if(this.M){var d=a-this.$b,e=0<d?Math.round(1E3*this.M/d):0,c=c+" (";pd(this)&&(c+=this.ka+" opcodes, ",this.Na-=this.ka,this.ka=0);c+=this.M+" cycles, "+d+" ms, "+e+" hz)"}else fb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.va(!0);this.lb();ie(this,this.b.L)}};function pd(a){return 1<a.w.length||!!a.Ba}
function qd(a,b,c){var d=a.b;if(0<c&&(a.Ba&&!--a.Ba||Yb(a,b,1,a.w)))return!0;0<=c&&a.K.length&&(a.ka++,b=tb(a.B,b),null!=b&&(a.K[b][1]++,b=a.X[a.sa],b.C=d.L,b.xa=!1,++a.sa==a.X.length&&(a.sa=0)));return!1}function Gb(a,b,c){a.g("break on input from port "+r(b)+": "+q(c));a.da(!0)}function Jb(a,b,c){a.g("break on output to port "+r(b)+": "+q(c));a.da(!0)}
function Kd(a){var b,c;a.w=["bp"];if(void 0!==a.ba)for(b=1;b<a.ba.length;b++){c=a.ba[b];var d=a.B;Zb(d.T[W(c)>>>d.ea],!1)}a.ba=["br"];if(void 0!==a.H)for(b=1;b<a.H.length;b++)c=a.H[b],d=a.B,Zb(d.T[W(c)>>>d.ea],!0);a.H=["bw"];a.Mb=0}m.Ha=function(a,b,c){var d=!0;c||je(this,a,b,!1,!0);if(a!=this.w){var e=W(b);if(-1===e)this.g("invalid address: "+Z(b.C)),d=!1;else{var f=this.B;f.T[e>>>f.ea].Ha(e&f.B,a==this.H)}}d&&(a.push(b),c?b.xa=!0:(ke(this,a,a.length-1,"set"),Ld(this)));return d};
function je(a,b,c,d,e){var f=!1;c=W(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==W(g)&&(!d||g.xa)){f=!0;g.xa||e||ke(a,b,h,"cleared");b.splice(h,1);b!=a.w&&(d=a.B,Zb(d.T[c>>>d.ea],b==a.H));g.xa||Ld(a);break}}return f}function le(a,b){for(var c=1;c<b.length;c++)ke(a,b,c);return b.length-1}function ke(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.C)+(d?" "+d:c.Ub?' "'+c.Ub+'"':""))}
function ie(a,b){if(void 0!==b)Yb(a,b,1,a.w,!0),a.fa=0;else for(var c=1;c<a.w.length;c++){var d=a.w[c];if(d.xa){if(!je(a,a.w,d,!0))break;c=0}}}
m.stop=function(a,b){if(this.A.la){this.A.la=!1;this.M=b-this.ec;if(!this.fa){var c="stopped";if(this.M){var d=a-this.$b,e=0<d?Math.round(1E3*this.M/d):0,c=c+" (";pd(this)&&(c+=this.ka+" opcodes, ",this.Na-=this.ka,this.ka=0);c+=this.M+" cycles, "+d+" ms, "+e+" hz)"}else fb(this,-2147483648)&&(c+=" (use the 't' command to execute blocked faults)");this.g(c)}this.va(!0);this.lb();ie(this,this.b.L)}};function pd(a){return 1<a.u.length||!!a.Ba}
function qd(a,b,c){var d=a.b;if(0<c&&(a.Ba&&!--a.Ba||Yb(a,b,1,a.u)))return!0;0<=c&&a.K.length&&(a.ka++,b=tb(a.B,b),null!=b&&(a.K[b][1]++,b=a.X[a.sa],b.C=d.L,b.xa=!1,++a.sa==a.X.length&&(a.sa=0)));return!1}function Gb(a,b,c){a.g("break on input from port "+r(b)+": "+q(c));a.da(!0)}function Jb(a,b,c){a.g("break on output to port "+r(b)+": "+q(c));a.da(!0)}
function Kd(a){var b,c;a.u=["bp"];if(void 0!==a.ba)for(b=1;b<a.ba.length;b++){c=a.ba[b];var d=a.B;Zb(d.T[W(c)>>>d.ea],!1)}a.ba=["br"];if(void 0!==a.H)for(b=1;b<a.H.length;b++)c=a.H[b],d=a.B,Zb(d.T[W(c)>>>d.ea],!0);a.H=["bw"];a.Mb=0}m.Ha=function(a,b,c){var d=!0;c||je(this,a,b,!1,!0);if(a!=this.u){var e=W(b);if(-1===e)this.g("invalid address: "+Z(b.C)),d=!1;else{var f=this.B;f.T[e>>>f.ea].Ha(e&f.B,a==this.H)}}d&&(a.push(b),c?b.xa=!0:(ke(this,a,a.length-1,"set"),Ld(this)));return d};
function je(a,b,c,d,e){var f=!1;c=W(c);for(var h=1;h<b.length;h++){var g=b[h];if(c==W(g)&&(!d||g.xa)){f=!0;g.xa||e||ke(a,b,h,"cleared");b.splice(h,1);b!=a.u&&(d=a.B,Zb(d.T[c>>>d.ea],b==a.H));g.xa||Ld(a);break}}return f}function le(a,b){for(var c=1;c<b.length;c++)ke(a,b,c);return b.length-1}function ke(a,b,c,d){c=b[c];a.g(b[0]+" "+Z(c.C)+(d?" "+d:c.Ub?' "'+c.Ub+'"':""))}
function ie(a,b){if(void 0!==b)Yb(a,b,1,a.u,!0),a.fa=0;else for(var c=1;c<a.u.length;c++){var d=a.u[c];if(d.xa){if(!je(a,a.u,d,!0))break;c=0}}}
function Yb(a,b,c,d,e){var f=!1;if(!a.Mb++)for(var h=1;!f&&h<d.length;h++){var g=d[h];if(!e||g.xa)for(var k=W(g),l=0;l<c;l++)if(b+l==k){var p,f=!0;g.xa&&(je(a,d,g,!0),e=!0);if(p=g.Wb){for(var f=!1,n=0;n<p.length;n++)if(!me(a,p[n],!0)){if(p[n].indexOf("if")){f=!0;break}for(var u=n+1;u<p.length&&p[u].indexOf("else");u++)n++;if(u==p.length){f=!0;break}}a.b.A.la||(f=!0)}if(f){e||ke(a,d,h,"hit");break}}}a.Mb--;return f}
function ne(a,b,c,d){for(var e=T(b.C),f=a.W(b,1),h=a.Db[f],g="",k=(8086!=a.aa?Od:Pd)[h[0]],l=h.length-1,p=0,n,u=1;u<=l;u++){var z="";n=h[u];if(void 0!==n&&!(n&16384&&a.aa==Jd)){var v=n&240;if(v){var O=n&15;O?p=O:n|=p;n&61440||(n|=1==u?8192:4096);if(v&32)a:{var z=a,v=n,O=b,B=" ";switch(v&15){case 1:B=q(z.W(O,1),2);break;case 2:B=q(z.W(O,1)<<24>>24,4);break;case 3:B=q(z.Ea(O,2),4);break;default:z="imm("+r(v)+")";break a}8086==z.aa&&v&64?B="["+B+"]":v&16||(B=(z.aa==Jd?"$":"0x")+B);z=B}else v&16?(z=(n&
3840)>>8,v=Qd[z],8086==a.aa&&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<g.length&&(g+=",");g+=z||"???"}}}f="";h=Z(e.C)+" ";if(-1!==e.C&&-1!==b.C){do if(f+=q(a.W(e,1),2),null==e.C)break;while(e.C!=b.C)}h+=ga(f,10);h=h+(n&32768?"*":" ")+ga(k,7);g&&(h+=" "+g);c&&(h=ga(h,40)+";"+c,h=a.b.A.Pa?h+("cycles="+uc(a.b).toString()+" cs="+q(a.b.i.eb)):h+(null!=d?"="+d.toString():""));return h}
@ -153,45 +154,45 @@ function he(a,b,c,d){if(b=X(a,b,!0)){void 0===d&&(d=1);var e=256;if(void 0!==c){
function $d(a,b,c,d){if(c)if(b){0>a.G&&a.D.length&&(a.G=0);if(0>a.G||b!=a.D[a.G])a.D.splice(0,0,b),a.G=0;a.G--}else a.na?b="end":b=a.D[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 me(a,b,c){var d=!0;try{b.length&&"end"!=b?c||a.g(">> "+b):(a.na&&(a.g("ended assemble at "+Z(a.ma.C)),a.Y=a.ma,a.na=!1),b="");var e=b.charAt(0);if('"'==e||"'"==e)return!0;a.Ga=null;if(ib(a)&&0<b.length){a.na&&(b="a "+Z(a.ma.C)+" "+b);var f=b.replace(/ +/g," ").split(" ");if(f&&f.length)for(var h=f[0],g=h.charAt(0),k=1;k<h.length;k++){var l=h.charAt(k);if("?"==g||"r"==g||"a">l||"z"<l){f[0]=h.substr(k);f.unshift(h.substr(0,k));break}}switch(f[0].charAt(0)){case "a":var p=X(a,f[1],!0);if(p)if(a.ma=
p,void 0===f[2])a.g("begin assemble at "+Z(p.C)),a.na=!0,rc(a.b);else{var n;a.g("not supported yet");n=[];if(n.length){for(var u=0;u<n.length;u++)a.ga(p,n[u],1);a.g(ne(a,a.ma))}}break;case "b":a:{var z=f[0],v=f[1],O=b;if("?"==v)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 B=z.charAt(1);if("l"==B){var U=0,U=U+le(a,a.w),U=U+le(a,a.ba);(U+=le(a,a.H))||a.g("no breakpoints")}else if("n"==B)a.Ba=Re(a,v),a.g("break after "+a.Ba+" instruction(s)");else if(void 0===v)a.g("missing breakpoint address");else{var D=T();if("*"!=v&&(D=X(a,v,!0),!D))break a;v=r(D.C);"c"==B?null==D.C?(Kd(a),a.g("all breakpoints cleared")):je(a,a.w,D)||je(a,a.ba,D)||
je(a,a.H,D)||a.g("breakpoint missing: "+Z(D.C)):"i"==B?a.g("breakpoint "+(wb(a.B,D.C)?"enabled":"cleared")+": port "+v+" (input)"):"o"==B?a.g("breakpoint "+(Hb(a.B,D.C)?"enabled":"cleared")+": port "+v+" (output)"):null!=D.C&&(Zd(a,D,O),"p"==B?a.Ha(a.w,D):"r"==B?a.Ha(a.ba,D):"w"==B?a.Ha(a.H,D):a.g("unknown breakpoint command: "+B))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var wa,P=f[0],K=f[1],ka=f[2],xa=f[3];if("?"==K){var ya="";for(wa in Sd)a.bb[wa]&&(ya&&(ya+=","),ya+=wa);ya+=",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");ya.length&&a.g("dump extension commands:\n\t"+ya)}else if("state"==K){var oe=bf(a.u,!0);"console"==ka?console.log(oe):(a.ta&&(a.ta.value=""),a.g(oe))}else if("symbols"==K)for(var Tc=0;Tc<a.J.length;Tc++){var Uc=a.J[Tc],ab;for(ab in Uc.Ca)if("."!=ab.charAt(0)){var pe=Uc.Ca[ab].o;
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 B=z.charAt(1);if("l"==B){var U=0,U=U+le(a,a.u),U=U+le(a,a.ba);(U+=le(a,a.H))||a.g("no breakpoints")}else if("n"==B)a.Ba=Re(a,v),a.g("break after "+a.Ba+" instruction(s)");else if(void 0===v)a.g("missing breakpoint address");else{var E=T();if("*"!=v&&(E=X(a,v,!0),!E))break a;v=r(E.C);"c"==B?null==E.C?(Kd(a),a.g("all breakpoints cleared")):je(a,a.u,E)||je(a,a.ba,E)||
je(a,a.H,E)||a.g("breakpoint missing: "+Z(E.C)):"i"==B?a.g("breakpoint "+(wb(a.B,E.C)?"enabled":"cleared")+": port "+v+" (input)"):"o"==B?a.g("breakpoint "+(Hb(a.B,E.C)?"enabled":"cleared")+": port "+v+" (output)"):null!=E.C&&(Zd(a,E,O),"p"==B?a.Ha(a.u,E):"r"==B?a.Ha(a.ba,E):"w"==B?a.Ha(a.H,E):a.g("unknown breakpoint command: "+B))}}}break;case "c":a.ta&&(a.ta.value="");break;case "d":a:{var wa,P=f[0],K=f[1],ka=f[2],xa=f[3];if("?"==K){var ya="";for(wa in Sd)a.bb[wa]&&(ya&&(ya+=","),ya+=wa);ya+=",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");ya.length&&a.g("dump extension commands:\n\t"+ya)}else if("state"==K){var oe=bf(a.w,!0);"console"==ka?console.log(oe):(a.ta&&(a.ta.value=""),a.g(oe))}else if("symbols"==K)for(var Tc=0;Tc<a.J.length;Tc++){var Uc=a.J[Tc],ab;for(ab in Uc.Ca)if("."!=ab.charAt(0)){var pe=Uc.Ca[ab].o;
if(void 0!==pe){var qe=Uc.Ca[ab].l;qe&&(ab=qe);a.g(Z(pe)+" "+ab)}}}else{if("d"==P){for(wa in Sd)if(f[1]==wa){var re=a.bb[wa];re?(f.shift(),f.shift(),re(f)):a.g("no dump registered for "+K);break a}K||(P=a.fc||"db")}else a.fc=P;if("dh"==P){var se=K,te=ka,ue="",ve=0,V=a.sa,za=a.X;if(za.length){var Y=+se||a.Nb,bb=+te||10;isNaN(Y)?Y=bb:ue="more ";Y>za.length&&(a.g("note: only "+za.length+" available"),Y=za.length);V-=Y;0>V&&(null==za[za.length-1].C?(Y=V+Y,V=0):V+=za.length);var Vc=[];"call"==te&&(bb=
1E5,Vc=["CALL"]);for(void 0!==se&&a.g(Y+" instructions earlier:");0<bb&&V!=a.sa;){var we=za[V++];if(null==we.C)break;var xb=T(we.C),xf=Y--,xe=ne(a,xb,"history",xf);(!Vc.length||0<=xe.indexOf(Vc[0]))&&a.g(xe);xb.ub&&(V+=xb.ub,bb-=xb.ub,Y-=xb.ub);V>=za.length&&(V=0);a.Nb=Y;ve++;bb--}}ve||(a.g("no "+ue+"history available"),a.Nb=void 0)}else{var dc=X(a,K);if(dc){var ec=0;ka&&("l"==ka.charAt(0)&&(ka=ka.substr(1)||xa),ec=Re(a,ka)>>>0,65536<ec&&(ec=65536));for(var Ma="",fc="dd"==P?4:"dw"==P?2:1,gc=fc*ec||
128,yf=gc+15>>4||1;yf--&&0<gc;){var hc=0,Wc=0,yb,zb="",Xc="",K=Z(dc.C);for(yb=16;0<yb&&0<gc;yb--){var ic=a.W(dc,1),hc=hc|ic<<(Wc++<<3);Wc==fc&&(zb+=q(hc,2*fc),zb+=1==fc?9==yb?"-":" ":" ",hc=Wc=0);Xc+=32<=ic&&128>ic?String.fromCharCode(ic):".";gc--}Ma&&(Ma+="\n");Ma+=K+" "+zb+(0==yb?" "+Xc:"")}Ma&&a.g(Ma);a.Gb=dc}}}}break;case "e":if("else"==f[0])break;var jc=1,ye=255,ze=a.W,Ae=a.ga;"ew"==f[0]&&(jc=2,ye=65535,ze=a.Ea,Ae=a.sb);var Be=jc<<1,Ce=f[1];if(null==Ce)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=X(a,Ce);if(kc)for(var lc=2;lc<f.length;lc++){var Ab=Yd(a,f[lc]);if(void 0===Ab){a.g("unrecognized value: "+f[lc]);break}Ab&~ye&&a.g("warning: "+q(Ab)+" exceeds "+jc+"-byte value");var zf=ze.call(a,kc);a.g("changing "+Z(kc.C)+" from 0x"+q(zf,Be)+" to 0x"+q(Ab,Be));Ae.call(a,kc,Ab,jc)}}break;case "f":We(a,f[1]);break;case "g":a:{var De=f[1],Af=b;if(void 0!==De){var Yc=X(a,De,!0);if(!Yc)break a;Zd(a,Yc,Af);a.Ha(a.w,Yc,!0)}a.Ma(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;
a.g("\tew [a] [...] edit words at address a");else{var kc=X(a,Ce);if(kc)for(var lc=2;lc<f.length;lc++){var Ab=Yd(a,f[lc]);if(void 0===Ab){a.g("unrecognized value: "+f[lc]);break}Ab&~ye&&a.g("warning: "+q(Ab)+" exceeds "+jc+"-byte value");var zf=ze.call(a,kc);a.g("changing "+Z(kc.C)+" from 0x"+q(zf,Be)+" to 0x"+q(Ab,Be));Ae.call(a,kc,Ab,jc)}}break;case "f":We(a,f[1]);break;case "g":a:{var De=f[1],Af=b;if(void 0!==De){var Yc=X(a,De,!0);if(!Yc)break a;Zd(a,Yc,Af);a.Ha(a.u,Yc,!0)}a.Ma(!0)||c||a.g("cpu busy or unavailable, run command ignored")}break;
case "h":a:{var Zc;if(a.A.la)Zc="halting",a.da();else{if(hb(a,!0))break a;Zc="already halted"}c||a.g(Zc)}break;case "i":if("if"==f[0]){var $c;var Bb=b.substr(2),Bb=ha(Bb);Yd(a,Bb)?(c||a.g("true: "+Bb),$c=!0):(c||a.g("false: "+Bb),$c=!1);$c||(d=!1);break}var ad=f[1];if(ad&&"?"!=ad){var bd=Re(a,ad);if(void 0!==bd){var Bf=Fb(a.B,bd);a.g(r(bd)+": "+("0x"+q(Bf,2)))}}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 Cf=f[0];
if("?"==f[1])a.g("stack trace commands:"),a.g("\tk\tshow frame addresses"),a.g("\tks\tshow symbol information");else{var cd=0,Ee=T(),Cb=T(a.b.ca);for(a.g("stack trace for "+Z(Cb.C));10>cd;){for(var Na=null,Df=256;65536>Cb.C>>>0;){Ee.C=a.Ea(Cb,2);if(null==Cb.C||!Df--)break;for(var Ef=a,mc=Ee,Fe=null,Db=mc.C,Ge=Db,dd=1;6>=dd&&Db;dd++){if(2<dd){mc.C=Db;var nc=ne(Ef,mc);if(0<=nc.indexOf("CALL")){var He=nc.indexOf(" ");if(Db+(nc.indexOf(" ",He+1)-He-1)/2==Ge){Fe=nc;break}}}Db--}mc.C=Ge;if(Na=Fe)break}if(!Na||
null==Na)break;var Ie=null;if("ks"==Cf){var Je=Na.match(/[0-9A-F]+$/);Je&&(Ie=Ye(a,Je[0]))}Na=ga(Na,50)+" ;"+(Ie||"stack="+Z(Cb.C));a.g(Na);cd++}cd||a.g("no return addresses found")}break;case "l":if("ln"==f[0]){Ye(a,f[1],!0);break}break;case "m":a:{var Aa,Ba=null,G=f[1];"?"==G&&(G=void 0);if(void 0!==G){var Oa=0;if("all"==G)Oa=1610481663,G=null;else if("on"==G)Ba=!0,G=null;else if("off"==G)Ba=!1,G=null;else{"keys"==G&&(G="key");"kbd"==G&&(G="keyboard");for(Aa in Sd)if(G==Aa){Oa=Sd[Aa];Ba=!!(a.ha&
Oa);break}if(!Oa){a.g("unknown message category: "+G);break a}}Oa&&("on"==f[2]?(a.ha|=Oa,Ba=!0):"off"==f[2]&&(a.ha&=~Oa,Ba=!1))}var Ff=0,Ia="";for(Aa in Sd)if(!G||G==Aa){var Gf=!!(a.ha&Sd[Aa]);if(null===Ba||Ba==Gf)Ia&&(Ia+=","),++Ff%10||(Ia+="\n\t"),"key"==Aa&&(Aa="keys"),Ia+=Aa}void 0===G&&a.g("message commands:\n\tm [category] [on|off]\tturn categories on/off");a.g((null!==Ba?Ba?"messages on: ":"messages off: ":"message categories:\n\t")+(Ia||"none"));Ld(a)}break;case "o":var ed=f[1],Hf=f[2];if(ed&&
"?"!=ed){var fd=Re(a,ed,"port #"),gd=Re(a,Hf);void 0!==fd&&void 0!==gd&&(Ib(a.B,fd,gd),a.g(r(fd)+": "+("0x"+q(gd,2))))}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]){$e(a,b.substr(5));break}var Ke="pr"==f[0]?1:0,If=1+Ke;if(a.fa)a.g("step in progress");else{var hd=T(a.b.L);switch(a.W(hd)){case 205:a.fa=If,Ud(hd,3)}a.fa?(a.Ha(a.w,hd,!0),a.Ma()||(a.u&&a.u.lb(),a.fa=0)):af(a,Ke?"tr":"t")}break;
case "r":if("reset"==b){a.u&&a.u.reset();break}ge(a,f);break;case "s":Ze(a,f);break;case "t":af(a,f[0],f[1]);break;case "u":he(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Xe(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.22.0 ("+a.b.Sa+",RELEASE"+(kb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(pa());break;case "?":if(f[1]){$e(a,b.substr(1));break}var Eb="commands:",id;for(id in Nd)Eb+="\n"+ga(id,7)+Nd[id];pd(a)||(Eb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Eb);break;default:a.g("unknown command: "+
"?"!=ed){var fd=Re(a,ed,"port #"),gd=Re(a,Hf);void 0!==fd&&void 0!==gd&&(Ib(a.B,fd,gd),a.g(r(fd)+": "+("0x"+q(gd,2))))}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]){$e(a,b.substr(5));break}var Ke="pr"==f[0]?1:0,If=1+Ke;if(a.fa)a.g("step in progress");else{var hd=T(a.b.L);switch(a.W(hd)){case 205:a.fa=If,Ud(hd,3)}a.fa?(a.Ha(a.u,hd,!0),a.Ma()||(a.w&&a.w.lb(),a.fa=0)):af(a,Ke?"tr":"t")}break;
case "r":if("reset"==b){a.w&&a.w.reset();break}ge(a,f);break;case "s":Ze(a,f);break;case "t":af(a,f[0],f[1]);break;case "u":he(a,f[1],f[2],8);break;case "v":if("var"==f[0]){Xe(a,b.substr(3))||(d=!1);break}a.g("PC8080 version 1.22.0 ("+a.b.Sa+",RELEASE"+(kb?",TYPEDARRAYS":",LONGARRAYS")+")");a.g(pa());break;case "?":if(f[1]){$e(a,b.substr(1));break}var Eb="commands:",id;for(id in Nd)Eb+="\n"+ga(id,7)+Nd[id];pd(a)||(Eb+="\nnote: frequency/history disabled if no exec breakpoints");a.g(Eb);break;default:a.g("unknown command: "+
b),d=!1}}}catch(Le){a.g("debugger error: "+(Le.stack||Le.message)),d=!1}return d}function qc(a,b,c){b=$d(a,b,c);for(var d in b)if(!me(a,b[d]))return!1;return!0}Ja(function(){for(var a=A(document,"pc8080","debugger"),b=0;b<a.length;b++){var c=a[b],d=y(c),d=new Id(d);cb(d,c)}});function Gc(a,b,c){this.id=a.id;this.key=cf(a,b,c);this.F=a.F;df(this,a.Sb)}function cf(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}
Gc.prototype={constructor:Gc,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){df(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 df(a,b){a[a.id]={};b&&H(a,"parms",b);a.b=!1}function ef(a){var b=!0;if(sa()){var c=JSON.stringify(a[a.id]);ua(a.key,c)||(t("Unable to store "+c.length+" bytes in browser local storage"),b=!1)}return b}function ff(a){var b=!0;try{a[a.id]=JSON.parse(a[a.id])}catch(c){t(c.message||c),b=!1}return b}function gf(a,b){return b?(a[a.id]=b,a.b=!0):a.b?!0:sa()&&(b=ta(a.key))?(a[a.id]=b,a.b=!0):!1}function hf(a,b){return a[a.id][b]||null}function H(a,b,c){try{a[a.id][b]=c}catch(d){}}
function jf(a,b,c){w.call(this,"Computer",a,jf,67108864);this.A.ia=!1;kf(this,b);this.ba=cc(this,"autoPower",a);this.D=0;this.ra=a.busWidth||a.buswidth;this.u=lf;this.X=null;this.J=this.na=!1;this.sa=cc(this,"url")||"";(Math.random()+.1).toString(36);this.w=mf(this);if(this.b=$a("CPU",this.id)){this.F=$a("Debugger",this.id);this.aa=[];for(b=null;b=nb(this,"Video",b);)this.aa.push(b);this.B=new pb({id:this.Ib+".bus",busWidth:this.ra},this.b,this.F);var d,e=Za(this.id);if((this.G=$a("Panel",this.id))&&
this.G.ta)for(b=0;b<e.length;b++)d=e[b],d.oa=this.G.oa,d.g=this.G.g,d.ta=this.G.ta;for(b=0;b<e.length;b++)d=e[b],d.Fa&&d.Fa(this,this.B,this.b,this.F);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.M=d:this.u=parseInt(d,10));var f;if(a=cc(this,"state")||(f=!0,a.state))b=this.fa=a,f||(this.J=!0,this.u=lf),this.u&&(this.Y=new Gc(this,nf),gf(this.Y)?b=null:delete this.Y);!b&&this.u&&(b=of(this))&&(this.J=!0);if(b){var h=this;na(b,null,!0,function(a,b,c){c?(h.M=null,h.J=!1,h.oa("Unable to load machine state from server (error "+
function jf(a,b,c){w.call(this,"Computer",a,jf,67108864);this.A.ia=!1;kf(this,b);this.ba=cc(this,"autoPower",a);this.D=0;this.ra=a.busWidth||a.buswidth;this.w=lf;this.X=null;this.J=this.na=!1;this.sa=cc(this,"url")||"";(Math.random()+.1).toString(36);this.u=mf(this);if(this.b=$a("CPU",this.id)){this.F=$a("Debugger",this.id);this.aa=[];for(b=null;b=nb(this,"Video",b);)this.aa.push(b);this.B=new pb({id:this.Ib+".bus",busWidth:this.ra},this.b,this.F);var d,e=Za(this.id);if((this.G=$a("Panel",this.id))&&
this.G.ta)for(b=0;b<e.length;b++)d=e[b],d.oa=this.G.oa,d.g=this.G.g,d.ta=this.G.ta;for(b=0;b<e.length;b++)d=e[b],d.Fa&&d.Fa(this,this.B,this.b,this.F);b=null;d=a.resume;void 0!==d&&(1<d.length?b=this.M=d:this.w=parseInt(d,10));var f;if(a=cc(this,"state")||(f=!0,a.state))b=this.fa=a,f||(this.J=!0,this.w=lf),this.w&&(this.Y=new Gc(this,nf),gf(this.Y)?b=null:delete this.Y);!b&&this.w&&(b=of(this))&&(this.J=!0);if(b){var h=this;na(b,null,!0,function(a,b,c){c?(h.M=null,h.J=!1,h.oa("Unable to load machine state from server (error "+
c+(b?": "+ha(b):"")+")")):(h.X=b,h.na=!0);C(h)})}else C(this);this.V.power||(this.ba=!0);!c&&this.ba&&pf(this,this.jb)}else t("Unable to find CPU component")}Wa(jf);var nf="1.22.0",lf=0;function kf(a,b){if(!b){var c;if("object"==typeof resources&&(c=resources.parms))try{b=eval("("+c+")")}catch(d){t(d.message+" ("+c+")")}}a.K=b}
function cc(a,b,c){var d=b.toLowerCase(),d=Ra[b]||Ra[d];void 0===d&&a.K&&(d=a.K[b]);void 0===d&&c&&(d=c[b]);void 0===d&&"object"==typeof resources&&resources[b]&&(d=b);return d}function pf(a,b,c){for(var d=Za(a.id),e=0;e<=d.length;e++){var f=e<d.length?d[e]:a;if(!ib(f)){ib(f,function(){pf(a,b,c)});return}}b.call(a,c)}
function qf(a,b){var c=new Gc(a,nf,"validate");if(gf(c)&&ff(c)){var d=hf(c,"timestamp"),e=b?hf(b,"timestamp"):"unknown";d!=e&&(a.oa("Machine state may be out-of-date\n("+d+" vs. "+e+")\nCheck your browser's local storage limits"),b||c.clear())}}m=jf.prototype;
m.jb=function(a){void 0===a&&(a=this.u||(this.X?1:lf));if(!this.D){this.D++;var b=!1,c=!1;this.ma=!1;var d=this.Y||new Gc(this,nf);if(-1==a)b=!0;else if(a>lf){if(gf(d,this.X)){this.H=new Gc(this,nf,"failsafe");gf(this.H)&&(rf(this,d),a=2,df(this.H));H(this.H,"timestamp",la());ef(this.H);var e=this.u&&!this.J;if(1==a||qa("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ff(d)){var f=hf(d,"code"),h=hf(d,"data");f&&("ok"==f?gf(d,h):("error"==f&&"no machine state"!=
h?(this.oa("Error: "+h),"unable to verify user"==h&&(ua("user",""),this.w=null)):this.g(f+": "+h),df(d),gf(d)?(c=ff(d),e=!0):c=!1))}e&&qf(this,c?d:null)}else 2==a&&d.clear()}else qf(this);delete this.X;delete this.Y}e=Za(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=sf(this,h,d,b,c));b=[d,a,c];-1!=a?pf(this,this.Hb,b):this.Hb(b)}};
function sf(a,b,c,d,e){if(!b.A.ia){b.A.ia=!0;if(b.za){var f=null;e&&((f=hf(c,b.id))||(f=hf(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.za(f,d)&&f&&(t("Unable to restore state for "+b.type),a.fa&&!a.na?(c.clear(),a.u=lf,window&&window.location.reload()):a.ma=!0,b.za(null),e=!1)}if(!d&&b.Eb)for(a=b.Eb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
m.jb=function(a){void 0===a&&(a=this.w||(this.X?1:lf));if(!this.D){this.D++;var b=!1,c=!1;this.ma=!1;var d=this.Y||new Gc(this,nf);if(-1==a)b=!0;else if(a>lf){if(gf(d,this.X)){this.H=new Gc(this,nf,"failsafe");gf(this.H)&&(rf(this,d),a=2,df(this.H));H(this.H,"timestamp",la());ef(this.H);var e=this.w&&!this.J;if(1==a||qa("Click OK to restore the previous PC8080 machine state, or CANCEL to reset the machine.")){if(c=ff(d)){var f=hf(d,"code"),h=hf(d,"data");f&&("ok"==f?gf(d,h):("error"==f&&"no machine state"!=
h?(this.oa("Error: "+h),"unable to verify user"==h&&(ua("user",""),this.u=null)):this.g(f+": "+h),df(d),gf(d)?(c=ff(d),e=!0):c=!1))}e&&qf(this,c?d:null)}else 2==a&&d.clear()}else qf(this);delete this.X;delete this.Y}e=Za(this.id);for(f=0;f<e.length;f++)h=e[f],h!==this&&h!=this.b&&(c=sf(this,h,d,b,c));b=[d,a,c];-1!=a?pf(this,this.Hb,b):this.Hb(b)}};
function sf(a,b,c,d,e){if(!b.A.ia){b.A.ia=!0;if(b.za){var f=null;e&&((f=hf(c,b.id))||(f=hf(c,b.id.replace(/[a-z0-9]\./i,"."))));"string"===typeof f&&(f=null);!b.za(f,d)&&f&&(t("Unable to restore state for "+b.type),a.fa&&!a.na?(c.clear(),a.w=lf,window&&window.location.reload()):a.ma=!0,b.za(null),e=!1)}if(!d&&b.Eb)for(a=b.Eb.split("|"),c=0;c<a.length;c++)b.status(a[c])}return e}
m.Hb=function(a){var b=a[0],c=0>a[1];a=a[2];this.A.ia=!0;var d=this.V.power;d&&(d.textContent="Shutdown");this.ka||(this.g("PC8080 v"+nf+"\nCopyright \u00a9 2012-2016 Jeff Parsons <Jeff@pcjs.org>\nLicense: GPL version 3 or later <http://gnu.org/licenses/gpl.html>"),this.ka=!0);this.b&&(sf(this,this.b,b,c,a),sc(this.b));this.ma&&(rf(this,b),b.clear());!c&&this.H&&(this.H.clear(),delete this.H);this.D=0};
function rf(a,b){if(qa("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.sa,d=a.w||"",e=b.toString(),f={app:"PC8080"};f.ver=nf;f.url=c;f.user=d;f.type="bug";f.data=e;na("http://www.pcjs.org/api/v1/report",f,!0)}}
function rf(a,b){if(qa("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.sa,d=a.u||"",e=b.toString(),f={app:"PC8080"};f.ver=nf;f.url=c;f.user=d;f.type="bug";f.data=e;na("http://www.pcjs.org/api/v1/report",f,!0)}}
function bf(a,b,c){var d,e="none";if(a.D)return null;a.D--;var f=new Gc(a,nf),h=new Gc(a,nf,"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.ya&&(c&&a.b.da(),d=a.b.ya(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),k=0;k<g.length;k++){var l=g[k];l.A.ia&&(l.ya&&(d=l.ya(b,c),"object"===typeof d&&H(f,l.id,d)),c&&(l.A.ia=!1,!1===d&&(e=null)))}e&&(c?(g=
d=!1,b?(a.w&&tf(a,a.w,f.toString()),ef(h)&&ef(f)||(e=null,d=g=!0)):a.u&&(d=!0,g=3==a.u),d&&f.clear(g)):e=f.toString());c&&(a.A.ia=!1,b=a.V.power)&&(b.textContent="Power");a.D=0;return e}m.reset=function(){this.B&&this.B.reset&&(this.F&&fb(this,0)&&this.F.message("Resetting "+this.B.type,void 0),this.B.reset());for(var a=Za(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.B&&c.reset&&(this.F&&fb(this,0)&&this.F.message("Resetting "+c.type,void 0),c.reset())}};
d=!1,b?(a.u&&tf(a,a.u,f.toString()),ef(h)&&ef(f)||(e=null,d=g=!0)):a.w&&(d=!0,g=3==a.w),d&&f.clear(g)):e=f.toString());c&&(a.A.ia=!1,b=a.V.power)&&(b.textContent="Power");a.D=0;return e}m.reset=function(){this.B&&this.B.reset&&(this.F&&fb(this,0)&&this.F.message("Resetting "+this.B.type,void 0),this.B.reset());for(var a=Za(this.id),b=0;b<a.length;b++){var c=a[b];c!==this&&c!==this.B&&c.reset&&(this.F&&fb(this,0)&&this.F.message("Resetting "+c.type,void 0),c.reset())}};
m.start=function(a,b){for(var c=Za(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.start&&e.start(a,b)}};m.stop=function(a,b){for(var c=Za(this.id),d=0;d<c.length;d++){var e=c[d];"CPU"!=e.type&&e!==this&&e.stop&&e.stop(a,b)}};
m.qa=function(a,b,c){var d=this;switch(b){case "power":return this.V[b]=c,c.onclick=function(){d.D||(d.A.ia?bf(d,!1,!0):pf(d,d.jb))},!0;case "reset":return this.V[b]=c,c.onclick=function(){if(d.A.ia&&!d.D)if(d.u&&!d.M){var a=qa("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");bf(d,a,!0);!a&&d.fa?window&&window.location.reload():d.jb(lf)}else d.reset(),d.b&&sc(d.b)},!0;case "save":if(da(oa(),"pcjs.org")){c.parentNode.removeChild(c);
break}this.V[b]=c;c.onclick=function(){var a=mf(d,!0);if(a){var b=!!(d.u&&!d.M||d.fa),c=bf(d,b);b?tf(d,a,c):d.oa("Resume disabled, machine state not saved")}};return!0}return!1};
function mf(a,b){var c=a.w;c||(c=ta("user"),void 0!==c?!c&&b&&(c=null,window&&(c=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&&((c=uf(a,c))||a.oa("The user ID is invalid."))):b&&a.oa("Browser local storage is not available"));return c}
function uf(a,b){a.w=null;var c=na(oa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(ua("user",c.data),a.w=c.data)}catch(e){t(e.message+" ("+d+")")}return a.w}function of(a){var b=null;a.w&&(b=oa()+"/api/v1/user?req=load&user="+a.w+"&state="+cf(a,nf));return b}
function tf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=cf(a,nf);d.data=c;b=na(oa()+"/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.oa("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.oa(c),ua("user",""),a.w=null)}}
m.qa=function(a,b,c){var d=this;switch(b){case "power":return this.V[b]=c,c.onclick=function(){d.D||(d.A.ia?bf(d,!1,!0):pf(d,d.jb))},!0;case "reset":return this.V[b]=c,c.onclick=function(){if(d.A.ia&&!d.D)if(d.w&&!d.M){var a=qa("Click OK to save changes to this PC8080 machine.\n\nWARNING: If you CANCEL, all disk changes will be discarded.");bf(d,a,!0);!a&&d.fa?window&&window.location.reload():d.jb(lf)}else d.reset(),d.b&&sc(d.b)},!0;case "save":if(da(oa(),"pcjs.org")){c.parentNode.removeChild(c);
break}this.V[b]=c;c.onclick=function(){var a=mf(d,!0);if(a){var b=!!(d.w&&!d.M||d.fa),c=bf(d,b);b?tf(d,a,c):d.oa("Resume disabled, machine state not saved")}};return!0}return!1};
function mf(a,b){var c=a.u;c||(c=ta("user"),void 0!==c?!c&&b&&(c=null,window&&(c=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&&((c=uf(a,c))||a.oa("The user ID is invalid."))):b&&a.oa("Browser local storage is not available"));return c}
function uf(a,b){a.u=null;var c=na(oa()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(ua("user",c.data),a.u=c.data)}catch(e){t(e.message+" ("+d+")")}return a.u}function of(a){var b=null;a.u&&(b=oa()+"/api/v1/user?req=load&user="+a.u+"&state="+cf(a,nf));return b}
function tf(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=cf(a,nf);d.data=c;b=na(oa()+"/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.oa("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.oa(c),ua("user",""),a.u=null)}}
function nb(a,b,c){a=Za(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}m.lb=function(){};m.va=function(a){this.b&&this.b.va(a);this.G&&this.G.va(a)};
function yc(a,b){for(var c=0;c<a.aa.length;c++)a:{var d=a.aa[c];if(0<=b){if(b&1){d=d.b;d.w=d.w&-8|10;break a}var e=d.b;e.w=e.w&-8|9;if(e=d.aa){for(var e=d.B,f=d.M,h=!0,g=d.X>>>e.ea;0<f&&g<e.T.length;)e.T[g].wa&&(e.T[g].wa=h=!1,e.T[g].Kb=!0),f-=e.ua,g++;e=h}if(e)break a}var g=d.X,k=g+d.M,l=0,p=d.Aa,n=0,u=0,e=d.D,z=0,f=d.H,v=h=0,O=d.fa,B=(1<<O)-1;d.Ba&&(O=-O,v=16+O);for(;g<k;){var U=ub(d.B,g);if(d.aa&&U===d.J[l])n+=d.ra;else{d.J[l]=U;var D=v;v&&(U=U>>8|(U&255)<<8);n<e&&(e=n);for(var wa=0;wa<d.ra;wa++){var P=
U>>D&B,K=d.ba,ka=n++,P=p[P],xa=void 0,xa=d.ka?(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];D+=O}n>z&&(z=n);u<f&&(f=u);u>=h&&(h=u+1)}g+=2;l++;if(n>=d.D&&(n=0,u++,u>d.H))break}d.aa=!0;e<d.D&&(g=z-e,h-=f,d.ka?d.ma.putImageData(d.ba,0,0):d.ma.putImageData(d.ba,0,0,e,f,g,h),d.G.drawImage(d.w,0,0,d.w.width,d.w.height,0,0,d.Y,d.K))}}
function yc(a,b){for(var c=0;c<a.aa.length;c++)a:{var d=a.aa[c];if(0<=b){if(b&1){d=d.b;d.u=d.u&-8|10;break a}var e=d.b;e.u=e.u&-8|9;if(e=d.aa){for(var e=d.B,f=d.M,h=!0,g=d.X>>>e.ea;0<f&&g<e.T.length;)e.T[g].wa&&(e.T[g].wa=h=!1,e.T[g].Kb=!0),f-=e.ua,g++;e=h}if(e)break a}var g=d.X,k=g+d.M,l=0,p=d.Aa,n=0,u=0,e=d.G,z=0,f=d.H,v=h=0,O=d.fa,B=(1<<O)-1;d.Ba&&(O=-O,v=16+O);for(;g<k;){var U=ub(d.B,g);if(d.aa&&U===d.J[l])n+=d.ra;else{d.J[l]=U;var E=v;v&&(U=U>>8|(U&255)<<8);n<e&&(e=n);for(var wa=0;wa<d.ra;wa++){var P=
U>>E&B,K=d.ba,ka=n++,P=p[P],xa=void 0,xa=d.ka?(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<f&&(f=u);u>=h&&(h=u+1)}g+=2;l++;if(n>=d.G&&(n=0,u++,u>d.H))break}d.aa=!0;e<d.G&&(g=z-e,h-=f,d.ka?d.ma.putImageData(d.ba,0,0):d.ma.putImageData(d.ba,0,0,e,f,g,h),d.u.drawImage(d.D,0,0,d.D.width,d.D.height,0,0,d.Y,d.K))}}
Ja(function(){for(var a=A(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=y(c),c=A(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=y(f),h=new jf(h,d,!0);cb(h,f);h.ba&&pf(h,h.jb)}});Ea.show.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=$a("Computer",c.id))&&c.ka&&!c.A.ia&&c.jb(-1)}});
Ea.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=$a("Computer",c.id))&&c.A.ia&&bf(c,!(!c.u||c.M),!0)}});var vf=0;function wf(a,b,c,d,e,f){e("Loading "+a+"...");na(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Jf(g,a,b,c,d,e,f)})}
Ea.exit.push(function(){for(var a=A(document,"pc8080","computer"),b=0;b<a.length;b++){var c=y(a[b]);(c=$a("Computer",c.id))&&c.A.ia&&bf(c,!(!c.w||c.M),!0)}});var vf=0;function wf(a,b,c,d,e,f){e("Loading "+a+"...");na(a,null,!0,function(h,g,k){k?(g||(g="unable to load "+a+" ("+k+")"),f(g,null)):Jf(g,a,b,c,d,e,f)})}
function Jf(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ya(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));
g=null;if("<"==a.charAt(0))try{e||(a=a.replace(/<!DOCTYPE(.|[\r\n])*]>\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<a.length?a.substr(0,255)+"...":a);h(a,g)}}a?e?Kf(a,f,g):g(a,null):h("no data"+(b?" for file: "+b:""),null)}
function Kf(a,b,c){var d;if(d=/<([a-z]+)\s+ref="(.*?)"(.*?)\/>/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 k=g[0],l,p=/( [a-z]+=)(['"])(.*?)\2/g;l=p.exec(f);)k=0>k.indexOf(l[1])?k.replace(">",l[0]+">"):k.replace(new RegExp(l[1]+"(['\"])(.*?)\\1"),l[0]);g[0]!=k&&(h=h.replace(g[0],k))}else{c(a,"missing <"+d[1]+"> in "+e);return}h=h.replace(/<\?xml[^>]*>[\r\n]*/,

View file

@ -42,13 +42,13 @@ function ub(a,b){a.h.la&&(a.h.Ia=!0);a.L-=a.a;a.a=0;xb(a,a.I);a.I=0;if(a.h.T){a.
function Db(a){a.b=0;a.g=0;a.v=0;a.i=0;a.w=0;a.j=0;a.l=0;a.A=0;D(a,a.wa);Fb(a,0);a.D=0}function Gb(a,b){a.wa=b;D(a,b)}m.Ua=function(){var a=this.b+this.g+this.v+this.i+this.w+this.j+this.l|0;return a=a+this.A+this.m+Hb(this)|0};
m.save=function(){var a=new E(this);G(a,0,[this.b,this.g,this.v,this.i,this.w,this.j,this.l,this.A,this.m,Hb(this)]);G(a,1,[this.D,this.N,this.c.ia]);for(var b=this.o,c=0,d=[],e=0;e<b.l;e++){var f=b.b[e];if(f.S||f.Ra){d[c++]=e;var h=c++;a:if(f=f.save()){for(var g=0,l=0,k=[];g<f.length;){for(var A=f[g],q=g+1;q<f.length&&f[q]===A;)q++;k[l++]=q-g;k[l++]=A;g=q}if(k.length<f.length){f=k;break a}}d[h]=f}}G(a,2,d);return a.data()};
m.restore=function(a){var b=a[0];this.b=b[0];this.g=b[1];this.v=b[2];this.i=b[3];this.w=b[4];this.j=b[5];this.l=b[6];this.A=b[7]&65535;D(this,b[8]);Fb(this,b[9]);b=a[1];this.D=b[0];this.N=b[1];wb(this,b[3]);a:{b=this.o;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.A){for(var f=0,h=Array(b.A),g=0;g<e.length-1;)for(var l=e[g++],k=e[g++];l--;)h[f++]=k;e=h}f=b.b[d];if(!f||!f.restore(e)){r("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};
m.R=function(a,b,c){var d=!1;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 "SF":case "ZF":case "AF":case "PF":case "CF":this.B[b]=c;this.xa++;d=!0;break;default:d=this.parent.R.call(this,a,b,c)}return d};function Ib(a){return a.g<<8|a.v}function Jb(a,b){a.g=b>>8&255;a.v=b&255}function H(a){return a.i<<8|a.w}function Kb(a,b){a.i=b>>8&255;a.w=b&255}function I(a){return a.j<<8|a.l}
m.R=function(a,b,c){var d=!1;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.B[b]=c;this.xa++;d=!0;break;default:d=this.parent.R.call(this,a,b,c)}return d};function Ib(a){return a.g<<8|a.v}function Jb(a,b){a.g=b>>8&255;a.v=b&255}function H(a){return a.i<<8|a.w}function Kb(a,b){a.i=b>>8&255;a.w=b&255}function I(a){return a.j<<8|a.l}
function J(a,b){a.j=b>>8&255;a.l=b&255}function D(a,b){a.m=b&65535}function K(a){return a.f&256?1:0}function Lb(a){return Pa[a.s&255]?4:0}function Hb(a){return a.G&-214|(a.s&128?128:0)|(a.f&255?0:64)|((a.s^a.C)&16?16:0)|Lb(a)|K(a)}function Fb(a,b){a.f=a.s=a.C=0;b&1&&(a.f|=256);b&4||(a.s|=1);b&16&&(a.C|=16);b&64||(a.f|=255);b&128&&(a.s^=192);a.G=a.G&-513|b&512|2}function M(a,b){a.C=a.b^b;return a.s=(a.f=a.b+b)&255}function N(a,b){a.C=a.b^b;return a.s=(a.f=a.b+b+(a.f&256?1:0))&255}
function O(a,b){a.f=a.s=a.C=a.b&b;(a.b|b)&8&&(a.C^=16);return a.f}function Mb(a,b){a.C=b^255;b=a.s=b+255&255;a.f=a.f&-256|b;return b}function Nb(a,b){a.C=b;b=a.s=b+1&255;a.f=a.f&-256|b;return b}function P(a,b){return a.s=a.f=a.C=a.b|b}function Q(a,b){b^=255;a.C=a.b^b;return a.s=(a.f=a.b+b+1^256)&255}function R(a,b){b^=255;a.C=a.b^b;return a.s=(a.f=a.b+b+(a.f&256?0:1)^256)&255}function S(a,b){return a.s=a.f=a.C=a.b^b}m.F=function(a){return this.o.F(a)};m.M=function(a,b){this.o.M(a,b)};
function T(a){var b=a.F(a.m);D(a,a.m+1);return b}function U(a){var b=Xa(a.o,a.m);D(a,a.m+2);return b}function V(a){var b=Xa(a.o,a.A);a.A=a.A+2&65535;return b}function W(a,b){a.A=a.A-2&65535;Za(a.o,a.A,b)}function X(a,b,c,d){d=d||2;a.B[b]&&(void 0===c&&(a.h.$=!0,a.K("Value for "+b+" is invalid"),ub(a)),c=!a.h.T||a.h.Sa?n(c,d):"--------".substr(0,d),a.B[b].textContent!=c&&(a.B[b].textContent=c))}
m.da=function(a){this.xa&&(a||!this.h.T||this.h.Sa)&&(X(this,"A",this.b),X(this,"B",this.g),X(this,"C",this.v),X(this,"BC",Ib(this),4),X(this,"D",this.i),X(this,"E",this.w),X(this,"DE",H(this),4),X(this,"H",this.j),X(this,"L",this.l),X(this,"HL",I(this),4),X(this,"SP",this.A,4),X(this,"PC",this.m,4),a=Hb(this),X(this,"PS",a,4),X(this,"SF",a&128?1:0,1),X(this,"ZF",a&64?1:0,1),X(this,"AF",a&16?1:0,1),X(this,"PF",a&4?1:0,1),X(this,"CF",a&1?1:0,1));if(a=this.B.speed)a.textContent=this.h.T&&this.c.ba?
this.c.ba.toFixed(2)+"Mhz":"Stopped"};m.$a=function(a){this.h.Ba=!0;this.h.eb=!1;this.h.Ta=!1;this.L=this.a=a;do{if(a=this.D)this.D&8&&this.G&512?(a=199|(this.D&7)<<3,this.D&=-16,this.G&=-513,this.va[a].call(this),a=!0):a=!1,a=!a;if(a&&this.D&16){this.a=0;break}this.va[T(this)].call(this)}while(0<this.a);return this.h.Ba?this.L-this.a:void 0===this.h.Ba?0:-1};xa(function(){for(var a=y(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Bb(d);La(d,c)}});function Ob(){this.a-=4}
function Pb(){D(this,U(this));this.a-=10}function Qb(){D(this,V(this));this.a-=10}function Rb(){var a=U(this);W(this,this.m);D(this,a);this.a-=17}
m.da=function(a){this.xa&&(a||!this.h.T||this.h.Sa)&&(X(this,"A",this.b),X(this,"B",this.g),X(this,"C",this.v),X(this,"BC",Ib(this),4),X(this,"D",this.i),X(this,"E",this.w),X(this,"DE",H(this),4),X(this,"H",this.j),X(this,"L",this.l),X(this,"HL",I(this),4),X(this,"SP",this.A,4),X(this,"PC",this.m,4),a=Hb(this),X(this,"PS",a,4),X(this,"IF",a&512?1:0,1),X(this,"SF",a&128?1:0,1),X(this,"ZF",a&64?1:0,1),X(this,"AF",a&16?1:0,1),X(this,"PF",a&4?1:0,1),X(this,"CF",a&1?1:0,1));if(a=this.B.speed)a.textContent=
this.h.T&&this.c.ba?this.c.ba.toFixed(2)+"Mhz":"Stopped"};m.$a=function(a){this.h.Ba=!0;this.h.eb=!1;this.h.Ta=!1;this.L=this.a=a;do{if(a=this.D)this.D&8&&this.G&512?(a=199|(this.D&7)<<3,this.D&=-16,this.G&=-513,this.va[a].call(this),a=!0):a=!1,a=!a;if(a&&this.D&16){this.a=0;break}this.va[T(this)].call(this)}while(0<this.a);return this.h.Ba?this.L-this.a:void 0===this.h.Ba?0:-1};xa(function(){for(var a=y(document,"pc8080","cpu"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Bb(d);La(d,c)}});
function Ob(){this.a-=4}function Pb(){D(this,U(this));this.a-=10}function Qb(){D(this,V(this));this.a-=10}function Rb(){var a=U(this);W(this,this.m);D(this,a);this.a-=17}
var Cb=[Ob,function(){Jb(this,U(this));this.a-=10},function(){this.M(Ib(this),this.b);this.a-=7},function(){Jb(this,Ib(this)+1);this.a-=5},function(){this.g=Nb(this,this.g);this.a-=5},function(){this.g=Mb(this,this.g);this.a-=5},function(){this.g=T(this);this.a-=7},function(){var a=this.b<<1;this.b=a&255|a>>8;this.f=this.f&255|a&256;this.a-=4},Ob,function(){var a;J(this,a=I(this)+Ib(this));this.f=this.f&255|a>>8&256;this.a-=10},function(){this.b=this.F(Ib(this));this.a-=7},function(){Jb(this,Ib(this)-
1);this.a-=5},function(){this.v=Nb(this,this.v);this.a-=5},function(){this.v=Mb(this,this.v);this.a-=5},function(){this.v=T(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(a|this.b)>>1;this.f=this.f&255|a;this.a-=4},Ob,function(){Kb(this,U(this));this.a-=10},function(){this.M(H(this),this.b);this.a-=7},function(){Kb(this,H(this)+1);this.a-=5},function(){this.i=Nb(this,this.i);this.a-=5},function(){this.i=Mb(this,this.i);this.a-=5},function(){this.i=T(this);this.a-=7},function(){var a=this.b<<
1;this.b=a&255|this.f>>8;this.f=this.f&255|a&256;this.a-=4},Ob,function(){var a;J(this,a=I(this)+H(this));this.f=this.f&255|a>>8&256;this.a-=10},function(){this.b=this.F(H(this));this.a-=7},function(){Kb(this,H(this)-1);this.a-=5},function(){this.w=Nb(this,this.w);this.a-=5},function(){this.w=Mb(this,this.w);this.a-=5},function(){this.w=T(this);this.a-=7},function(){var a=this.b<<8&256;this.b=(this.f&256|this.b)>>1;this.f=this.f&255|a;this.a-=4},Ob,function(){J(this,U(this));this.a-=10},function(){var a=
@ -85,8 +85,9 @@ function $b(a,b){if(Va(a.o,b,a.c,a.l?1:eb)){var c;for(c=0;c<a.b.length;c++)Ya(a.
return b}}(a));Gb(a.a,b)}return!0}return!1}function ac(a,b){b=b.replace(/\r/g,"");a.Z&&(a.Z.value+=b,a.Z.scrollTop=a.Z.scrollHeight)}xa(function(){for(var a=y(document,"pc8080","rom"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new Wb(d);La(d,c)}});function dc(a){t.call(this,"RAM",a,dc);this.f=a.addr;this.c=a.size;this.b=!1}v(dc);m=dc.prototype;m.aa=function(a,b,c,d){this.o=b;this.a=c;this.H=d;B(this)};m.V=function(a,b){b||this.reset();return!0};m.U=function(a){return a?this.save():!0};
m.reset=function(){!this.b&&this.c&&Va(this.o,this.f,this.c,1)&&(this.b=!0,this.status(Math.floor(this.c/1024)+"Kb allocated"));this.b||r("No RAM allocated")};m.save=function(){return null};m.restore=function(){return!0};xa(function(){for(var a=y(document,"pc8080","ram"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new dc(d);La(d,c)}});function ec(a){t.call(this,"Keyboard",a,ec);B(this)}v(ec);
xa(function(){for(var a=y(document,"pc8080","keyboard"),b=0;b<a.length;b++){var c=a[b],d=x(c),d=new ec(d);La(d,c)}});
function fc(a,b,c){t.call(this,"Video",a,fc);this.s=a.screenWidth;this.j=a.screenHeight;this.m=a.bufferAddr;this.c=a.bufferCols;this.g=a.bufferRows;this.D=a.bufferBits||1;this.Y=a.bufferLeft||0;this.G=a.bufferRotate;this.bb=a.interruptRate;this.W=a.refreshRate||60;this.f=c;this.O=a.screenRotate;90==this.O&&(this.f.translate(0,this.j),this.f.rotate(-this.O*Math.PI/180),this.f.scale(this.j/this.s,this.s/this.j));this.X=[[0,0,0,255],[255,255,255,255]];a=this.c;b=this.g;this.G&&(a=this.g,b=this.c);this.C=
this.f.createImageData(a,b);this.b=document.createElement("canvas");this.b.width=a;this.b.height=b;this.I=this.b.getContext("2d")}v(fc);fc.prototype.aa=function(a,b,c,d){this.u=a;this.o=b;this.a=c;this.H=d;this.l=(this.c*this.D>>3)*this.g;Va(this.o,this.m,this.l,3)&&(this.L=this.l>>1,this.N=16/this.D|0,this.A=!1,void 0===this.i||this.i.length!=this.L)&&(this.i=Array(this.L));B(this)};
function fc(a,b,c){t.call(this,"Video",a,fc);this.s=a.screenWidth;this.j=a.screenHeight;this.m=a.bufferAddr;this.f=a.bufferCols;this.g=a.bufferRows;this.D=a.bufferBits||1;this.Y=a.bufferLeft||0;this.G=a.bufferRotate;this.bb=a.interruptRate;this.W=a.refreshRate||60;this.b=c;this.b.webkitImageSmoothingEnabled=!1;this.b.mozImageSmoothingEnabled=!1;this.b.msImageSmoothingEnabled=!1;this.b.imageSmoothingEnabled=!1;this.O=a.screenRotate;90==this.O&&(this.b.translate(0,this.j),this.b.rotate(-this.O*Math.PI/
180),this.b.scale(this.j/this.s,this.s/this.j));this.X=[[0,0,0,255],[255,255,255,255]];a=this.f;b=this.g;this.G&&(a=this.g,b=this.f);this.C=this.b.createImageData(a,b);this.c=document.createElement("canvas");this.c.width=a;this.c.height=b;this.I=this.c.getContext("2d")}v(fc);
fc.prototype.aa=function(a,b,c,d){this.u=a;this.o=b;this.a=c;this.H=d;this.l=(this.f*this.D>>3)*this.g;Va(this.o,this.m,this.l,3)&&(this.L=this.l>>1,this.N=16/this.D|0,this.A=!1,void 0===this.i||this.i.length!=this.L)&&(this.i=Array(this.L));B(this)};
xa(function(){for(var a=y(document,"pc8080","video"),b=0;b<a.length;b++){var c=a[b],d=x(c),e=document.createElement("canvas");if(void 0===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<=(window?window.navigator.userAgent:"").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||Ca.aspect);f&&.3<=f&&3.33>=f&&(wa("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");ra("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"));c.appendChild(f);e=e.getContext("2d");d=new fc(d,0,e);La(d,c)}});
function E(a,b,c){this.id=a.id;this.key=gc(a,b,c);this.H=a.H;hc(this,a.Ya)}function gc(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}
@ -111,8 +112,8 @@ function pc(a,b){var c=a.c;c||(c=pa("user"),void 0!==c?!c&&b&&(c=null,window&&(c
function xc(a,b){a.c=null;var c=p(ja()+"/api/v1/user?req=verify&user="+b),d=c[1];if(!c[0]&&d)try{c=eval("("+d+")"),c.code&&"ok"==c.code&&(qa("user",c.data),a.c=c.data)}catch(e){r(e.message+" ("+d+")")}return a.c}function qc(a){var b=null;a.c&&(b=ja()+"/api/v1/user?req=load&user="+a.c+"&state="+gc(a,Z));return b}
function wc(a,b,c){if(c){var d={req:"store"};d.user=b;d.state=gc(a,Z);d.data=c;b=p(ja()+"/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.K("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.K(c),qa("user",""),a.c=null)}}
function Ra(a,b,c){a=w(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}m.da=function(a){this.a&&this.a.da(a);this.g&&this.g.da(a)};
function Ab(a,b){for(var c=0;c<a.A.length;c++)a:{var d=a.A[c];if(0<=b){if(b&1){d=d.a;d.D=d.D&-8|10;break a}var e=d.a;e.D=e.D&-8|9;if(e=d.A){for(var e=d.o,f=d.l,h=!0,g=d.m>>>e.c;0<f&&g<e.b.length;)e.b[g].S&&(e.b[g].S=h=!1,e.b[g].Ra=!0),f-=e.f,g++;e=h}if(e)break a}var g=d.m,l=g+d.l,k=0,A=d.X,q=0,F=0,e=d.c,vb=0,f=d.g,bc=h=0,Fa=d.D,Dc=(1<<Fa)-1;d.Y&&(Fa=-Fa,bc=16+Fa);for(;g<l;){var z;z=d.o;var aa=g,sa=aa&z.g,L=(aa&z.i)>>>z.c;z=sa!=z.g?z.b[L].Za(sa,aa):z.b[L++].Ma(sa,aa)|z.b[L&z.u].Ma(0,aa+1)<<8;if(d.A&&
z===d.i[k])q+=d.N;else{d.i[k]=z;(aa=bc)&&(z=z>>8|(z&255)<<8);q<e&&(e=q);for(sa=0;sa<d.N;sa++){var ma=z>>aa&Dc,L=d.C,cc=q++,ma=A[ma],na=void 0,na=d.G?(L.height-cc-1)*L.width+F:cc+F*L.width,na=na*ma.length;L.data[na]=ma[0];L.data[na+1]=ma[1];L.data[na+2]=ma[2];L.data[na+3]=ma[3];aa+=Fa}q>vb&&(vb=q);F<f&&(f=F);F>=h&&(h=F+1)}g+=2;k++;if(q>=d.c&&(q=0,F++,F>d.g))break}d.A=!0;e<d.c&&(g=vb-e,h-=f,d.G?d.I.putImageData(d.C,0,0):d.I.putImageData(d.C,0,0,e,f,g,h),d.f.drawImage(d.b,0,0,d.b.width,d.b.height,0,
function Ab(a,b){for(var c=0;c<a.A.length;c++)a:{var d=a.A[c];if(0<=b){if(b&1){d=d.a;d.D=d.D&-8|10;break a}var e=d.a;e.D=e.D&-8|9;if(e=d.A){for(var e=d.o,f=d.l,h=!0,g=d.m>>>e.c;0<f&&g<e.b.length;)e.b[g].S&&(e.b[g].S=h=!1,e.b[g].Ra=!0),f-=e.f,g++;e=h}if(e)break a}var g=d.m,l=g+d.l,k=0,A=d.X,q=0,F=0,e=d.f,vb=0,f=d.g,bc=h=0,Fa=d.D,Dc=(1<<Fa)-1;d.Y&&(Fa=-Fa,bc=16+Fa);for(;g<l;){var z;z=d.o;var aa=g,sa=aa&z.g,L=(aa&z.i)>>>z.c;z=sa!=z.g?z.b[L].Za(sa,aa):z.b[L++].Ma(sa,aa)|z.b[L&z.u].Ma(0,aa+1)<<8;if(d.A&&
z===d.i[k])q+=d.N;else{d.i[k]=z;(aa=bc)&&(z=z>>8|(z&255)<<8);q<e&&(e=q);for(sa=0;sa<d.N;sa++){var ma=z>>aa&Dc,L=d.C,cc=q++,ma=A[ma],na=void 0,na=d.G?(L.height-cc-1)*L.width+F:cc+F*L.width,na=na*ma.length;L.data[na]=ma[0];L.data[na+1]=ma[1];L.data[na+2]=ma[2];L.data[na+3]=ma[3];aa+=Fa}q>vb&&(vb=q);F<f&&(f=F);F>=h&&(h=F+1)}g+=2;k++;if(q>=d.f&&(q=0,F++,F>d.g))break}d.A=!0;e<d.f&&(g=vb-e,h-=f,d.G?d.I.putImageData(d.C,0,0):d.I.putImageData(d.C,0,0,e,f,g,h),d.b.drawImage(d.c,0,0,d.c.width,d.c.height,0,
0,d.s,d.j))}}xa(function(){for(var a=y(document,"pc8080-machine"),b=0;b<a.length;b++)for(var c=a[b],d=x(c),c=y(c,"pc8080","computer"),e=0;e<c.length;e++){var f=c[e],h=x(f),h=new mc(h,d,!0);La(h,f);h.C&&rc(h,h.sa)}});ta.show.push(function(){for(var a=y(document,"pc8080","computer"),b=0;b<a.length;b++){var c=x(a[b]);(c=Ka("Computer",c.id))&&c.G&&!c.h.J&&c.sa(-1)}});
ta.exit.push(function(){for(var a=y(document,"pc8080","computer"),b=0;b<a.length;b++){var c=x(a[b]);(c=Ka("Computer",c.id))&&c.h.J&&vc(c,!(!c.b||c.m),!0)}});var yc=0;function zc(a,b,c,d,e,f){e("Loading "+a+"...");p(a,null,!0,function(h,g,l){l?(g||(g="unable to load "+a+" ("+l+")"),f(g,null)):Ac(g,a,b,c,d,e,f)})}
function Ac(a,b,c,d,e,f,h){function g(a,f){if(f)h(f,null);else{if(c){Ja(c,b,a);var g=b;g&&0>g.indexOf("/")&&"/"==window.location.pathname.slice(-1)&&(g=window.location.pathname+g);d?"}"==d.slice(-1)?(d=d.slice(0,-1),1<d.length&&(d+=",")):d='{state:"'+d+'",':d="{";d+='url:"'+g+'"}';"object"==typeof resources&&(g=null);a=a.replace(/(<machine[^>]*\sid=)(['"]).*?\2/,"$1$2"+c+"$2"+(d?" parms='"+d+"'":"")+(g?' url="'+g+'"':""))}e||(a=a.replace(/(<xsl:variable name="APPCLASS">).*?(<\/xsl:variable>)/,"$1pc8080$2"));