Another PDP-11 EKBEE1 diagnostic failure bites the dust
This commit is contained in:
parent
7088a185fd
commit
60970617ce
3 changed files with 15 additions and 3 deletions
|
|
@ -1317,7 +1317,19 @@ CPUStatePDP11.prototype.trap = function(vector, flag, reason)
|
|||
reason = PDP11.REASON.RED;
|
||||
}
|
||||
|
||||
this.lastOp = vector;
|
||||
/*
|
||||
* NOTE: Pre-setting the auto-dec values for MMR1 to 0xF6F6 is a work-around for an "EKBEE1"
|
||||
* diagnostic (PC 056710), which tests what happens when a misaligned read triggers a BUS trap,
|
||||
* and that trap then triggers an MMU trap during the first pushWord() below.
|
||||
*
|
||||
* One would think it would be fine to zero those bits by setting lastOp to vector alone,
|
||||
* and then letting each of the pushWord() calls below shift their own 0xF6 auto-dec value into
|
||||
* lastOp. When the first pushWord() triggers an MMU trap, we obviously won't get to the second
|
||||
* pushWord(), yet the diagnostic expects TWO auto-decs to be recorded. I'm puzzled why the
|
||||
* hardware apparently indicates TWO auto-decs, if SP wasn't actually decremented twice, but who
|
||||
* am I to judge.
|
||||
*/
|
||||
this.lastOp = vector | 0xf6f60000;
|
||||
|
||||
/*
|
||||
* Read from kernel D space
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ k.vc=function(){return 0};k.save=function(){var a=new O(this);a.set(0,[]);a.set(
|
|||
function Ld(a){return a.U&65536?1:0}function Md(a){return a.V&32768?2:0}function Nd(a){return a.$&65535?0:4}function Od(a){return a.Z&32768?8:0}function Pd(a){var b=a.u[7];a.pa=b;var c=a.sa(b);a.u[7]=b+2&65535;return c}function Qd(a,b){var c=a.u[7];a.u[7]=c+b&65535;return c}function Q(a,b){a.u[7]=b&65535}function Tc(a,b){return{ge:a,Bb:b,next:null}}function Rd(a,b){var c=a.O;if(c==b)a.O=b.next;else for(;c;){a=c.next;if(a==b){c.next=a.next;break}c=a}}
|
||||
function Jc(a,b){if(b!=a.O){var c=a.O;if(!c||c.Bb<=b.Bb)b.next=c,a.O=b;else{do{var d=c.next;if(!d||d.Bb<=b.Bb){b.next=d;c.next=b;break}c=d}while(c)}}a.J|=1}function me(a){return a.J&64?(a.wa(168,64,-5),!0):a.J&32?(a.wa(4,32,-4),!0):a.J&16?(a.wa(12,16,-6),!0):!1}function bd(a){return a.N=a.N&63728|Od(a)|Nd(a)|Md(a)|Ld(a)}
|
||||
function cd(a,b){a.Z=b<<12;a.$=~b&4;a.V=b<<14;a.U=b<<16;if((b^a.N)&2048)for(var c=a.Za.length;0<=--c;){var d=a.u[c];a.u[c]=a.Za[c];a.Za[c]=d}a.B=b>>14&3;c=a.N>>14&3;a.B!=c&&(a.La[c]=a.u[6],a.u[6]=a.La[a.B]);a.N=b;a.J|=2}function ad(a,b){if(b&=65024){var c=b>>9;do b+=34;while(c>>=1)}a.Rb=b;a.J|=2}function R(a,b){a.J&128||(a.Z=a.$=b,a.V=0)}function ne(a,b,c){a.J&128||(a.Z=a.$=a.U=b,a.V=c||0)}function oe(a,b,c,d){a.J&128||(a.Z=a.$=a.U=b,a.V=(c^b)&(d^b))}
|
||||
function pe(a,b){a.J&128||(a.Z=a.$=a.U=b,a.V=a.Z^a.U>>1)}function qe(a,b,c,d){a.J&128||(a.Z=a.$=a.U=b,a.V=(c^d)&(d^b))}k.wa=function(a,b,c){if(!this.K){0>this.Ba?this.Ba=bd(this):this.B||(a=4,this.ua|=4,this.u[6]=4,c=-3);this.pa=a;this.B=0;var d=this.sa(a|this.S),e=this.sa(a+2&65535|this.S);cd(this,e&-12289|this.Ba>>2&12288);re(this,this.Ba);re(this,this.u[7]);Q(this,d);this.J&=~(b|18);this.J|=9;this.Ba=-1;this.md=a;this.ld=c;if(-3<=c)throw a;}};
|
||||
function pe(a,b){a.J&128||(a.Z=a.$=a.U=b,a.V=a.Z^a.U>>1)}function qe(a,b,c,d){a.J&128||(a.Z=a.$=a.U=b,a.V=(c^d)&(d^b))}k.wa=function(a,b,c){if(!this.K){0>this.Ba?this.Ba=bd(this):this.B||(a=4,this.ua|=4,this.u[6]=4,c=-3);this.pa=a|4143316992;this.B=0;var d=this.sa(a|this.S),e=this.sa(a+2&65535|this.S);cd(this,e&-12289|this.Ba>>2&12288);re(this,this.Ba);re(this,this.u[7]);Q(this,d);this.J&=~(b|18);this.J|=9;this.Ba=-1;this.md=a;this.ld=c;if(-3<=c)throw a;}};
|
||||
function se(a){var b=te(a),c=te(a)&-1793;a.N&49152&&(c=c&-225|a.N&63712);Q(a,b);cd(a,c);a.J&=-17}function Ec(a,b){var c=b>>13&31;31>c&&(b=a.Ta&32?a.Sb[c]+(b&8190)&4194302:b&-3932161);return b}
|
||||
function ue(a,b,c){var d,e,f;if(!(c&a.M))return f=b&65535,57344<=f&&(f|=a.yc),f;d=b>>13;a.Ta&a.$c[a.B]||(d&=7);e=a.P[a.B][d];f=(a.ha[a.B][d]<<6)+(b&8191)&a.Ea;if(a.K)return f;var g=0;switch(e&7){case 1:g=4096;case 2:e|=128;c&4&&(g=8192);break;case 4:g=4096;case 5:c&4&&(g=4096);case 6:e|=c&4?192:128;break;default:g=32768}32512!=(e&32520)&&(e&8?e&32512&&(b&8128)<(e>>2&8128)&&(g|=16384):(b&8128)>(e>>2&8128)&&(g|=16384));a.P[a.B][d]=e;if(f!=(4194170&a.Ea)||a.B)a.bb=a.B,a.mb=d;g&&(g&57344&&(0<=a.Ba&&(g|=
|
||||
128),a.za&57344||(g|=a.za&4096|a.bb<<5|a.mb<<1,Xc(a,a.za&-61695|g&61694)),a.wa(168,64,-1)),a.za&61440||!(f<(4191360&a.Ea)||f>(4194239&a.Ea))||(a.za|=4096,a.za&512&&(a.J|=64)));return f}function ve(a,b){return a.v.Yb(b)}function te(a){var b=a.sa(a.u[6]|a.S);a.u[6]=a.u[6]+2&65535;return b}function re(a,b){var c=a.u[6]-2&65535;a.u[6]=c;a.pa=a.pa&65535|(a.pa&-65536)<<8|16121856;we(a,0,c);a.Ub(c,b)}
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ function Xb(a,b){b&=-3073;if(a.W!=b){b&57344&&!(a.W&57344)&&(a.Db=a.A>>16&65535,
|
|||
h.restore=function(a){var b=a[1];this.va=b[1];xc(this,b[3]);a:{b=this.h;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.D){for(var f=0,g=Array(b.D),k=0;k<e.length-1;)for(var l=e[k++],n=e[k++];l--;)g[f++]=n;e=g}f=b.h[d];if(!f||!f.restore(e)){t("Unable to restore memory block "+d);b=!1;break a}}b=!0}return b};function P(a){return a.m&65536?1:0}function Fc(a){return a.s&32768?8:0}function Gc(a){var b=a.f[7];a.A=b;var c=a.V(b);a.f[7]=b+2&65535;return c}
|
||||
function Hc(a,b){var c=a.f[7];a.f[7]=c+b&65535;return c}function Q(a,b){a.f[7]=b&65535}function Vb(a,b){return{ud:a,La:b,next:null}}function Ic(a,b){var c=a.O;if(c==b)a.O=b.next;else for(;c;){a=c.next;if(a==b){c.next=a.next;break}c=a}}function Tb(a,b){if(b!=a.O){var c=a.O;if(!c||c.La<=b.La)b.next=c,a.O=b;else{do{var d=c.next;if(!d||d.La<=b.La){b.next=d;c.next=b;break}c=d}while(c)}}a.u|=1}function Jc(a){return a.u&64?(K(a,168,64,-5),!0):a.u&32?(K(a,4,32,-4),!0):a.u&16?(K(a,12,16,-6),!0):!1}
|
||||
function Zb(a){return a.C=a.C&63728|Fc(a)|(a.i&65535?0:4)|(a.g&32768?2:0)|P(a)}function $b(a,b){a.s=b<<12;a.i=~b&4;a.g=b<<14;a.m=b<<16;if((b^a.C)&2048)for(var c=a.Fa.length;0<=--c;){var d=a.f[c];a.f[c]=a.Fa[c];a.Fa[c]=d}a.v=b>>14&3;c=a.C>>14&3;a.v!=c&&(a.qa[c]=a.f[6],a.f[6]=a.qa[a.v]);a.C=b;a.u|=2}function R(a,b){a.u&128||(a.s=a.i=b,a.g=0)}function Kc(a,b,c){a.u&128||(a.s=a.i=a.m=b,a.g=c||0)}function Lc(a,b,c,d){a.u&128||(a.s=a.i=a.m=b,a.g=(c^b)&(d^b))}
|
||||
function Mc(a,b){a.u&128||(a.s=a.i=a.m=b,a.g=a.s^a.m>>1)}function Nc(a,b,c,d){a.u&128||(a.s=a.i=a.m=b,a.g=(c^d)&(d^b))}function K(a,b,c,d){if(!a.ma){0>a.Ja?a.Ja=Zb(a):a.v||(b=4,a.fa|=4,a.f[6]=4,d=-3);a.A=b;a.v=0;var e=a.V(b|a.R),f=a.V(b+2&65535|a.R);$b(a,f&-12289|a.Ja>>2&12288);Oc(a,a.Ja);Oc(a,a.f[7]);Q(a,e);a.u&=~(c|18);a.u|=9;a.Ja=-1;if(-3<=d)throw b;}}function Pc(a){var b=Qc(a),c=Qc(a)&-1793;a.C&49152&&(c=c&-225|a.C&63712);Q(a,b);$b(a,c);a.u&=-17}
|
||||
function Mc(a,b){a.u&128||(a.s=a.i=a.m=b,a.g=a.s^a.m>>1)}function Nc(a,b,c,d){a.u&128||(a.s=a.i=a.m=b,a.g=(c^d)&(d^b))}function K(a,b,c,d){if(!a.ma){0>a.Ja?a.Ja=Zb(a):a.v||(b=4,a.fa|=4,a.f[6]=4,d=-3);a.A=b|4143316992;a.v=0;var e=a.V(b|a.R),f=a.V(b+2&65535|a.R);$b(a,f&-12289|a.Ja>>2&12288);Oc(a,a.Ja);Oc(a,a.f[7]);Q(a,e);a.u&=~(c|18);a.u|=9;a.Ja=-1;if(-3<=d)throw b;}}function Pc(a){var b=Qc(a),c=Qc(a)&-1793;a.C&49152&&(c=c&-225|a.C&63712);Q(a,b);$b(a,c);a.u&=-17}
|
||||
function Lb(a,b){var c=b>>13&31;31>c&&(b=a.Ba&32?a.ab[c]+(b&8190)&4194302:b&-3932161);return b}
|
||||
function Rc(a,b,c){var d,e,f;if(!(c&a.aa))return f=b&65535,57344<=f&&(f|=a.Rb),f;d=b>>13;a.Ba&a.sd[a.v]||(d&=7);e=a.H[a.v][d];f=(a.Y[a.v][d]<<6)+(b&8191)&a.Ra;if(a.ma)return f;var g=0;switch(e&7){case 1:g=4096;case 2:e|=128;c&4&&(g=8192);break;case 4:g=4096;case 5:c&4&&(g=4096);case 6:e|=c&4?192:128;break;default:g=32768}32512!=(e&32520)&&(e&8?e&32512&&(b&8128)<(e>>2&8128)&&(g|=16384):(b&8128)>(e>>2&8128)&&(g|=16384));a.H[a.v][d]=e;if(f!=(4194170&a.Ra)||a.v)a.bb=a.v,a.cb=d;g&&(g&57344&&(0<=a.Ja&&
|
||||
(g|=128),a.W&57344||(g|=a.W&4096|a.bb<<5|a.cb<<1,Xb(a,a.W&-61695|g&61694)),K(a,168,64,-1)),a.W&61440||!(f<(4191360&a.Ra)||f>(4194239&a.Ra))||(a.W|=4096,a.W&512&&(a.u|=64)));return f}function Qc(a){var b=a.V(a.f[6]|a.R);a.f[6]=a.f[6]+2&65535;return b}function Oc(a,b){var c=a.f[6]-2&65535;a.f[6]=c;a.A=a.A&65535|(a.A&-65536)<<8|16121856;Sc(a,0,c);a.sb(c,b)}function Sc(a,b,c){!a.v&&c<=a.ob&&(b||4<c)&&(1145<=a.Ea&&c<=a.ob-32?(a.fa|=4,a.f[6]=4,K(a,4,0,-3)):(a.fa|=8,a.u|=32))}
|
||||
|
|
|
|||
Loading…
Reference in a new issue