diff --git a/modules/pc8080/lib/keyboard.js b/modules/pc8080/lib/keyboard.js index eea4bdbd3..8032dd91d 100644 --- a/modules/pc8080/lib/keyboard.js +++ b/modules/pc8080/lib/keyboard.js @@ -193,16 +193,25 @@ class Keyboard8080 extends Component { /* * TODO: Add some additional SOFTCODES configuration info that will tell us which soft * keys (eg, CTRL) should be treated as toggles, instead of hard-coding that knowledge below. + * + * Moreover, if a *real* CTRL or CAPS-LOCK key is pressed or released, it would be nice + * to update the state of these on-screen controls, too (ie, not just when the controls are + * clicked). */ - var fDown = true; - var fAutoRelease = (keyCode != Keys.KEYCODE.CTRL); - if (!fAutoRelease) { + var fDown = true, bit = 0; + if (keyCode == Keys.KEYCODE.CTRL) { + bit = Keyboard8080.STATE.CTRL; + } + else if (keyCode == Keys.KEYCODE.CAPS_LOCK) { + bit = Keyboard8080.STATE.CAPS_LOCK; + } + if (bit) { control.style.fontWeight = "normal"; - fDown = !(kbd.bitsState & Keyboard8080.STATE.CTRL); + fDown = !(kbd.bitsState & bit); if (fDown) control.style.fontWeight = "bold"; kbd.checkModifierKeys(keyCode, fDown); } - kbd.onSoftKeyDown(keyCode, fDown, fAutoRelease); + kbd.onSoftKeyDown(keyCode, fDown, !bit); if (kbd.cmp) kbd.cmp.updateFocus(); }; }(this, this.config.SOFTCODES[sBinding]); diff --git a/versions/pc8080/1.32.2/pc8080-dbg.js b/versions/pc8080/1.32.2/pc8080-dbg.js index d54eebb43..c7a3dd7ee 100644 --- a/versions/pc8080/1.32.2/pc8080-dbg.js +++ b/versions/pc8080/1.32.2/pc8080-dbg.js @@ -55,7 +55,7 @@ e[c]&255,d.ma[f++]=e[c]>>8&255,d.ma[f++]=e[c]>>16&255,d.ma[f++]=e[c]>>24&255;els function Ia(){return"http://"+(window?window.location.host:"www.pcjs.org")}function Va(){return window?window.navigator.userAgent:""}function Wa(){if(null==Xa){var a=!1;if(window)try{window.localStorage.setItem("PCjs.localStorage","PCjs.localStorage"),a="PCjs.localStorage"==window.localStorage.getItem("PCjs.localStorage"),window.localStorage.removeItem("PCjs.localStorage")}catch(b){a=!1}Xa=a}return Xa}function Ya(a){var b;if(window)try{b=window.localStorage.getItem(a)}catch(c){}return b} function bb(a,b){try{return window.localStorage.setItem(a,b),!0}catch(c){}return!1}function cb(a){if(window){var b=Va();return"iOS"==a&&!!b.match(/(iPod|iPhone|iPad)/)&&!!b.match(/AppleWebKit/)||"MSIE"==a&&!!b.match(/(MSIE|Trident)/)||0<=b.indexOf(a)}return!1}function db(a){if(!eb){var b,c={};if(window){b||(b=window.location.search.substr(1));for(var d,e=/\+/g,f=/([^&=]+)=?([^&]*)/g;d=f.exec(b);)c[decodeURIComponent(d[1].replace(e," "))]=decodeURIComponent(d[2].replace(e," "))}eb=c}return eb[a]} function fb(a,b,c){function d(){--a;0<=a&&(b()||(a=0));0=m.ab&&a<=m.wb?d.g&(De|Ee)||(d.g|=Ee,fe(d,20,!0),Fe(d)):a>=m.yc&&a<=m.z&&d.g&Ee&&(d.g&=~Ee,fe(d,20,!1),Fe(d));return!0}),c.onpaste=function(a){a:{if(d.C&&d.C.Ra&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a=a.clipboardData||window.clipboardData)){Ge(d.C,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.b.Ua&&void 0!==this.b.Ua[b])return this.P[e]=c,c.onclick= -function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=17!=b;if(!e){c.style.fontWeight="normal";if(d=!(a.g&He))c.style.fontWeight="bold";Ie(a,b,d)}fe(a,b,d,e);a.R&&a.R.Za()}}(this,this.b.Ua[b]),!0}}return!1};k.Ea=function(a,b,c,d){this.R=a;this.u=c;this.K=d;var e=this;this.L=Ic(this.u,function(){Je(e)});this.W=wb(a,"ChipSet");this.C=wb(a,"SerialPort");Ob(b,this,this.b.Bb);Sb(b,this,this.b.Cb)}; +function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=0;17==b?e=He:20==b&&(e=Ee);if(e){c.style.fontWeight="normal";if(d=!(a.g&e))c.style.fontWeight="bold";Ie(a,b,d)}fe(a,b,d,!e);a.R&&a.R.Za()}}(this,this.b.Ua[b]),!0}}return!1};k.Ea=function(a,b,c,d){this.R=a;this.u=c;this.K=d;var e=this;this.L=Ic(this.u,function(){Je(e)});this.W=wb(a,"ChipSet");this.C=wb(a,"SerialPort");Ob(b,this,this.b.Bb);Sb(b,this,this.b.Cb)}; k.va=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ua=function(a){return a?this.save():!0};k.reset=function(){this.j=[];this.g=0;this.b.INIT&&!this.restore(this.b.INIT)&&this.aa("reset error")};k.save=function(){var a=new Vc(this);switch(this.b.pa){case K.pa:a.set(0,[this.D,this.B,this.A,this.F,-1])}return a.data()}; k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.b.pa){case Ke.pa:return!0;case K.pa:return this.D=b[0],Fe(this,this.D&K.Ba.ec),this.B=b[1],this.A=b[2],this.F=b[3],this.w=b[4],!0}return!1};function Fe(a,b){var c;null!=b?a.I=b:b=a.I;for(var d in a.b.fb)if(c="led-"+d,c=a.P[c]){var e=a.b.fb[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+t(16711680,6):"#000000"}if(c=a.P["led-caps-lock"])c.style.backgroundColor=a.g&Ee?"#"+t(65280,6):"#000000"} function Ie(a,b,c,d){var e=0;switch(b){case 16:e=d?Le:Me;break;case 17:e=d?Ne:He;break;case 18:e=d?Oe:Pe;break;case 91:e=d?Qe:Re;break;case 20:e=Ee,c=!(a.g&e)}e&&(a.g=c?a.g|e:a.g&~e);return c} @@ -249,7 +249,7 @@ else{var dd=eg(a,Ag);if(dd)for(var ed=2;edue;){for(var ub=null,xi=256;65536>pc.J>>>0;){Cg.J=a.Gb(pc,2);if(null==pc.J||!xi--)break;for(var yi=a,gd=Cg, Dg=null,qc=gd.J,Eg=qc,ve=1;6>=ve&&qc;ve++){if(2=e?48:55),d=String.fromCharCode(e)+d;a>>=4}return(c?"0x":"")+d}function oa(a){var b=a,c=a.lastIndexOf("/");0<=c&&(b=a.substr(c+1));c=b.indexOf("&");0"']/g,function(a){return ta[a]})}function ua(a){return String.prototype.trim?a.trim():a.replace(/^\s+|\s+$/g,"")} -var ta={"&":"&","<":"<",">":">",'"':""","'":"'"},wa={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"}; +var ta={"&":"&","<":"<",">":">",'"':""","'":"'"},va={0:"NUL",1:"SOH",2:"STX",3:"ETX",4:"EOT",5:"ENQ",6:"ACK",7:"BEL",8:"BS",9:"TAB",10:"LF",11:"VT",12:"FF",13:"CR",14:"SO",15:"SI",16:"DLE",17:"XON",18:"DC2",19:"XOFF",20:"DC4",21:"NAK",22:"SYN",23:"ETB",24:"CAN",25:"EM",26:"SUB",27:"ESC",28:"FS",29:"GS",30:"RS",31:"US"}; function xa(){function a(a){return(10>a?"0":"")+a}var b=new Date;return b.getFullYear()+"-"+a(b.getMonth()+1)+"-"+a(b.getDate())+" "+a(b.getHours())+":"+a(b.getMinutes())+":"+a(b.getSeconds())} function ya(a,b,c,d){c=void 0===c?!1:c;var e=0,f=null,g=null;if("object"==typeof resources&&(f=resources[a]))return d&&d(a,f,e),[f,e];if(c&&"function"==typeof resources)return resources(a,function(b,c){d&&d(a,b,c)}),g;var h=window.XMLHttpRequest?new window.XMLHttpRequest:new window.ActiveXObject("Microsoft.XMLHTTP");c&&(h.onreadystatechange=function(){4===h.readyState&&(f=h.responseText,200==h.status||!h.status&&f.length&&"file:"==(window?window.location.protocol:"file:")||(e=h.status||-1),d&&d(a, f,e))});if(b&&"object"==typeof b){var m="",q;for(q in b)b.hasOwnProperty(q)&&(m&&(m+="&"),m+=q+"="+encodeURIComponent(b[q]));m=m.replace(/%20/g,"+");h.open("POST",a,c);h.setRequestHeader("Content-type","application/x-www-form-urlencoded");h.send(m)}else h.open("GET",a,c),"bytes"==b&&h.overrideMimeType("text/plain; charset=x-user-defined"),h.send();c||(f=h.responseText,200!=h.status&&(e=h.status||-1),d&&d(a,f,e),g=[f,e]);return g} @@ -137,9 +137,10 @@ q+=String.fromCharCode(B)}Fc(a,q);break;default:c=!1}c?pc.call(d):e&&(a.aa("\nCP function Hc(a){p.call(this,"Keyboard",a);(a=a.model)&&!Ic[a]&&fa("Unrecognized Keyboard8080 model: "+a);this.a=Ic[a]||{};this.reset();z(this)}l(Hc,p);k=Hc.prototype; k.S=function(a,b,c){var d=this,e=a+"-"+b;if(void 0===this.w[e]){if("led"==a&&this.a.La[b])return this.w[e]=c,!0;switch(b){case "kbd":case "screen":return Ea("iOS")?(c.onkeypress=function(a){var b=!1;if(a=d.a.Wa[a.keyCode||a.charCode]){a&128&&(a&=127,b=!0);var c;a:{for(c in d.a.Da)if(d.a.Da[c]==a){c=+c;break a}c=0}c&&(b?Jc(d,16,!0,!0):Jc(d,16,!1),Jc(d,c,!0,!0))}return!0},c.onkeydown=function(a){return Kc(d,a,!0)},c.onkeyup=function(a){return Kc(d,a,!1)}):(c.onkeydown=function(a){return Lc(d,a,!0)}, c.onkeyup=function(a){return Lc(d,a,!1)},c.onkeypress=function(a){a=a.keyCode||a.charCode;a>=n.Ia&&a<=n.$a?d.b&(Mc|Nc)||(d.b|=Nc,Jc(d,20,!0),Oc(d)):a>=n.Wb&&a<=n.z&&d.b&Nc&&(d.b&=~Nc,Jc(d,20,!1),Oc(d));return!0}),c.onpaste=function(a){a:{if(d.g&&d.g.Ba&&(a.stopPropagation&&a.stopPropagation(),a.preventDefault&&a.preventDefault(),a=a.clipboardData||window.clipboardData)){Pc(d.g,a.getData("Text"));a=!1;break a}a=!0}return a},!0;default:if(this.a.Fa&&void 0!==this.a.Fa[b])return this.w[e]=c,c.onclick= -function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=17!=b;if(!e){c.style.fontWeight="normal";if(d=!(a.b&Qc))c.style.fontWeight="bold";Rc(a,b,d)}Jc(a,b,d,e);a.D&&Jb(a.D)}}(this,this.a.Fa[b]),!0}}return!1};k.qa=function(a,b,c,d){this.D=a;this.m=c;this.J=d;var e=this;this.v=Kb(this.m,function(){Sc(e)});this.N=Ta(a,"ChipSet");this.g=Ta(a,"SerialPort");hb(b,this,this.a.fb);ib(b,this,this.a.gb)};k.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0}; -k.ba=function(a){return a?this.save():!0};k.reset=function(){this.c=[];this.b=0;this.a.INIT&&!this.restore(this.a.INIT)&&this.G("reset error")};k.save=function(){var a=new E(this);switch(this.a.Y){case W.Y:a.set(0,[this.l,this.j,this.h,this.o,-1])}return a.data()};k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.a.Y){case Tc.Y:return!0;case W.Y:return this.l=b[0],Oc(this,this.l&W.fa.Db),this.j=b[1],this.h=b[2],this.o=b[3],this.f=b[4],!0}return!1}; -function Oc(a,b){var c;null!=b?a.s=b:b=a.s;for(var d in a.a.La)if(c="led-"+d,c=a.w[c]){var e=a.a.La[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+A(16711680,6):"#000000"}if(c=a.w["led-caps-lock"])c.style.backgroundColor=a.b&Nc?"#"+A(65280,6):"#000000"}function Rc(a,b,c,d){var e=0;switch(b){case 16:e=d?Uc:Vc;break;case 17:e=d?Wc:Qc;break;case 18:e=d?Xc:Yc;break;case 91:e=d?$c:ad;break;case 20:e=Nc,c=!(a.b&e)}e&&(a.b=c?a.b|e:a.b&~e);return c} +function(a,b){return function(d){d.preventDefault&&d.preventDefault();d=!0;var e=0;17==b?e=Qc:20==b&&(e=Nc);if(e){c.style.fontWeight="normal";if(d=!(a.b&e))c.style.fontWeight="bold";Rc(a,b,d)}Jc(a,b,d,!e);a.D&&Jb(a.D)}}(this,this.a.Fa[b]),!0}}return!1};k.qa=function(a,b,c,d){this.D=a;this.m=c;this.J=d;var e=this;this.v=Kb(this.m,function(){Sc(e)});this.N=Ta(a,"ChipSet");this.g=Ta(a,"SerialPort");hb(b,this,this.a.fb);ib(b,this,this.a.gb)}; +k.ca=function(a,b){if(!b)if(!a)this.reset();else if(!this.restore(a))return!1;return!0};k.ba=function(a){return a?this.save():!0};k.reset=function(){this.c=[];this.b=0;this.a.INIT&&!this.restore(this.a.INIT)&&this.G("reset error")};k.save=function(){var a=new E(this);switch(this.a.Y){case W.Y:a.set(0,[this.l,this.j,this.h,this.o,-1])}return a.data()}; +k.restore=function(a){var b;if(a&&(b=a[0])&&b.length)switch(this.a.Y){case Tc.Y:return!0;case W.Y:return this.l=b[0],Oc(this,this.l&W.fa.Db),this.j=b[1],this.h=b[2],this.o=b[3],this.f=b[4],!0}return!1};function Oc(a,b){var c;null!=b?a.s=b:b=a.s;for(var d in a.a.La)if(c="led-"+d,c=a.w[c]){var e=a.a.La[d],f=!!(b&e);e&e-1&&(f=!(b&~e));c.style.backgroundColor=f?"#"+A(16711680,6):"#000000"}if(c=a.w["led-caps-lock"])c.style.backgroundColor=a.b&Nc?"#"+A(65280,6):"#000000"} +function Rc(a,b,c,d){var e=0;switch(b){case 16:e=d?Uc:Vc;break;case 17:e=d?Wc:Qc;break;case 18:e=d?Xc:Yc;break;case 91:e=d?$c:ad;break;case 20:e=Nc,c=!(a.b&e)}e&&(a.b=c?a.b|e:a.b&~e);return c} function Lc(a,b,c){var d=!0,e=b.keyCode,e=aa[e]||e;c=Rc(a,e,c,2==b.location);var f;a:if(e=a.a.rb[e]||e,a.a.Da[e])f=e;else{for(f in a.a.Fa)if(a.a.Fa[f]===e)break a;f=null}f&&!b.metaKey&&(d=!1,a.b&(bd|cd)&&(13==f?(f=118,d=!0):8==f&&(f=46,d=!0),d&&(a.b=c?a.b|cd:a.b&~cd)),d=Jc(a,f,c),(!(f>=n.Ia&&f<=n.$a)||a.b|dd)&&b.preventDefault&&b.preventDefault());return d} function Kc(a,b,c){var d=!0;if(c){b=b.keyCode;var e=a.a.Da[b];if(e){var f;a:{for(f in a.a.Wa)if(a.a.Wa[f]==e){f=+f;break a}f=0}f||(d=Jc(a,b,c,!0))}}return d} function Jc(a,b,c,d){var e;a:{for(e=0;ee?a.c.push({qb:b,ob:Date.now(),cb:d||!1}):(a.c[e].ob=Date.now(),a.c[e].cb=d||!1),d&&Sc(a);else if(0<=e){if(!a.c[e].cb&&(d=a.c[e].ob)&&Date.now()-d=a.va?8:16,f=8>(7=a.va?8:16,f=8>(7>4)*c)}return m}k.ca=function(a,b){return b||!a||this.restore(a)?!0:!1};k.ba=function(a){return!a||this.save()};k.save=function(){var a=new E(this);a.set(0,[]);return a.data()};k.restore=function(){return!0}; k.Ha=function(){var a=!1;if(this.a){if(this.a.Ha){a="100%";if(screen&&screen.width&&screen.height){var b=screen.width/screen.height,c=this.A/this.s;b>c&&(a=Math.round(c/b*100)+"%")}this.Ea?(this.o.style.width=a,this.o.style.width=a,this.o.style.display="block",this.o.style.margin="auto"):(this.a.style.width=a,this.a.style.height="auto");this.a.style.backgroundColor="black";this.a.Ha();a=!0}this.L&&this.L.focus()}return a}; function jd(a,b){!b&&a.a&&(a.Ea?a.o.style.width=a.o.style.height="":a.a.style.width=a.a.style.height="")}function ld(a,b){a.Ma=b;a.N=!1;if(void 0===a.g||a.g.length!=a.Ma)a.g=Array(a.Ma)}function wd(a,b,c,d,e){d=a.b?(b.height-c-1)*b.width+d:c+d*b.width;e&&a.P==nd&&(208<=c&&236>c?e=a.O+od:28<=c&&72>c&&(e=a.O+pd));a=a.I[e];d*=a.length;b.data[d]=a[0];b.data[d+1]=a[1];b.data[d+2]=a[2];b.data[d+3]=a[3]} function Pb(a,b){var c=!0;if(!b){a.ha&&(120==a.ha?a.Oa&1?(mc(a.m,2),c=!1):mc(a.m,1):mc(a.m,4));if(c&&a.N&&a.v){for(var d=a.u,e=a.v,f=!0,g=a.da>>>d.b;0>=1);;){var y=cb(a.u,w++);if((y&xd)==xd){var v=cb(a.u,w++),d=v&yd,c=(v&zd)<<8|cb(a.u,w),c=c+(v&Ad?Bd: -Cd);break}if(q>4)*y.K,da,va,Va,mb,Zc=y.M,Yb=y.K;F?(da=L*v.M,va=e*v.K,Va=v.M,mb=v.K):(da=L*v.wa,va=e*v.xa,Va=v.wa,mb=v.xa);y.M>v.M&&(da*=2,Va*=2);y.K>v.K&&(B==vd&&(U+=v.K),Yb=v.K);F?F.drawImage(y.canvas,Z,U,Zc,Yb,da,va,Va,mb):(da+=0,va+=0,v.c.drawImage(y.canvas,Z,U,Zc,Yb, -da,va,Va,mb))}h++}g++}e++}}a.N=!0;!b&&a.na&&1==h&&(a.g[m]=-1,h=0);a.na=!1;(h||b)&&a.ma&&a.c.drawImage(a.l,0,a.la,a.j,a.B-a.K,0,0,a.mb,a.jc)}else{e=a.da;f=e+a.v;m=h=g=0;b=a.j;q=0;c=a.B;B=d=0;w=a.ea;L=(1<>>v.b;v=y!=v.f?v.a[Z].ec(y,F):v.a[Z++].hb(y,F)|v.a[Z&v.o].hb(0,F+1)<<8;if(a.N&&v===a.g[g])h+=a.Na;else{a.g[g]=v;(F=B)&&(v=v>>8|(v&255)<<8);h>F&L,wd(a,a.Ga,h++,m,Z),F+=w;h>q&&(q=h);m=d&&(d=m+1)}e+= +Cd);break}if(q>4)*y.K,da,wa,Va,mb,Zc=y.M,Yb=y.K;F?(da=L*v.M,wa=e*v.K,Va=v.M,mb=v.K):(da=L*v.wa,wa=e*v.xa,Va=v.wa,mb=v.xa);y.M>v.M&&(da*=2,Va*=2);y.K>v.K&&(B==vd&&(U+=v.K),Yb=v.K);F?F.drawImage(y.canvas,Z,U,Zc,Yb,da,wa,Va,mb):(da+=0,wa+=0,v.c.drawImage(y.canvas,Z,U,Zc,Yb, +da,wa,Va,mb))}h++}g++}e++}}a.N=!0;!b&&a.na&&1==h&&(a.g[m]=-1,h=0);a.na=!1;(h||b)&&a.ma&&a.c.drawImage(a.l,0,a.la,a.j,a.B-a.K,0,0,a.mb,a.jc)}else{e=a.da;f=e+a.v;m=h=g=0;b=a.j;q=0;c=a.B;B=d=0;w=a.ea;L=(1<>>v.b;v=y!=v.f?v.a[Z].ec(y,F):v.a[Z++].hb(y,F)|v.a[Z&v.o].hb(0,F+1)<<8;if(a.N&&v===a.g[g])h+=a.Na;else{a.g[g]=v;(F=B)&&(v=v>>8|(v&255)<<8);h>F&L,wd(a,a.Ga,h++,m,Z),F+=w;h>q&&(q=h);m=d&&(d=m+1)}e+= 2;g++;if(h>=a.j&&(h=0,m++,m>a.B))break}a.N=!0;bMissing <canvas> support. Please try a newer web browser.";break}e.setAttribute("class","pcjs-canvas");e.setAttribute("width",d.screenWidth);e.setAttribute("height",d.screenHeight);e.style.backgroundColor=d.screenColor;e.style.height="auto";0<=(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||Fa("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");Ea("iOS")&&(f.setAttribute("autocapitalize","off"),f.setAttribute("autocorrect","off"),f.style.fontSize="16px");c.appendChild(f);var g=e.getContext("2d"),d=new gd(d,e,g,f,c);ka(d,c)}}); @@ -178,7 +179,7 @@ k.ac=function(a){if(!this.a){var b=Ab(this.D,"connection");if(b){var c=b.split(" k.ca=function(a,b){if(!b)if(this.ac(this.l),!a||!this.restore)this.reset();else if(!this.restore(a))return!1;return!0};k.ba=function(a){return a?this.save():!0};k.reset=function(){Id(this)};k.save=function(){var a=new E(this),b=0,c=[];c[b++]=this.o;c[b++]=this.A;c[b++]=this.C;c[b++]=this.T;c[b++]=this.h;c[b++]=this.j;c[b]=this.v;a.set(0,c);return a.data()};k.restore=function(a){return Id(this,a[0])}; function Id(a,b){var c=0;b||(b=Jd);a.o=b[c++];a.A=b[c++];a.C=b[c++];a.T=b[c++];a.h=b[c++];a.j=b[c++];a.v=b[c];return!0}function Kd(a,b){var c=a.v&b;b&15||(c>>=4);b=Ld[c];c=((a.h&Md)>>2)+6;a.h&Nd&&c++;c+=((a.h&Od)>>6)+1>>1;return 1E3/Math.round(b/c)}function Fd(a,b){return a.B||a.T&Pd?!1:(a.A=b,a.T|=Pd,mc(a.m,a.O),!0)} k.pb=function(a){null!=a&&(this.g="number"!=typeof a?a:this.g+String.fromCharCode(a));this.g&&(Fd(this,this.g.charCodeAt(0))&&(this.g=this.g.substr(1)),this.g&&this.m&&Lb(this.m,this.P,Kd(this,Qd)));return!0};k.Jd=function(a){this.T&=~Rd;a&64&&(this.T|=Rd)};function Pc(a,b){a.T=a.T|tc|Sd;b&&a.Ba&&a.Ba.call(a.a,b)}k.bd=function(){var a=this.A;this.T&=~Pd;return a};k.ad=function(){return this.T}; -k.pd=function(a,b){this.C=b;this.T&=~(tc|Sd);if(19==b)this.B=!0;else if(17==b)this.B=!1;else if(this.Ba&&this.Ba.call(this.a,b),this.b)if(8==b)this.b.value=this.b.value.slice(0,-1),0":String.fromCharCode(b);c=a.length;9==b?(b=this.L||8,c=b-this.f%b,this.L&&(a=" ".slice(0,c))):13==b&&(this.f=c=0,a="\n");this.F&&!this.f&&c&&(a=String.fromCharCode(this.F)+a);this.b.value+=a;this.b.scrollTop=this.b.scrollHeight; +k.pd=function(a,b){this.C=b;this.T&=~(tc|Sd);if(19==b)this.B=!0;else if(17==b)this.B=!1;else if(this.Ba&&this.Ba.call(this.a,b),this.b)if(8==b)this.b.value=this.b.value.slice(0,-1),0":String.fromCharCode(b);c=a.length;9==b?(b=this.L||8,c=b-this.f%b,this.L&&(a=" ".slice(0,c))):13==b&&(this.f=c=0,a="\n");this.F&&!this.f&&c&&(a=String.fromCharCode(this.F)+a);this.b.value+=a;this.b.scrollTop=this.b.scrollHeight; this.f+=c}else if(null!=this.c){if(10==b||1024<=this.c.length)this.aa(this.c),this.c="";10!=b&&(this.c+=String.fromCharCode(b))}this.m&&Lb(this.m,this.R,Kd(this,Td))};k.od=function(a,b){this.o?(this.s&&(b^this.j)&(Ud|Vd)&&(a=0,this.l?(a|=b&Ud?32:0,a|=b&Vd?320:0):(a|=b&Ud?16:0,a|=b&Vd?1048576:0),this.s.call(this.a,a)),this.j=b,this.j&Wd&&(this.o=!1)):(this.h=b,this.o=!0)};k.nd=function(a,b){this.v=b}; var Md=12,Nd=16,Od=192,Vd=2,Ud=32,Wd=64,tc=1,Pd=2,Sd=4,Rd=128,Qd=15,Td=240,Ld=[50,75,110,134.5,150,200,300,600,1200,1800,2E3,2400,3600,4800,9600,19200],Jd=[!1,0,0,133,142,39,238],Ed="buffer",Gd={0:Dd.prototype.bd,1:Dd.prototype.ad},Hd={0:Dd.prototype.pd,1:Dd.prototype.od,2:Dd.prototype.nd};Ia(function(){for(var a=x(document,"pc8080","serial"),b=0;b