From ff46c1d240d9e478786b312c392003f867d1ce42 Mon Sep 17 00:00:00 2001 From: Jeff Parsons Date: Fri, 19 Aug 2016 08:42:33 -0700 Subject: [PATCH] Updated receiveData() to always return true in both PCx86 and PC8080, since both machines are buffering all the incoming data anyway (since we still don't have any flow-control interfaces yet) --- docs/pcx86/examples/pcx86-dbg.js | 2 +- docs/pcx86/examples/pcx86.js | 2 +- modules/pc8080/lib/serialport.js | 2 ++ modules/pcx86/lib/serialport.js | 2 ++ versions/pc8080/1.24.0/pc8080-dbg.js | 3 ++- versions/pc8080/1.24.0/pc8080.js | 2 +- versions/pcx86/1.24.0/pcx86-dbg.js | 2 +- versions/pcx86/1.24.0/pcx86.js | 2 +- 8 files changed, 11 insertions(+), 6 deletions(-) diff --git a/docs/pcx86/examples/pcx86-dbg.js b/docs/pcx86/examples/pcx86-dbg.js index e0f5847c2..441fa7758 100644 --- a/docs/pcx86/examples/pcx86-dbg.js +++ b/docs/pcx86/examples/pcx86-dbg.js @@ -551,7 +551,7 @@ function vo(a){this.ya=a.adapter;switch(this.ya){case 1:this.ra=1016;this.ia=4;b m.Pb=function(a,b,c){var d=this;switch(b){case wo:return this.qa[b]=this.L=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64");if(2==d.length){var e=na(d[0]);if(e!=this.zd)break a;d=na(d[1]);if(this.pa=jb(d)){var f=this.pa.exports;if(f){this.wa=f.receiveData;this.status(this.fe+"."+e+" connected to "+d);break a}}}this.Na("Unable to establish connection: "+c)}}if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1}return!0}; m.hc=function(a){return a?this.save():!0};m.reset=function(){zo(this)};m.save=function(){var a=new kf(this),b=0,c=[];c[b++]=this.ua;c[b++]=this.Da;c[b++]=this.fa;c[b++]=this.ka;c[b++]=this.U;c[b++]=this.B;c[b++]=this.C;c[b++]=this.A;c[b++]=this.Ca;c[b]=this.aa;N(a,0,c);return a.data()};m.restore=function(a){return zo(this,a[0])}; -function zo(a,b){var c=0;void 0===b&&(b=[0,0,384,0,1,0,0,96,48,[]]);a.ua=b[c++];a.Da=b[c++];a.fa=b[c++];a.ka=b[c++];a.U=b[c++];a.B=b[c++];a.C=b[c++];a.A=b[c++];a.Ca=b[c++];a.aa=b[c];return!0}m.eg=function(a){if("number"==typeof a)this.aa.push(a);else if("string"==typeof a)for(var b=0;b>8:this.ka;x(this,a,null,b,this.B&128?"DLM":"IER",c);return c};m.Dl=function(a,b){var c=this.U;x(this,a,null,b,"IIR",c);return c}; m.El=function(a,b){var c=this.B;x(this,a,null,b,"LCR",c);return c};m.Gl=function(a,b){var c=this.C;x(this,a,null,b,"MCR",c);return c};m.Fl=function(a,b){var c=this.A;x(this,a,null,b,"LSR",c);return c};m.Ll=function(a,b){var c=this.Ca;x(this,a,null,b,"MSR",c);return c}; m.nn=function(a,b,c){x(this,a,b,c,this.B&128?"DLL":"THR");if(this.B&128)this.fa=this.fa&-256|b;else{this.Da=b;this.A&=-97;a=!1;y(this,"transmitByte("+t(b)+")");this.wa&&this.wa.call(this.pa,b)&&(a=!0);if(this.L)13==b?this.ea=0:8==b?(this.L.value=this.L.value.slice(0,-1),0":String.fromCharCode(b),c=a.length,32>b&&1==c&&(c=0),9==b&&(b=this.Ga||8,c=b-this.ea%b,this.Ga&&(a=ma("",c))),this.Fa&&!this.ea&&c&&(a=String.fromCharCode(this.Fa)+a),this.L.value+=a,this.L.scrollTop= diff --git a/docs/pcx86/examples/pcx86.js b/docs/pcx86/examples/pcx86.js index 7db8898f9..56b08a6f5 100644 --- a/docs/pcx86/examples/pcx86.js +++ b/docs/pcx86/examples/pcx86.js @@ -514,7 +514,7 @@ function Ql(a){this.ma=a.adapter;switch(this.ma){case 1:this.ea=1016;this.W=4;br l.zb=function(a,b,c){var d=this;switch(b){case Rl:return this.la[b]=this.D=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64");if(2==d.length){var e=ka(d[0]);if(e!=this.Rd)break a;d=ka(d[1]);if(this.Z=Xa(d)){var f=this.Z.exports;if(f){this.ka=f.receiveData;this.status(this.Fe+"."+e+" connected to "+d);break a}}}this.Ba("Unable to establish connection: "+c)}}if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1}return!0}; l.Ub=function(a){return a?this.save():!0};l.reset=function(){Ul(this)};l.save=function(){var a=new ee(this),b=0,c=[];c[b++]=this.ha;c[b++]=this.pa;c[b++]=this.P;c[b++]=this.Y;c[b++]=this.G;c[b++]=this.L;c[b++]=this.C;c[b++]=this.B;c[b++]=this.oa;c[b]=this.I;C(a,0,c);return a.data()};l.restore=function(a){return Ul(this,a[0])}; -function Ul(a,b){var c=0;void 0===b&&(b=[0,0,384,0,1,0,0,96,48,[]]);a.ha=b[c++];a.pa=b[c++];a.P=b[c++];a.Y=b[c++];a.G=b[c++];a.L=b[c++];a.C=b[c++];a.B=b[c++];a.oa=b[c++];a.I=b[c];return!0}l.jf=function(a){if("number"==typeof a)this.I.push(a);else if("string"==typeof a)for(var b=0;b>8:this.Y};l.uk=function(){return this.G};l.vk=function(){return this.L};l.xk=function(){return this.C};l.wk=function(){return this.B};l.Ck=function(){return this.oa}; l.Wl=function(a,b){if(this.L&128)this.P=this.P&-256|b;else{this.pa=b;this.B&=-97;var c=!1;this.ka&&this.ka.call(this.Z,b)&&(c=!0);if(this.D){if(13==b)this.R=0;else if(8==b)this.D.value=this.D.value.slice(0,-1),0":String.fromCharCode(b),d=c.length;32>b&&1==d&&(d=0);9==b&&(d=this.ra||8,d=d-this.R%d,this.ra&&(c=" ".slice(0,d)));this.qa&&!this.R&&d&&(c=String.fromCharCode(this.qa)+c);this.D.value+=c;this.D.scrollTop= this.D.scrollHeight;this.R+=d}c=!0}else if(null!=this.H){if(10==b||1024<=this.H.length)this.rc(this.H),this.H="";10!=b&&(this.H+=String.fromCharCode(b));c=!0}c&&(this.B|=96)}};l.Jl=function(a,b){this.L&128?this.P=this.P&255|b<<8:this.Y=b};l.Kl=function(a,b){this.L=b};l.Ll=function(a,b){var c=this.C;this.C=b;if(this.K&&(c^b)&3){var c=this.K,d=this.C,e=3==(d&3);if(e){if(!c.cc){var f=!1;c.C&2||(c.reset(),f=!0);c.C&1||(f=!0);f&&c.G.jf([77,77]);Wl(c);c.cc=e}}else c.cc&&(Xl(c),c.cc=e);c.C=d}}; diff --git a/modules/pc8080/lib/serialport.js b/modules/pc8080/lib/serialport.js index 2a986fc99..82801880e 100644 --- a/modules/pc8080/lib/serialport.js +++ b/modules/pc8080/lib/serialport.js @@ -623,6 +623,7 @@ SerialPort8080.prototype.receiveByte = function(b) * * @this {SerialPort8080} * @param {number|string|undefined} [data] + * @return {boolean} true if received, false if not */ SerialPort8080.prototype.receiveData = function(data) { @@ -641,6 +642,7 @@ SerialPort8080.prototype.receiveData = function(data) this.cpu.setTimer(this.timerReceiveNext, this.getBaudTimeout(SerialPort8080.UART8251.BAUDRATES.RECV_RATE)); } } + return true; // for now, return true regardless, since we're buffering everything anyway }; /** diff --git a/modules/pcx86/lib/serialport.js b/modules/pcx86/lib/serialport.js index 7bd147b70..9186ae5a5 100644 --- a/modules/pcx86/lib/serialport.js +++ b/modules/pcx86/lib/serialport.js @@ -666,6 +666,7 @@ SerialPort.prototype.saveRegisters = function() * * @this {SerialPort} * @param {number|string|Array} data + * @return {boolean} true if received, false if not */ SerialPort.prototype.receiveData = function(data) { @@ -681,6 +682,7 @@ SerialPort.prototype.receiveData = function(data) this.abReceive = this.abReceive.concat(data); } this.advanceRBR(); + return true; // for now, return true regardless, since we're buffering everything anyway }; /** diff --git a/versions/pc8080/1.24.0/pc8080-dbg.js b/versions/pc8080/1.24.0/pc8080-dbg.js index 7cbcb9d13..97c605163 100644 --- a/versions/pc8080/1.24.0/pc8080-dbg.js +++ b/versions/pc8080/1.24.0/pc8080-dbg.js @@ -139,7 +139,8 @@ m.la=function(a,b,c,d){var e=this;switch(b){case ne:return this.N[b]=this.B=c,c. return!0},!0}return!1};m.Pa=function(a,b,c,d){this.A=a;this.w=b;this.b=c;this.I=d;var e=this;this.ta=Jc(this.b,function(){e.ec()});this.ua=Jc(this.b,function(){e.u|=5});this.J=ub(a,"ChipSet");Gb(b,this,re,this.ha);Sb(b,this,se,this.ha);E(this)}; m.Da=function(a,b){if(!b){a:{var c=mc(this.A,"connection");if(c){var d=c.split("->");if(2==d.length){var e=ma(d[0]);if(e!=this.Ya)break a;d=ma(d[1]);if(this.M=fb(d)){var f=this.M.exports;if(f){this.ca=f.receiveData;this.status(this.Lb+"."+e+" connected to "+d);break a}}}this.ia("Unable to establish connection: "+c)}}if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1}return!0};m.Ga=function(a){return a?this.save():!0};m.reset=function(){te(this)}; m.save=function(){var a=new H(this),b=0,c=[];c[b++]=this.La;c[b++]=this.S;c[b++]=this.da;c[b++]=this.u;c[b++]=this.L;c[b++]=this.R;c[b]=this.O;I(a,0,c);return a.data()};m.restore=function(a){return te(this,a[0])};function te(a,b){var c=0;void 0===b&&(b=pe);a.La=b[c++];a.S=b[c++];a.da=b[c++];a.u=b[c++];a.L=b[c++];a.R=b[c++];a.O=b[c];return!0}function ue(a,b){var c=a.O&b;b&15||(c>>=4);var c=oe[c],d=((a.L&12)>>2)+6;a.L&16&&d++;d+=((a.L&192)>>6)+1>>1;return 1E3/Math.round(c/d)} -function qe(a,b){jb(a,"receiveByte("+da(b)+"), status="+da(a.u));return a.aa||a.u&2?!1:(a.S=b,a.u|=2,Ed(a.b,a.qa),!0)}m.ec=function(a){null!=a&&(this.K="number"!=typeof a?a:this.K+String.fromCharCode(a));this.K&&(qe(this,this.K.charCodeAt(0))&&(this.K=this.K.substr(1)),this.K&&this.b&&Kc(this.b,this.ta,ue(this,15)))};m.Zb=function(){return!!(this.u&1)};m.xd=function(a,b){var c=this.S;D(this,a,null,b,"DATA",c);this.u&=-3;return c};m.wd=function(a,b){var c=this.u;D(this,a,null,b,"STATUS",c);return c}; +function qe(a,b){jb(a,"receiveByte("+da(b)+"), status="+da(a.u));return a.aa||a.u&2?!1:(a.S=b,a.u|=2,Ed(a.b,a.qa),!0)}m.ec=function(a){null!=a&&(this.K="number"!=typeof a?a:this.K+String.fromCharCode(a));this.K&&(qe(this,this.K.charCodeAt(0))&&(this.K=this.K.substr(1)),this.K&&this.b&&Kc(this.b,this.ta,ue(this,15)));return!0};m.Zb=function(){return!!(this.u&1)};m.xd=function(a,b){var c=this.S;D(this,a,null,b,"DATA",c);this.u&=-3;return c}; +m.wd=function(a,b){var c=this.u;D(this,a,null,b,"STATUS",c);return c}; m.Id=function(a,b,c){D(this,a,b,c,"DATA");this.da=b;this.u&=-6;jb(this,"transmitByte("+da(b)+")");if(19==b)this.aa=!0;else if(17==b)this.aa=!1;else if(this.ca&&this.ca.call(this.M,b),this.B)8==b?(this.B.value=this.B.value.slice(0,-1),0":String.fromCharCode(b),c=a.length,9==b?(b=this.na||8,c=b-this.H%b,this.na&&(a=la("",c))):13==b&&(this.H=c=0,a="\n"),this.fa&&!this.H&&c&&(a=String.fromCharCode(this.fa)+a),this.B.value+=a,this.B.scrollTop=this.B.scrollHeight, this.H+=c);else if(null!=this.F){if(10==b||1024<=this.F.length)this.g(this.F),this.F="";10!=b&&(this.F+=String.fromCharCode(b))}this.b&&Kc(this.b,this.ua,ue(this,240))};m.Hd=function(a,b,c){D(this,a,b,c,"CONTROL");this.La?(this.R=b,this.R&64&&(this.La=!1)):(this.L=b,this.La=!0)};m.Gd=function(a,b,c){D(this,a,b,c,"BAUDRATES");this.O=b};var re={0:me.prototype.xd,1:me.prototype.wd},se={0:me.prototype.Id,1:me.prototype.Hd,2:me.prototype.Gd}; Ma(function(){for(var a=B(document,"pc8080","serial"),b=0;b");if(2==d.length){var e=ha(d[0]);if(e!=this.Qa)break a;d=ha(d[1]);if(this.s=Na(d)){var f=this.s.exports;if(f){this.C=f.receiveData;this.status(this.Ra+"."+e+" connected to "+d);break a}}}this.L("Unable to establish connection: "+c)}}if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1}return!0};k.ga=function(a){return a?this.save():!0};k.reset=function(){Tc(this)}; k.save=function(){var a=new G(this),b=0,c=[];c[b++]=this.fa;c[b++]=this.w;c[b++]=this.G;c[b++]=this.b;c[b++]=this.o;c[b++]=this.v;c[b]=this.u;I(a,0,c);return a.data()};k.restore=function(a){return Tc(this,a[0])};function Tc(a,b){var c=0;void 0===b&&(b=Pc);a.fa=b[c++];a.w=b[c++];a.G=b[c++];a.b=b[c++];a.o=b[c++];a.v=b[c++];a.u=b[c];return!0}function Uc(a,b){var c=a.u&b;b&15||(c>>=4);var c=Oc[c],d=((a.o&12)>>2)+6;a.o&16&&d++;d+=((a.o&192)>>6)+1>>1;return 1E3/Math.round(c/d)} -function Qc(a,b){return a.A||a.b&2?!1:(a.w=b,a.b|=2,ec(a.a,a.T),!0)}k.tb=function(a){null!=a&&(this.i="number"!=typeof a?a:this.i+String.fromCharCode(a));this.i&&(Qc(this,this.i.charCodeAt(0))&&(this.i=this.i.substr(1)),this.i&&this.a&&Kb(this.a,this.U,Uc(this,15)))};k.nb=function(){return!!(this.b&1)};k.Ic=function(){var a=this.w;this.b&=-3;return a};k.Hc=function(){return this.b}; +function Qc(a,b){return a.A||a.b&2?!1:(a.w=b,a.b|=2,ec(a.a,a.T),!0)}k.tb=function(a){null!=a&&(this.i="number"!=typeof a?a:this.i+String.fromCharCode(a));this.i&&(Qc(this,this.i.charCodeAt(0))&&(this.i=this.i.substr(1)),this.i&&this.a&&Kb(this.a,this.U,Uc(this,15)));return!0};k.nb=function(){return!!(this.b&1)};k.Ic=function(){var a=this.w;this.b&=-3;return a};k.Hc=function(){return this.b}; k.Yc=function(a,b){this.G=b;this.b&=-6;if(19==b)this.A=!0;else if(17==b)this.A=!1;else if(this.C&&this.C.call(this.s,b),this.c)if(8==b)this.c.value=this.c.value.slice(0,-1),0":String.fromCharCode(b);var d=c.length;9==b?(d=this.N||8,d=d-this.h%d,this.N&&(c=" ".slice(0,d))):13==b&&(this.h=d=0,c="\n");this.H&&!this.h&&d&&(c=String.fromCharCode(this.H)+c);this.c.value+=c;this.c.scrollTop=this.c.scrollHeight;this.h+= d}else if(null!=this.f){if(10==b||1024<=this.f.length)this.ba(this.f),this.f="";10!=b&&(this.f+=String.fromCharCode(b))}this.a&&Kb(this.a,this.W,Uc(this,240))};k.Xc=function(a,b){this.fa?(this.v=b,this.v&64&&(this.fa=!1)):(this.o=b,this.fa=!0)};k.Wc=function(a,b){this.u=b};var Rc={0:Mc.prototype.Ic,1:Mc.prototype.Hc},Sc={0:Mc.prototype.Yc,1:Mc.prototype.Xc,2:Mc.prototype.Wc};ya(function(){for(var a=y(document,"pc8080","serial"),b=0;b=b)a.preventDefault&&a.preventDefault(),64");if(2==d.length){var e=na(d[0]);if(e!=this.zd)break a;d=na(d[1]);if(this.pa=jb(d)){var f=this.pa.exports;if(f){this.wa=f.receiveData;this.status(this.fe+"."+e+" connected to "+d);break a}}}this.Na("Unable to establish connection: "+c)}}if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1}return!0}; m.hc=function(a){return a?this.save():!0};m.reset=function(){zo(this)};m.save=function(){var a=new kf(this),b=0,c=[];c[b++]=this.ua;c[b++]=this.Da;c[b++]=this.fa;c[b++]=this.ka;c[b++]=this.U;c[b++]=this.B;c[b++]=this.C;c[b++]=this.A;c[b++]=this.Ca;c[b]=this.aa;N(a,0,c);return a.data()};m.restore=function(a){return zo(this,a[0])}; -function zo(a,b){var c=0;void 0===b&&(b=[0,0,384,0,1,0,0,96,48,[]]);a.ua=b[c++];a.Da=b[c++];a.fa=b[c++];a.ka=b[c++];a.U=b[c++];a.B=b[c++];a.C=b[c++];a.A=b[c++];a.Ca=b[c++];a.aa=b[c];return!0}m.eg=function(a){if("number"==typeof a)this.aa.push(a);else if("string"==typeof a)for(var b=0;b>8:this.ka;x(this,a,null,b,this.B&128?"DLM":"IER",c);return c};m.Dl=function(a,b){var c=this.U;x(this,a,null,b,"IIR",c);return c}; m.El=function(a,b){var c=this.B;x(this,a,null,b,"LCR",c);return c};m.Gl=function(a,b){var c=this.C;x(this,a,null,b,"MCR",c);return c};m.Fl=function(a,b){var c=this.A;x(this,a,null,b,"LSR",c);return c};m.Ll=function(a,b){var c=this.Ca;x(this,a,null,b,"MSR",c);return c}; m.nn=function(a,b,c){x(this,a,b,c,this.B&128?"DLL":"THR");if(this.B&128)this.fa=this.fa&-256|b;else{this.Da=b;this.A&=-97;a=!1;y(this,"transmitByte("+t(b)+")");this.wa&&this.wa.call(this.pa,b)&&(a=!0);if(this.L)13==b?this.ea=0:8==b?(this.L.value=this.L.value.slice(0,-1),0":String.fromCharCode(b),c=a.length,32>b&&1==c&&(c=0),9==b&&(b=this.Ga||8,c=b-this.ea%b,this.Ga&&(a=ma("",c))),this.Fa&&!this.ea&&c&&(a=String.fromCharCode(this.Fa)+a),this.L.value+=a,this.L.scrollTop= diff --git a/versions/pcx86/1.24.0/pcx86.js b/versions/pcx86/1.24.0/pcx86.js index 7db8898f9..56b08a6f5 100644 --- a/versions/pcx86/1.24.0/pcx86.js +++ b/versions/pcx86/1.24.0/pcx86.js @@ -514,7 +514,7 @@ function Ql(a){this.ma=a.adapter;switch(this.ma){case 1:this.ea=1016;this.W=4;br l.zb=function(a,b,c){var d=this;switch(b){case Rl:return this.la[b]=this.D=c,c.onkeydown=function(a){a=a||window.event;var b=a.keyCode;if(8===b||a.ctrlKey&&65<=b&&90>=b)a.preventDefault&&a.preventDefault(),64");if(2==d.length){var e=ka(d[0]);if(e!=this.Rd)break a;d=ka(d[1]);if(this.Z=Xa(d)){var f=this.Z.exports;if(f){this.ka=f.receiveData;this.status(this.Fe+"."+e+" connected to "+d);break a}}}this.Ba("Unable to establish connection: "+c)}}if(!a||!this.restore)this.reset();else if(!this.restore(a))return!1}return!0}; l.Ub=function(a){return a?this.save():!0};l.reset=function(){Ul(this)};l.save=function(){var a=new ee(this),b=0,c=[];c[b++]=this.ha;c[b++]=this.pa;c[b++]=this.P;c[b++]=this.Y;c[b++]=this.G;c[b++]=this.L;c[b++]=this.C;c[b++]=this.B;c[b++]=this.oa;c[b]=this.I;C(a,0,c);return a.data()};l.restore=function(a){return Ul(this,a[0])}; -function Ul(a,b){var c=0;void 0===b&&(b=[0,0,384,0,1,0,0,96,48,[]]);a.ha=b[c++];a.pa=b[c++];a.P=b[c++];a.Y=b[c++];a.G=b[c++];a.L=b[c++];a.C=b[c++];a.B=b[c++];a.oa=b[c++];a.I=b[c];return!0}l.jf=function(a){if("number"==typeof a)this.I.push(a);else if("string"==typeof a)for(var b=0;b>8:this.Y};l.uk=function(){return this.G};l.vk=function(){return this.L};l.xk=function(){return this.C};l.wk=function(){return this.B};l.Ck=function(){return this.oa}; l.Wl=function(a,b){if(this.L&128)this.P=this.P&-256|b;else{this.pa=b;this.B&=-97;var c=!1;this.ka&&this.ka.call(this.Z,b)&&(c=!0);if(this.D){if(13==b)this.R=0;else if(8==b)this.D.value=this.D.value.slice(0,-1),0":String.fromCharCode(b),d=c.length;32>b&&1==d&&(d=0);9==b&&(d=this.ra||8,d=d-this.R%d,this.ra&&(c=" ".slice(0,d)));this.qa&&!this.R&&d&&(c=String.fromCharCode(this.qa)+c);this.D.value+=c;this.D.scrollTop= this.D.scrollHeight;this.R+=d}c=!0}else if(null!=this.H){if(10==b||1024<=this.H.length)this.rc(this.H),this.H="";10!=b&&(this.H+=String.fromCharCode(b));c=!0}c&&(this.B|=96)}};l.Jl=function(a,b){this.L&128?this.P=this.P&255|b<<8:this.Y=b};l.Kl=function(a,b){this.L=b};l.Ll=function(a,b){var c=this.C;this.C=b;if(this.K&&(c^b)&3){var c=this.K,d=this.C,e=3==(d&3);if(e){if(!c.cc){var f=!1;c.C&2||(c.reset(),f=!0);c.C&1||(f=!0);f&&c.G.jf([77,77]);Wl(c);c.cc=e}}else c.cc&&(Xl(c),c.cc=e);c.C=d}};