diff --git a/devices/pdp11/machine/1170/panel/README.md b/devices/pdp11/machine/1170/panel/README.md index 7155d0c83..fb58b3c24 100644 --- a/devices/pdp11/machine/1170/panel/README.md +++ b/devices/pdp11/machine/1170/panel/README.md @@ -7,10 +7,20 @@ machines: type: pdp11 --- +PDP-11/70 with 256Kb and Front Panel +--- + +The machine below is a PDP-11/70 includes our stylized Front Panel and a "teletype" I/O window connected to the +PDP-11/70's serial port. If you want a Debugger, see our collection of similar [PDP-11/70 Machines with Debugger](debugger/). + +Other attached I/O devices include: + +- [PC11 Paper Tape Reader](/devices/pdp11/pc11/) +- [RX11 Disk Controller](/devices/pdp11/rx11/) +- [RK11 Disk Controller](/devices/pdp11/rk11/) +- [RL11 Disk Controller](/devices/pdp11/rl11/) + +Our [PDP-11 Boot Monitor](/apps/pdp11/boot/monitor/) is preloaded at address 140000, and the +[M9312 ROM](/devices/pdp11/rom/M9312/) is installed at address 165000. + {% include machine.html id="test1170" %} - -This machine is also available with our built-in [Debugger](debugger/). - -Other interesting things to know about this machine: - -* It includes an [M9312 ROM](/devices/pdp11/rom/M9312/) at address 165000. The exact ROM is [23-616F1](/devices/pdp11/rom/M9312/23-616F1.txt). diff --git a/devices/pdp11/machine/1170/panel/debugger/README.md b/devices/pdp11/machine/1170/panel/debugger/README.md index dce95cfd4..3bc1b98e9 100644 --- a/devices/pdp11/machine/1170/panel/debugger/README.md +++ b/devices/pdp11/machine/1170/panel/debugger/README.md @@ -10,12 +10,26 @@ machines: sticky: top --- +PDP-11/70 with 256Kb, Front Panel, and Debugger +--- + +The machine below is a PDP-11/70 with a stripped-down interface that includes our stylized Front Panel and +a "teletype" I/O window connected to the PDP-11/70's serial port. The I/O window is shared with the built-in +PDPjs Debugger. + +To make it easier to interact with the Front Panel [Toggle-In Demos](#toggle-ins) below, we've kept this machine's UI +simple, so there are no other I/O devices attached. Our [PDP-11 Boot Monitor](/apps/pdp11/boot/monitor/) is preloaded +at address 140000, and the [M9312 ROM](/devices/pdp11/rom/M9312/) is installed at address 165000. + +For more full-featured PDP-11/70 machines that also include a Debugger, see: + +- [PDP-11/70 running CPU Exerciser](cpuexer/) +- [PDP-11/70 ready to boot RSTS/E](rsts/) +- [PDP-11/70 ready to boot RT-11](rt11/) +- [PDP-11/70 ready to boot XXDP+ Diagnostics](xxdp/) + {% include machine.html id="test1170" %} -Other interesting things to know about this machine: - -* It includes an [M9312 ROM](/devices/pdp11/rom/M9312/) at address 165000. The exact ROM is [23-616F1](/devices/pdp11/rom/M9312/23-616F1.txt). - Toggle-Ins ---------- diff --git a/devices/pdp11/machine/1170/panel/debugger/rt11/README.md b/devices/pdp11/machine/1170/panel/debugger/rt11/README.md index 51cbbd271..9ef464a1c 100644 --- a/devices/pdp11/machine/1170/panel/debugger/rt11/README.md +++ b/devices/pdp11/machine/1170/panel/debugger/rt11/README.md @@ -1,7 +1,7 @@ --- layout: page title: PDP-11/70 with Front Panel and Debugger -permalink: /devices/pdp11/machine/1170/panel/debugger/xxdp/ +permalink: /devices/pdp11/machine/1170/panel/debugger/rt11/ machines: - id: test1170 type: pdp11 @@ -17,7 +17,9 @@ machines: path: /apps/pdp11/tapes/absloader/DEC-11-L2PC-PO.json --- -This machine is ready to boot [XXDP+ Diagnostics](/disks/dec/rl02k/xxdp/) ("BOOT RL0") and run +This machine is ready to boot [RT-11 v4.0](/disks/dec/rk03/rtl11v4/) ("BOOT RK0"). + +Alternatively, you can also boot [XXDP+ Diagnostics](/disks/dec/rl02k/xxdp/) ("BOOT RL0") and run diagnostics (e.g., "R EKBEE1"): - [EKBAD0: 11/70 CPU DIAGNOSTIC (PART 1)](/disks/dec/rl02k/xxdp/ekbad0/) @@ -27,7 +29,3 @@ diagnostics (e.g., "R EKBEE1"): For more information about booting and running these diagnostics, see [XXDP+ Diagnostics](/disks/dec/rl02k/xxdp/). {% include machine.html id="test1170" %} - -Other interesting things to know about this machine: - -* It includes an [M9312 ROM](/devices/pdp11/rom/M9312/) at address 165000. The exact ROM is [23-616F1](/devices/pdp11/rom/M9312/23-616F1.txt). diff --git a/devices/pdp11/panel/1170/front.xml b/devices/pdp11/panel/1170/front.xml index 4b7c79221..c987e3821 100644 --- a/devices/pdp11/panel/1170/front.xml +++ b/devices/pdp11/panel/1170/front.xml @@ -204,7 +204,7 @@ - + Run diff --git a/modules/pdp11/lib/cpustate.js b/modules/pdp11/lib/cpustate.js index 62aba411d..ae2f54d0d 100644 --- a/modules/pdp11/lib/cpustate.js +++ b/modules/pdp11/lib/cpustate.js @@ -505,8 +505,13 @@ class CPUStatePDP11 extends CPUPDP11 { /* * If updates to MMR1 have not been shut off (ie, MMR0.ABORT bits are clear), then we are allowed * to sync MMR1 with its real-time counterpart in opLast. + * + * UPDATE: Apparently, I was mistaken that this register would only be updated when the MMR0 ENABLED + * bit was set. + * + * if ((this.regMMR0 & (PDP11.MMR0.ABORT | PDP11.MMR0.ENABLED)) == PDP11.MMR0.ENABLED) */ - if ((this.regMMR0 & (PDP11.MMR0.ABORT | PDP11.MMR0.ENABLED)) == PDP11.MMR0.ENABLED) { + if (!(this.regMMR0 & PDP11.MMR0.ABORT)) { this.regMMR1 = (this.opLast >> 16) & 0xffff; } var result = this.regMMR1; @@ -527,8 +532,13 @@ class CPUStatePDP11 extends CPUPDP11 { /* * If updates to MMR2 have not been shut off (ie, MMR0.ABORT bits are clear), then we are allowed * to sync MMR2 with its real-time counterpart in opLast. + * + * UPDATE: Apparently, I was mistaken that this register would only be updated when the MMR0 ENABLED + * bit was set. + * + * if ((this.regMMR0 & (PDP11.MMR0.ABORT | PDP11.MMR0.ENABLED)) == PDP11.MMR0.ENABLED) */ - if ((this.regMMR0 & (PDP11.MMR0.ABORT | PDP11.MMR0.ENABLED)) == PDP11.MMR0.ENABLED) { + if (!(this.regMMR0 & PDP11.MMR0.ABORT)) { this.regMMR2 = this.opLast & 0xffff; } return this.regMMR2; diff --git a/pubs/dec/pdp11/papers/README.md b/pubs/dec/pdp11/papers/README.md index d0dfa28df..21a0b5395 100644 --- a/pubs/dec/pdp11/papers/README.md +++ b/pubs/dec/pdp11/papers/README.md @@ -7,7 +7,7 @@ permalink: /pubs/dec/pdp11/papers/ Assorted PDP-11 Research Papers --- -The following is an assortment of research papers by [Gordon Bell](research.microsoft.com/~gbell/) and others: +The following is an assortment of research papers by [Gordon Bell](http://research.microsoft.com/~gbell/) and others: - A New Architecture for Mini-Computers: The DEC PDP-11 [[Original PDF](http://research.microsoft.com/en-us/um/people/gbell/CGB%20Files/New%20Architecture%20PDP11%20SJCC%201970%20c.pdf)] - PMS (Processor-Memory-Switch) and ISP (Instruction Set Processor) Descriptive Systems for Computer Structure [[Original PDF](http://research.microsoft.com/en-us/um/people/gbell/CGB%20Files/PMS%20and%20ISP%20Descriptive%20Systems%201970%20c.pdf)] diff --git a/versions/pdpjs/1.34.0/pdp11-dbg.js b/versions/pdpjs/1.34.0/pdp11-dbg.js index 2a8767773..af4eb1139 100644 --- a/versions/pdpjs/1.34.0/pdp11-dbg.js +++ b/versions/pdpjs/1.34.0/pdp11-dbg.js @@ -142,7 +142,7 @@ h.Aa=function(a,b,c,d){Vd.prototype.Aa.call(this,a,b,c,d);this.ad=b.Jd.bind(b);t h.reset=function(){this.status("Model "+this.ka);this.A.V&&this.ca();this.C=65536;this.G=32768;this.L=65535;this.I=32768;this.w=15;this.g=[0,0,0,0,0,0,0,this.Ud,-1,-2,-3,-4,-5,-6,-7,-8];this.qa=[0,0,0,0,0,0];this.W=[0,0,0,0];this.M=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.B=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535,65535,65535,65535, 65535,65535,65535,65535,65535,65535,65535],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.Ha=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.xc=[0,0,0,0,0,0,0,0];this.N=0;this.cb=-1;this.u=this.j=this.Wc=this.X=this.Y=this.i=this.uc=0;qc(this);fe(this);this.A.error=!1;Vd.prototype.reset.call(this)};function qc(a){a.S=0;a.vc=0;a.wc=0;a.U=0;a.P=0;a.eb=0;a.xa=255;a.zb=0;a.Ab=0;a.sb=0;a.lb=262143;a.kb=a.g[7];a.O=0;a.R=null;a.D&&(we(a),a.Sd=fd(a.D))} function we(a){a.jc=a.ad;a.kc=a.cd;a.Tc=a.dd;a.lc=a.jd;a.sc&&(a.jc=a.oe,a.kc=a.te);a.tc&&(a.Tc=a.ze,a.lc=a.Ae);a.zb?(a.Ia=65536,a.vb=a.U&16?4186112:253952,a.Ga=a.se,a.oa=a.sc?a.$g:a.Dd,a.Hb=a.tc?a.ti:a.Hd,Yc(a.D,a.U&16?22:18)):(a.Ia=0,a.vb=57344,a.Ga=a.Gf,a.oa=a.sc?a.Zg:a.ye,a.Hb=a.tc?a.si:a.De,Yc(a.D,16))}function sd(a){var b=a.S;b&57344||(b=b&-3199|a.Ab<<5|a.sb<<1);return b} -function td(a,b){b&=-3073;if(a.S!=b){b&57344&&!(a.S&57344)&&(a.vc=a.O>>16&65535,a.wc=a.O&65535);a.S=b;a.Ab=(b&96)>>5;a.sb=(b&30)>>1;var c=0;b&257&&(c=4,b&1&&(c|=2));a.zb!=c&&(a.zb=c,we(a))}}function ud(a){1==(a.S&57345)&&(a.vc=a.O>>16&65535);a=a.vc;a&65280&&(a=(a<<8|a>>8)&65535);return a}function vd(a){1==(a.S&57345)&&(a.wc=a.O&65535);return a.wc}function wd(a,b){1170>a.ka&&(b&=-49);a.U!=b&&(a.U=b,a.lb=b&16?4194303:262143,we(a))} +function td(a,b){b&=-3073;if(a.S!=b){b&57344&&!(a.S&57344)&&(a.vc=a.O>>16&65535,a.wc=a.O&65535);a.S=b;a.Ab=(b&96)>>5;a.sb=(b&30)>>1;var c=0;b&257&&(c=4,b&1&&(c|=2));a.zb!=c&&(a.zb=c,we(a))}}function ud(a){a.S&57344||(a.vc=a.O>>16&65535);a=a.vc;a&65280&&(a=(a<<8|a>>8)&65535);return a}function vd(a){a.S&57344||(a.wc=a.O&65535);return a.wc}function wd(a,b){1170>a.ka&&(b&=-49);a.U!=b&&(a.U=b,a.lb=b&16?4194303:262143,we(a))} function xe(a,b,c,d){a.Ud=b;pc(a,b);zd(a,0);a.D.reset();qc(a);if(c){a.g[0]=d||0;for(b=1;5>=b;b++)a.g[b]=0;a.g[6]=1024;a.A.aa?a.A.V||sc(a):a.A.ra=!0}else a.F&&a.A.aa?a.ca()||a.J.A.reset||(he(a.F),H(a.J,-1)):!1===c&&a.ca();!a.A.V&&a.ta&&a.ta.stop()}h.pe=function(){return 0}; h.save=function(){var a=new G(this);a.set(0,[this.g,this.qa,this.W,this.M,this.B,this.Ha,this.xc,this.P,this.uc,this.eb,this.xa,this.Ab,this.sb,this.kb,this.i,this.O,this.cb,this.Ac,this.Dc]);a.set(1,[yd(this),sd(this),ud(this),vd(this),this.U]);a.set(2,[this.pb,this.ob,this.A.ra]);a.set(3,ye(this));a.set(4,re(this));return a.data()}; h.restore=function(a){var b=ia(a[0]);this.g=b.next().value;this.qa=b.next().value;this.W=b.next().value;this.M=b.next().value;this.B=b.next().value;this.Ha=b.next().value;this.xc=b.next().value;this.P=b.next().value;this.uc=b.next().value;this.eb=b.next().value;this.xa=b.next().value;this.Ab=b.next().value;this.sb=b.next().value;this.kb=b.next().value;this.i=b.next().value;this.O=b.next().value;this.cb=b.next().value;this.Ac=b.next().value;this.Dc=b.next().value;b=a[1];zd(this,b[0]);td(this,b[1]); diff --git a/versions/pdpjs/1.34.0/pdp11.js b/versions/pdpjs/1.34.0/pdp11.js index 7f444fd8f..6ddab4bf6 100644 --- a/versions/pdpjs/1.34.0/pdp11.js +++ b/versions/pdpjs/1.34.0/pdp11.js @@ -133,7 +133,7 @@ h.la=function(a,b){for(var c=192,d=0;de. h.reset=function(){this.status("Model "+this.sa);this.j.M&&G(this);this.v=65536;this.m=32768;this.l=65535;this.w=32768;this.i=15;this.b=[0,0,0,0,0,0,0,this.pd,-1,-2,-3,-4,-5,-6,-7,-8];this.ua=[0,0,0,0,0,0];this.ga=[0,0,0,0];this.H=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.s=[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535, 65535,65535,65535,65535,65535,65535],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];this.Pa=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.Rb=[0,0,0,0,0,0,0,0];this.B=0;this.Ea=-1;this.h=this.f=this.qc=this.K=this.S=this.g=this.Ob=0;Eb(this);Uc(this);this.j.error=!1;Rc.prototype.reset.call(this)};function Eb(a){a.J=0;a.Pb=0;a.Qb=0;a.ta=0;a.F=0;a.$a=0;a.Oa=255;a.kb=0;a.Xa=0;a.Ya=0;a.cb=262143;a.Ka=a.b[7];a.C=0;a.I=null;a.u&&(gd(a),a.od=hc(a.u))} function gd(a){a.kc=a.gd;a.lc=a.xc;a.yc=a.Ac;a.mc=a.Cc;a.kb?(a.Aa=65536,a.jc=a.ta&16?4186112:253952,a.ra=a.Id,a.W=a.Nd,a.Ab=a.Qd,$b(a.u,a.ta&16?22:18)):(a.Aa=0,a.jc=57344,a.ra=a.Ue,a.W=a.og,a.Ab=a.Ih,$b(a.u,16))}function sc(a){var b=a.J;b&57344||(b=b&-3199|a.Xa<<5|a.Ya<<1);return b}function tc(a,b){b&=-3073;if(a.J!=b){b&57344&&!(a.J&57344)&&(a.Pb=a.C>>16&65535,a.Qb=a.C&65535);a.J=b;a.Xa=(b&96)>>5;a.Ya=(b&30)>>1;var c=0;b&257&&(c=4,b&1&&(c|=2));a.kb!=c&&(a.kb=c,gd(a))}} -function uc(a){1==(a.J&57345)&&(a.Pb=a.C>>16&65535);a=a.Pb;a&65280&&(a=(a<<8|a>>8)&65535);return a}function vc(a){1==(a.J&57345)&&(a.Qb=a.C&65535);return a.Qb}function wc(a,b){1170>a.sa&&(b&=-49);a.ta!=b&&(a.ta=b,a.cb=b&16?4194303:262143,gd(a))}function hd(a,b,c,d){a.pd=b;F(a,b);zc(a,0);a.u.reset();Eb(a);if(c){a.b[0]=d||0;for(b=1;5>=b;b++)a.b[b]=0;a.b[6]=1024;a.j.R?a.j.M||Gb(a):a.j.Y=!0}else a.D&&a.j.R?G(a)||a.A.j.reset||(a.D.g(),Kb(a.A,-1)):!1===c&&G(a);!a.j.M&&a.pa&&a.pa.stop()}h.Hd=function(){return 0}; +function uc(a){a.J&57344||(a.Pb=a.C>>16&65535);a=a.Pb;a&65280&&(a=(a<<8|a>>8)&65535);return a}function vc(a){a.J&57344||(a.Qb=a.C&65535);return a.Qb}function wc(a,b){1170>a.sa&&(b&=-49);a.ta!=b&&(a.ta=b,a.cb=b&16?4194303:262143,gd(a))}function hd(a,b,c,d){a.pd=b;F(a,b);zc(a,0);a.u.reset();Eb(a);if(c){a.b[0]=d||0;for(b=1;5>=b;b++)a.b[b]=0;a.b[6]=1024;a.j.R?a.j.M||Gb(a):a.j.Y=!0}else a.D&&a.j.R?G(a)||a.A.j.reset||(a.D.g(),Kb(a.A,-1)):!1===c&&G(a);!a.j.M&&a.pa&&a.pa.stop()}h.Hd=function(){return 0}; h.save=function(){var a=new E(this);a.set(0,[this.b,this.ua,this.ga,this.H,this.s,this.Pa,this.Rb,this.F,this.Ob,this.$a,this.Oa,this.Xa,this.Ya,this.Ka,this.g,this.C,this.Ea,this.Lc,this.Nc]);a.set(1,[xc(this),sc(this),uc(this),vc(this),this.ta]);a.set(2,[this.Na,this.Za,this.j.Y]);a.set(3,id(this));a.set(4,bd(this));return a.data()}; h.restore=function(a){var b=ia(a[0]);this.b=b.next().value;this.ua=b.next().value;this.ga=b.next().value;this.H=b.next().value;this.s=b.next().value;this.Pa=b.next().value;this.Rb=b.next().value;this.F=b.next().value;this.Ob=b.next().value;this.$a=b.next().value;this.Oa=b.next().value;this.Xa=b.next().value;this.Ya=b.next().value;this.Ka=b.next().value;this.g=b.next().value;this.C=b.next().value;this.Ea=b.next().value;this.Lc=b.next().value;this.Nc=b.next().value;b=a[1];zc(this,b[0]);tc(this,b[1]); this.Pb=b[2];this.Qb=b[3];wc(this,b[4]);b=a[2];this.Na=b[0];Xc(this,b[1]);this.j.Y=b[2];for(var b=a[3],c=b.length-1;0<=c;c--){var d;a:{for(d=0;d