Merge branch 'next-release'
|
|
@ -43,7 +43,7 @@ Running Paper Tape Diagnostics
|
||||||
### Tests 1-12
|
### Tests 1-12
|
||||||
|
|
||||||
Instructions for running "TEST 1 - BRANCH" through "TEST 12 - JUMP" come from the
|
Instructions for running "TEST 1 - BRANCH" through "TEST 12 - JUMP" come from the
|
||||||
[MAINDEC USER REFERENCE MANUAL, OCTOBER 1973](http://archive.pcjs.org/pubs/dec/pdp11/diags/MAINDEC-11-DZQAB-B-D_User_Reference_Manual_Oct73.pdf),
|
[MAINDEC-11-DZQAB MAINDEC USER REFERENCE MANUAL (Oct 1973)](http://archive.pcjs.org/pubs/dec/pdp11/diags/MAINDEC-11-DZQAB-B-D_User_Reference_Manual_Oct73.pdf),
|
||||||
p. 19:
|
p. 19:
|
||||||
|
|
||||||
MAINDEC-11-D0AA to D0LA (NEW NUMBER - DZKAA to DZKAL)
|
MAINDEC-11-D0AA to D0LA (NEW NUMBER - DZKAA to DZKAL)
|
||||||
|
|
@ -335,7 +335,7 @@ I disassembled the code responsible for that failure:
|
||||||
|
|
||||||
I wasn't able to locate a source code listing for this particular (1978) version of the 11/70 CPU Instruction Exerciser,
|
I wasn't able to locate a source code listing for this particular (1978) version of the 11/70 CPU Instruction Exerciser,
|
||||||
but I did find another useful document,
|
but I did find another useful document,
|
||||||
[11/40 and 11/45 INSTRUCTION EXERCISER (Sep, 1974)](http://archive.pcjs.org/pubs/dec/pdp11/diags/MAINDEC-11-DCQKC-D-D_1140_1145_INSTRUCTION_EXERCISER_Sep74.pdf),
|
[MAINDEC-11-DCQKC 11/40 and 11/45 INSTRUCTION EXERCISER (Sep 1974)](http://archive.pcjs.org/pubs/dec/pdp11/diags/MAINDEC-11-DCQKC-D-D_1140_1145_INSTRUCTION_EXERCISER_Sep74.pdf),
|
||||||
where I discovered a matching test sequence on p. 86.
|
where I discovered a matching test sequence on p. 86.
|
||||||
|
|
||||||
Here's an excerpt:
|
Here's an excerpt:
|
||||||
|
|
|
||||||
14
blog/README.md
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
---
|
||||||
|
layout: blog
|
||||||
|
title: Blog
|
||||||
|
menu_title: Blog
|
||||||
|
menu_order: 1
|
||||||
|
permalink: /blog/
|
||||||
|
---
|
||||||
|
|
||||||
|
Keep tabs on the [PCjs Project](https://github.com/jeffpar/pcjs) on GitHub:
|
||||||
|
[Releases](https://github.com/jeffpar/pcjs/releases), [Issues](https://github.com/jeffpar/pcjs/issues),
|
||||||
|
and [Commits](https://github.com/jeffpar/pcjs/commits/master).
|
||||||
|
|
||||||
|
For random musings about PCjs, web technologies, old hardware and software, and more, read on.
|
||||||
|
|
||||||
BIN
blog/images/avd-tablet.jpg
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
blog/images/googlewhack.jpg
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
blog/images/halt-and-catch-liar-small.jpg
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
blog/images/halt-and-catch-liar.jpg
Normal file
|
After Width: | Height: | Size: 316 KiB |
BIN
blog/images/iisnode-logs.jpg
Normal file
|
After Width: | Height: | Size: 155 KiB |
BIN
blog/images/ipad-solitaire-small.jpg
Normal file
|
After Width: | Height: | Size: 75 KiB |
BIN
blog/images/ipad-solitaire.jpg
Normal file
|
After Width: | Height: | Size: 518 KiB |
BIN
blog/images/os2-debugger.jpg
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
blog/images/pdp-1170-panel-debugger.png
Normal file
|
After Width: | Height: | Size: 351 KiB |
BIN
blog/images/pdp-1170-vt100-side-by-side.png
Normal file
|
After Width: | Height: | Size: 226 KiB |
BIN
blog/images/pdp11-45-front-panel.jpg
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
blog/images/pdp11-70-front-panel.png
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
blog/images/si1978-fuzzier.png
Normal file
|
After Width: | Height: | Size: 82 KiB |
BIN
blog/images/si1978-sharper.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
blog/images/win101-array-demo-small.jpg
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
blog/images/win101-array-demo.jpg
Normal file
|
After Width: | Height: | Size: 252 KiB |
|
|
@ -1736,7 +1736,7 @@ PDP11.opSPL = function(opCode)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!(this.regPSW & PDP11.PSW.CMODE)) {
|
if (!(this.regPSW & PDP11.PSW.CMODE)) {
|
||||||
this.regPSW = (this.regPSW & ~(PDP11.PSW.UNUSED | PDP11.PSW.PRI)) | ((opCode & 0x7) << PDP11.PSW.SHIFT.PRI);
|
this.regPSW = (this.regPSW & ~PDP11.PSW.PRI) | ((opCode & 0x7) << PDP11.PSW.SHIFT.PRI);
|
||||||
this.opFlags |= PDP11.OPFLAG.IRQ_DELAY;
|
this.opFlags |= PDP11.OPFLAG.IRQ_DELAY;
|
||||||
this.opFlags &= ~PDP11.OPFLAG.IRQ;
|
this.opFlags &= ~PDP11.OPFLAG.IRQ;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -134,14 +134,18 @@ CPUStatePDP11.prototype.initProcessor = function()
|
||||||
this.offRegSrc = 0;
|
this.offRegSrc = 0;
|
||||||
this.maskRegSrcByte = 0xff;
|
this.maskRegSrcByte = 0xff;
|
||||||
|
|
||||||
if (this.model == PDP11.MODEL_1120) {
|
if (this.model <= PDP11.MODEL_1120) {
|
||||||
this.decode = PDP11.op1120.bind(this);
|
this.decode = PDP11.op1120.bind(this);
|
||||||
this.checkStackLimit = this.checkStackLimit1120;
|
this.checkStackLimit = this.checkStackLimit1120;
|
||||||
this.offRegSrc = 8;
|
this.offRegSrc = 8;
|
||||||
this.maskRegSrcByte = -1;
|
this.maskRegSrcByte = -1;
|
||||||
|
this.pswUsed = ~(PDP11.PSW.UNUSED | PDP11.PSW.REGSET | PDP11.PSW.PMODE | PDP11.PSW.CMODE) & 0xffff;
|
||||||
|
this.pswRegSet = 0;
|
||||||
} else {
|
} else {
|
||||||
this.decode = PDP11.op1145.bind(this);
|
this.decode = PDP11.op1145.bind(this);
|
||||||
this.checkStackLimit = this.checkStackLimit1145;
|
this.checkStackLimit = this.checkStackLimit1145;
|
||||||
|
this.pswUsed = ~(PDP11.PSW.UNUSED | (this.model < PDP11.MODEL_1145? PDP11.PSW.REGSET : 0)) & 0xffff;
|
||||||
|
this.pswRegSet = (this.model >= PDP11.MODEL_1145? PDP11.PSW.REGSET : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.initRegs();
|
this.initRegs();
|
||||||
|
|
@ -728,16 +732,15 @@ CPUStatePDP11.prototype.setNF = function()
|
||||||
*/
|
*/
|
||||||
CPUStatePDP11.prototype.getOpcode = function()
|
CPUStatePDP11.prototype.getOpcode = function()
|
||||||
{
|
{
|
||||||
var pc = this.regsGen[PDP11.REG.PC];
|
var pc = this.opLast = this.regsGen[PDP11.REG.PC];
|
||||||
this.opLast = pc;
|
|
||||||
/*
|
/*
|
||||||
* If PC is unaligned, a BUS trap will be generated, and because it will generate an
|
* If PC is unaligned, a BUS trap will be generated, and because it will generate an
|
||||||
* exception, the next line (the equivalent of advancePC(2)) will not be executed, ensuring that
|
* exception, the next line (the equivalent of advancePC(2)) will not be executed, ensuring that
|
||||||
* original unaligned PC will be pushed onto the stack by trap().
|
* original unaligned PC will be pushed onto the stack by trap().
|
||||||
*/
|
*/
|
||||||
var op = this.readWord(pc);
|
var opCode = this.readWord(pc);
|
||||||
this.regsGen[PDP11.REG.PC] = (pc + 2) & 0xffff;
|
this.regsGen[PDP11.REG.PC] = (pc + 2) & 0xffff;
|
||||||
return op;
|
return opCode;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1137,11 +1140,12 @@ CPUStatePDP11.prototype.getPSW = function()
|
||||||
*/
|
*/
|
||||||
CPUStatePDP11.prototype.setPSW = function(newPSW)
|
CPUStatePDP11.prototype.setPSW = function(newPSW)
|
||||||
{
|
{
|
||||||
|
newPSW &= this.pswUsed;
|
||||||
this.flagN = newPSW << 12;
|
this.flagN = newPSW << 12;
|
||||||
this.flagZ = (~newPSW) & 4;
|
this.flagZ = (~newPSW) & 4;
|
||||||
this.flagV = newPSW << 14;
|
this.flagV = newPSW << 14;
|
||||||
this.flagC = newPSW << 16;
|
this.flagC = newPSW << 16;
|
||||||
if ((newPSW ^ this.regPSW) & PDP11.PSW.REGSET) {
|
if ((newPSW ^ this.regPSW) & this.pswRegSet) {
|
||||||
/*
|
/*
|
||||||
* Swap register sets
|
* Swap register sets
|
||||||
*/
|
*/
|
||||||
|
|
@ -1500,7 +1504,7 @@ CPUStatePDP11.prototype.trapReturn = function()
|
||||||
* safer, but if we're going to do pushes in trap(), then I see no reason to avoid doing pops in trapReturn().
|
* safer, but if we're going to do pushes in trap(), then I see no reason to avoid doing pops in trapReturn().
|
||||||
*/
|
*/
|
||||||
var addr = this.popWord();
|
var addr = this.popWord();
|
||||||
var newPSW = this.popWord() & ~PDP11.PSW.UNUSED;
|
var newPSW = this.popWord();
|
||||||
if (this.regPSW & PDP11.PSW.CMODE) {
|
if (this.regPSW & PDP11.PSW.CMODE) {
|
||||||
/*
|
/*
|
||||||
* Keep SPL and allow lower only for modes and register set.
|
* Keep SPL and allow lower only for modes and register set.
|
||||||
|
|
@ -2594,11 +2598,11 @@ CPUStatePDP11.prototype.branch = function(opCode, condition)
|
||||||
CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
|
CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* The Debugger uses fComplete to determine if the instruction completed (true) or was interrupted
|
* The Debugger uses complete to determine if the instruction completed (true) or was interrupted
|
||||||
* by a breakpoint or some other exceptional condition (false). NOTE: this does NOT include JavaScript
|
* by a breakpoint or some other exceptional condition (false). NOTE: this does NOT include JavaScript
|
||||||
* exceptions, which stepCPU() expects the caller to catch using its own exception handler.
|
* exceptions, which stepCPU() expects the caller to catch using its own exception handler.
|
||||||
*
|
*
|
||||||
* The CPU relies on the use of stopCPU() rather than fComplete, because the CPU never single-steps
|
* The CPU relies on the use of stopCPU() rather than complete, because the CPU never single-steps
|
||||||
* (ie, nMinCycles is always some large number), whereas the Debugger does. And conversely, when the
|
* (ie, nMinCycles is always some large number), whereas the Debugger does. And conversely, when the
|
||||||
* Debugger is single-stepping (even when performing multiple single-steps), fRunning is never set,
|
* Debugger is single-stepping (even when performing multiple single-steps), fRunning is never set,
|
||||||
* so stopCPU() would have no effect as far as the Debugger is concerned.
|
* so stopCPU() would have no effect as far as the Debugger is concerned.
|
||||||
|
|
@ -2618,11 +2622,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
|
||||||
* if nDebugState is <= zero).
|
* if nDebugState is <= zero).
|
||||||
*/
|
*/
|
||||||
var nDebugState = (!nMinCycles)? -1 : (this.flags.starting? 0 : 1);
|
var nDebugState = (!nMinCycles)? -1 : (this.flags.starting? 0 : 1);
|
||||||
|
this.flags.starting = false; // we've moved beyond "starting" and have officially "started" now
|
||||||
/*
|
|
||||||
* We've moved beyond "starting" now and have officially "started".
|
|
||||||
*/
|
|
||||||
this.flags.starting = false;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We move the minimum cycle count to nStepCycles (the number of cycles left to step), so that other
|
* We move the minimum cycle count to nStepCycles (the number of cycles left to step), so that other
|
||||||
|
|
@ -2631,16 +2631,25 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
|
||||||
*/
|
*/
|
||||||
this.nBurstCycles = this.nStepCycles = nMinCycles;
|
this.nBurstCycles = this.nStepCycles = nMinCycles;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* And finally, move the nDebugCheck state to an OPFLAG bit, so that the loop need check only one variable.
|
||||||
|
*/
|
||||||
|
this.opFlags = (this.opFlags & ~PDP11.OPFLAG.DEBUGGER) | (nDebugCheck? PDP11.OPFLAG.DEBUGGER : 0);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (DEBUGGER && nDebugCheck) {
|
if (this.opFlags) {
|
||||||
|
/*
|
||||||
|
* NOTE: We still check DEBUGGER to ensure that this code will be compiled out of existence in
|
||||||
|
* non-DEBUGGER builds.
|
||||||
|
*/
|
||||||
|
if (DEBUGGER && (this.opFlags & PDP11.OPFLAG.DEBUGGER)) {
|
||||||
if (this.dbg.checkInstruction(this.getPC(), nDebugState)) {
|
if (this.dbg.checkInstruction(this.getPC(), nDebugState)) {
|
||||||
this.stopCPU();
|
this.stopCPU();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (!++nDebugCheck) this.opFlags &= ~PDP11.OPFLAG.DEBUGGER;
|
||||||
if (!nDebugState) nDebugState++;
|
if (!nDebugState) nDebugState++;
|
||||||
nDebugCheck++;
|
|
||||||
}
|
}
|
||||||
if (this.opFlags) {
|
|
||||||
/*
|
/*
|
||||||
* If we're in the IRQ or WAIT state, check for any pending interrupts.
|
* If we're in the IRQ or WAIT state, check for any pending interrupts.
|
||||||
*
|
*
|
||||||
|
|
@ -2651,7 +2660,7 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
|
||||||
*/
|
*/
|
||||||
if ((this.opFlags & (PDP11.OPFLAG.IRQ_MASK | PDP11.OPFLAG.WAIT)) /* && nDebugState >= 0 */) {
|
if ((this.opFlags & (PDP11.OPFLAG.IRQ_MASK | PDP11.OPFLAG.WAIT)) /* && nDebugState >= 0 */) {
|
||||||
if (this.checkInterrupts()) {
|
if (this.checkInterrupts()) {
|
||||||
if (DEBUGGER && nDebugCheck && this.dbg.checkInstruction(this.getPC(), nDebugState)) {
|
if ((this.opFlags & PDP11.OPFLAG.DEBUGGER) && this.dbg.checkInstruction(this.getPC(), nDebugState)) {
|
||||||
this.stopCPU();
|
this.stopCPU();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -2674,15 +2683,13 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
|
||||||
*/
|
*/
|
||||||
if (this.opFlags & PDP11.OPFLAG.TRAP_MASK) {
|
if (this.opFlags & PDP11.OPFLAG.TRAP_MASK) {
|
||||||
if (this.checkTraps()) {
|
if (this.checkTraps()) {
|
||||||
if (DEBUGGER && nDebugCheck && this.dbg.checkInstruction(this.getPC(), nDebugState)) {
|
if ((this.opFlags & PDP11.OPFLAG.DEBUGGER) && this.dbg.checkInstruction(this.getPC(), nDebugState)) {
|
||||||
this.stopCPU();
|
this.stopCPU();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (nDebugState < 0) break;
|
if (nDebugState < 0) break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
this.assert(!this.irqNext && !this.regPIR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -2691,7 +2698,8 @@ CPUStatePDP11.prototype.stepCPU = function(nMinCycles)
|
||||||
*/
|
*/
|
||||||
this.opFlags = (this.opFlags & PDP11.OPFLAG.PRESERVE) | (this.regPSW & PDP11.PSW.TF);
|
this.opFlags = (this.opFlags & PDP11.OPFLAG.PRESERVE) | (this.regPSW & PDP11.PSW.TF);
|
||||||
|
|
||||||
this.decode(this.getOpcode());
|
var opCode = this.getOpcode();
|
||||||
|
this.decode(opCode);
|
||||||
|
|
||||||
} while (this.nStepCycles > 0);
|
} while (this.nStepCycles > 0);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -124,8 +124,20 @@ var PDP11 = {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* CPU model numbers (supported)
|
* CPU model numbers (supported)
|
||||||
|
*
|
||||||
|
* The 11/20 includes the 11/10, which is not identified separately because there was
|
||||||
|
* nothing functionally different about it.
|
||||||
|
*
|
||||||
|
* The 11/40 added the MODE bits to the PSW (but only KERNEL=00 and USER=11) and 18-bit
|
||||||
|
* addressing via an MMU; there was still only one register set.
|
||||||
|
*
|
||||||
|
* The 11/45 added REGSET bit to the PSW (along with the second register set), and added
|
||||||
|
* SUPERVISOR=01 to the set of modes.
|
||||||
|
*
|
||||||
|
* The 11/70 added 22-bit addressing and corresponding extensions to the MMU.
|
||||||
*/
|
*/
|
||||||
MODEL_1120: 1120,
|
MODEL_1120: 1120,
|
||||||
|
MODEL_1140: 1140,
|
||||||
MODEL_1145: 1145,
|
MODEL_1145: 1145,
|
||||||
MODEL_1170: 1170,
|
MODEL_1170: 1170,
|
||||||
|
|
||||||
|
|
@ -169,9 +181,13 @@ var PDP11 = {
|
||||||
PRI: 0x00E0, // bits 5-7 (000340) Priority
|
PRI: 0x00E0, // bits 5-7 (000340) Priority
|
||||||
UNUSED: 0x0700, // bits 8-10 (003400) UNUSED
|
UNUSED: 0x0700, // bits 8-10 (003400) UNUSED
|
||||||
/*
|
/*
|
||||||
* PSW bits above this point are unused on 11/20-class machines
|
* The REGSET bit (and the alternate register set stored in regsAlt) came into existence
|
||||||
|
* with the 11/45; (ie, they were not present on the 11/10, 11/20, or 11/40).
|
||||||
*/
|
*/
|
||||||
REGSET: 0x0800, // bit 11 (004000) Register Set
|
REGSET: 0x0800, // bit 11 (004000) Register Set
|
||||||
|
/*
|
||||||
|
* The MODE bits came into existence with the 11/40 (eg, not present on the 11/10 or 11/20).
|
||||||
|
*/
|
||||||
PMODE: 0x3000, // bits 12-13 (030000) Prev Mode (see PDP11.MODE)
|
PMODE: 0x3000, // bits 12-13 (030000) Prev Mode (see PDP11.MODE)
|
||||||
CMODE: 0xC000, // bits 14-15 (140000) Curr Mode (see PDP11.MODE)
|
CMODE: 0xC000, // bits 14-15 (140000) Curr Mode (see PDP11.MODE)
|
||||||
SHIFT: {
|
SHIFT: {
|
||||||
|
|
@ -266,6 +282,7 @@ var PDP11 = {
|
||||||
IRQ_DELAY: 0x0001, // incremented until it becomes IRQ (set by SPL and traps)
|
IRQ_DELAY: 0x0001, // incremented until it becomes IRQ (set by SPL and traps)
|
||||||
IRQ: 0x0002, // time to call checkInterrupts()
|
IRQ: 0x0002, // time to call checkInterrupts()
|
||||||
IRQ_MASK: 0x0003,
|
IRQ_MASK: 0x0003,
|
||||||
|
DEBUGGER: 0x0004, // set if the Debugger wants to perform checks
|
||||||
WAIT: 0x0008, // WAIT operation in progress
|
WAIT: 0x0008, // WAIT operation in progress
|
||||||
PRESERVE: 0x000F, // OPFLAG bits to preserve prior to the next instruction
|
PRESERVE: 0x000F, // OPFLAG bits to preserve prior to the next instruction
|
||||||
TRAP_TF: 0x0010, // aka PDP11.PSW.TF (WARNING: do not change this bit, or you will likely break opRTI())
|
TRAP_TF: 0x0010, // aka PDP11.PSW.TF (WARNING: do not change this bit, or you will likely break opRTI())
|
||||||
|
|
@ -873,8 +890,7 @@ PDP11.ACCESS.UPDATE_WORD = PDP11.ACCESS.WORD | PDP11.ACCESS.UPDATE; // forme
|
||||||
PDP11.ACCESS.UPDATE_BYTE = PDP11.ACCESS.BYTE | PDP11.ACCESS.UPDATE; // formerly MODIFY_BYTE (1 | 2 | 4)
|
PDP11.ACCESS.UPDATE_BYTE = PDP11.ACCESS.BYTE | PDP11.ACCESS.UPDATE; // formerly MODIFY_BYTE (1 | 2 | 4)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PSW arithmetic flags are NOT stored directly into the PSW register; they are maintained across separate
|
* PSW arithmetic flags are NOT stored directly into the PSW register; they are maintained across separate flag registers.
|
||||||
* flag registers.
|
|
||||||
*/
|
*/
|
||||||
PDP11.PSW.FLAGS = (PDP11.PSW.NF | PDP11.PSW.ZF | PDP11.PSW.VF | PDP11.PSW.CF);
|
PDP11.PSW.FLAGS = (PDP11.PSW.NF | PDP11.PSW.ZF | PDP11.PSW.VF | PDP11.PSW.CF);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1078,11 +1078,13 @@ DevicePDP11.prototype.writePSW = function(data, addr)
|
||||||
*
|
*
|
||||||
* 004174: 052767 000020 173574 BIS #20,177776
|
* 004174: 052767 000020 173574 BIS #20,177776
|
||||||
*
|
*
|
||||||
* Since that test was written for the PDP-11/20, it's possible that newer machines
|
* Since that test was written for the PDP-11/20, it's possible that newer machines have a different
|
||||||
* have a different behavior, but for now, we assume that all machines allow setting PSW.TF.
|
* behavior, but for now, we assume that all machines allow setting PSW.TF.
|
||||||
|
*
|
||||||
|
* Moreover, we have changed setPSW() to disallow the setting of any bits not supported by the current
|
||||||
|
* CPU model, so it seems rather pointless to do any masking of bits here.
|
||||||
*/
|
*/
|
||||||
var maskDisallowed = PDP11.PSW.UNUSED;
|
this.cpu.setPSW(data);
|
||||||
this.cpu.setPSW((data & ~maskDisallowed) | (this.cpu.getPSW() & maskDisallowed));
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
---
|
|
||||||
layout: page
|
|
||||||
title: DEC PDP-11/10 Publications
|
|
||||||
permalink: /pubs/dec/pdp11/1110/
|
|
||||||
---
|
|
||||||
|
|
||||||
DEC PDP-11/10 Publications
|
|
||||||
---
|
|
||||||
|
|
||||||
* PDP-11/10 Handbook (1969) [[PDF](http://research.microsoft.com/en-us/um/people/gbell/Digital/PDP%2011%20Handbook%201969.pdf)]
|
|
||||||
|
|
@ -7,4 +7,17 @@ permalink: /pubs/dec/pdp11/1120/
|
||||||
DEC PDP-11/20 Publications
|
DEC PDP-11/20 Publications
|
||||||
---
|
---
|
||||||
|
|
||||||
* PDP-11/20 Handbook (1971) [[PDF](http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP1120_Handbook_1972.pdf)]
|
PDPjs development relied on the following PDP-11/20 publications:
|
||||||
|
|
||||||
|
- [PDP-11/20 Handbook (1969)](http://archive.pcjs.org/pubs/dec/pdp11/1120/PDP1120_Handbook_1969.pdf) [[Original PDF](http://research.microsoft.com/en-us/um/people/gbell/Digital/PDP%2011%20Handbook%201969.pdf)]
|
||||||
|
- [PDP-11/20 Handbook (1971)](http://archive.pcjs.org/pubs/dec/pdp11/1120/PDP1120_Handbook_1971.pdf) [[Original PDF](http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP1120_Handbook_1972.pdf)]
|
||||||
|
|
||||||
|
The above publications actually applied to several PDP-11 models:
|
||||||
|
|
||||||
|
- PDP-11/10 (with a minimum of 128 words of read/write memory and 1024 words of read-only memory)
|
||||||
|
- PDP-11/20 (with a minimum of 4,096 words of read-write memory)
|
||||||
|
|
||||||
|
The 1971 Handbook also covered some additional models, which DEC says were "functionally identical":
|
||||||
|
|
||||||
|
- PDP-11/15 OEM Computer
|
||||||
|
- PDP-11R20 Rugged Computer
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,6 @@ permalink: /pubs/dec/pdp11/1140/
|
||||||
DEC PDP-11/40 Publications
|
DEC PDP-11/40 Publications
|
||||||
---
|
---
|
||||||
|
|
||||||
* PDP-11/40 Handbook (1972) [[PDF](http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP-11_40_Processor_Handbook_1972.pdf)]
|
PDPjs development relied on the following PDP-11/40 publications:
|
||||||
|
|
||||||
|
- [PDP-11/40 Handbook (1972)](http://archive.pcjs.org/pubs/dec/pdp11/1140/PDP1140_Handbook_1972.pdf) [[Original PDF](http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP-11_40_Processor_Handbook_1972.pdf)]
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,6 @@ permalink: /pubs/dec/pdp11/1145/
|
||||||
DEC PDP-11/45 Publications
|
DEC PDP-11/45 Publications
|
||||||
---
|
---
|
||||||
|
|
||||||
* PDP-11/45 Handbook (1973) [[PDF](http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP1145_Handbook_1973.pdf)]
|
PDPjs development relied on the following PDP-11/45 publications:
|
||||||
|
|
||||||
|
- [PDP-11/45 Handbook (1973)](http://archive.pcjs.org/pubs/dec/pdp11/1145/PDP1145_Handbook_1973.pdf) [[Original PDF](http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP1145_Handbook_1973.pdf)]
|
||||||
|
|
|
||||||
|
|
@ -7,5 +7,7 @@ permalink: /pubs/dec/pdp11/1170/
|
||||||
DEC PDP-11/70 Publications
|
DEC PDP-11/70 Publications
|
||||||
---
|
---
|
||||||
|
|
||||||
* PDP-11/70 Handbook (1976) [[PDF](http://bitsavers.informatik.uni-stuttgart.de/pdf/dec/pdp11/1170/PDP-11_70_Handbook_1977-78.pdf)]
|
PDPjs development relied on the following PDP-11/70 publications:
|
||||||
* PDP-11/70 Handbook (1979) [[PDF](http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP11_Handbook1979.pdf)]
|
|
||||||
|
- [PDP-11/70 Handbook (1976)](http://archive.pcjs.org/pubs/dec/pdp11/1170/PDP1170_Handbook_1976.pdf) [[Original PDF](http://bitsavers.informatik.uni-stuttgart.de/pdf/dec/pdp11/1170/PDP-11_70_Handbook_1977-78.pdf)]
|
||||||
|
- [PDP-11/70 Handbook (1979)](http://archive.pcjs.org/pubs/dec/pdp11/1170/PDP1170_Handbook_1979.pdf) [[Original PDF](http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP11_Handbook1979.pdf)]
|
||||||
|
|
|
||||||
|
|
@ -7,9 +7,73 @@ permalink: /pubs/dec/pdp11/
|
||||||
DEC PDP-11 Publications
|
DEC PDP-11 Publications
|
||||||
---
|
---
|
||||||
|
|
||||||
* [PDP-11/10](1110/)
|
[PDP-11/20](1120/)
|
||||||
* [PDP-11/20](1120/)
|
|
||||||
* [PDP-11/40](1140/)
|
- [PDP-11/20 Handbook (1969)](http://archive.pcjs.org/pubs/dec/pdp11/1120/PDP1120_Handbook_1969.pdf) [[Original PDF](http://research.microsoft.com/en-us/um/people/gbell/Digital/PDP%2011%20Handbook%201969.pdf)]
|
||||||
* [PDP-11/45](1145/)
|
- [PDP-11/20 Handbook (1971)](http://archive.pcjs.org/pubs/dec/pdp11/1120/PDP1120_Handbook_1971.pdf) [[Original PDF](http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP1120_Handbook_1972.pdf)]
|
||||||
* [PDP-11/70](1170/)
|
|
||||||
* [Assorted PDP-11 Papers](papers/)
|
[PDP-11/40](1140/)
|
||||||
|
|
||||||
|
- [PDP-11/40 Handbook (1972)](http://archive.pcjs.org/pubs/dec/pdp11/1140/PDP1140_Handbook_1972.pdf) [[Original PDF](http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP-11_40_Processor_Handbook_1972.pdf)]
|
||||||
|
|
||||||
|
[PDP-11/45](1145/)
|
||||||
|
|
||||||
|
- [PDP-11/45 Handbook (1973)](http://archive.pcjs.org/pubs/dec/pdp11/1145/PDP1145_Handbook_1973.pdf) [[Original PDF](http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP1145_Handbook_1973.pdf)]
|
||||||
|
|
||||||
|
[PDP-11/70](1170/)
|
||||||
|
|
||||||
|
- [PDP-11/70 Handbook (1976)](http://archive.pcjs.org/pubs/dec/pdp11/1170/PDP1170_Handbook_1976.pdf) [[Original PDF](http://bitsavers.informatik.uni-stuttgart.de/pdf/dec/pdp11/1170/PDP-11_70_Handbook_1977-78.pdf)]
|
||||||
|
- [PDP-11/70 Handbook (1979)](http://archive.pcjs.org/pubs/dec/pdp11/1170/PDP1170_Handbook_1979.pdf) [[Original PDF](http://bitsavers.trailing-edge.com/pdf/dec/pdp11/handbooks/PDP11_Handbook1979.pdf)]
|
||||||
|
|
||||||
|
[PDP-11 BASIC](basic/)
|
||||||
|
|
||||||
|
- [PDP-11 BASIC Programming Manual (1970)](http://archive.pcjs.org/pubs/dec/pdp11/basic/BASIC_Programming_Manual_Dec70.pdf)
|
||||||
|
- [LISTING OF BASIC/PTS (May 1974)](http://archive.pcjs.org/pubs/dec/pdp11/basic/BASIC_PTS_Listing_Mar77.pdf)
|
||||||
|
|
||||||
|
[PDP-11 Diagnostics](diags/)
|
||||||
|
|
||||||
|
- [MAINDEC-11-DZQAB MAINDEC USER REFERENCE MANUAL (Oct 1973)](http://archive.pcjs.org/pubs/dec/pdp11/diags/MAINDEC-11-DZQAB-B-D_User_Reference_Manual_Oct73.pdf)
|
||||||
|
- [MAINDEC-11-DCQKC 11/40 and 11/45 INSTRUCTION EXERCISER (Sep 1974)](http://archive.pcjs.org/pubs/dec/pdp11/diags/MAINDEC-11-DCQKC-D-D_1140_1145_INSTRUCTION_EXERCISER_Sep74.pdf)
|
||||||
|
- [MAINDEC-11-DZQXA XXDP USER MANUAL (Jul 1976)](http://archive.pcjs.org/pubs/dec/pdp11/diags/MAINDEC-11-DZQXA-I-D_XXDP_User_Manual_Jul76.pdf)
|
||||||
|
- [CEKBAD0 11/70 CPU #1 (May 1980)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AH-7963D-MC_CEKBAD0_1170_CPU_1_May80.pdf)
|
||||||
|
- [CEKBBF0 11/70 CPU #2 (May 1980)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AH-7968F-MC_CEKBBF0_1170_CPU_2_May80.pdf)
|
||||||
|
- [CEKBEE0 11/70 MEM MGMT (May 1980)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AC-7975E-MC_CEKBEE0_1170_MEM_MGMT_May80.pdf)
|
||||||
|
- [PDP-11 DIAGNOSTIC HANDBOOK (1988)](http://archive.pcjs.org/pubs/dec/pdp11/diags/PDP11_DiagnosticHandbook_1988.pdf)
|
||||||
|
- [Notes for XXDP+ and XXDP V2 Operating Systems (Feb 1993)](http://archive.pcjs.org/pubs/dec/pdp11/diags/XXDP_Notes_Feb93.pdf)
|
||||||
|
|
||||||
|
[PDP-11 KW11](kw11/)
|
||||||
|
|
||||||
|
- [KW11-L Line Time Clock Manual (Apr 1973)](http://archive.pcjs.org/pubs/dec/pdp11/kw11/KW11L_Apr73.pdf)
|
||||||
|
|
||||||
|
[PDP-11 M9312](m9312/)
|
||||||
|
|
||||||
|
- [M9312 Bootstrap/Terminator Module Technical Manual (Oct 1979)](http://archive.pcjs.org/pubs/dec/pdp11/m9312/M9312_Bootstrap_Terminator_Module_Technical_Manual.pdf)
|
||||||
|
|
||||||
|
[PDP-11 MACRO-11](macro11/)
|
||||||
|
|
||||||
|
- [MACRO-11 Reference Manual (Dec 1975)](http://archive.pcjs.org/pubs/dec/pdp11/macro11/MACRO11_Dec75.pdf)
|
||||||
|
- [MACRO-11 Language Reference Manual (Mar 1983)](http://archive.pcjs.org/pubs/dec/pdp11/macro11/MACRO11_Mar83.pdf)
|
||||||
|
|
||||||
|
[PDP-11 PC11](pc11/)
|
||||||
|
|
||||||
|
- [LISTING OF PDP-11 ABSOLUTE LOADER (June 1975)](http://archive.pcjs.org/pubs/dec/pdp11/pc11/Absolute_Loader_Listing_Jun75.pdf)
|
||||||
|
- [CZQMCF0 0-124K MEM EXER 16K (Feb 1978)](http://archive.pcjs.org/pubs/dec/pdp11/pc11/Mem-Exer-16k_Feb78.pdf)
|
||||||
|
- [PDP-11 Paper Tape Software Handbook (Apr 1976)](http://archive.pcjs.org/pubs/dec/pdp11/pc11/Paper_Tape_Software_Handbook.pdf)
|
||||||
|
|
||||||
|
[PDP-11 RK11](rk11/)
|
||||||
|
|
||||||
|
- [CXRKAG0 DEC/X11 RK11 MODULE (Sep 1978)](http://archive.pcjs.org/pubs/dec/pdp11/rk11/AC-E676G-MC_CXRKAG0-RK11_Sep78.pdf)
|
||||||
|
- [RK11-D and RK11-E Moving Head Disk Drive Controller Manual (Feb 1975)](http://archive.pcjs.org/pubs/dec/pdp11/rk11/EK-RK11D-MM-002.pdf)
|
||||||
|
|
||||||
|
[PDP-11 RL11](rl11/)
|
||||||
|
|
||||||
|
- [RL01/RL02 User Guide (Sep 1981)](http://archive.pcjs.org/pubs/dec/pdp11/rl11/EK-RL012-UG-005_Sep81.pdf)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[Assorted PDP-11 Handbooks](other/)
|
||||||
|
|
||||||
|
- [PDP-11 Peripherals Handbook (1976)](http://archive.pcjs.org/pubs/dec/pdp11/other/PDP11_Peripherals_Handbook_1976.pdf)
|
||||||
|
- [PDP-11 Software Handbook (1978)](http://archive.pcjs.org/pubs/dec/pdp11/other/PDP11_Software_Handbook_1978.pdf)
|
||||||
|
|
||||||
|
[Assorted PDP-11 Papers](papers/)
|
||||||
|
|
|
||||||
11
pubs/dec/pdp11/basic/README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: DEC PDP-11 BASIC Publications
|
||||||
|
permalink: /pubs/dec/pdp11/basic/
|
||||||
|
---
|
||||||
|
|
||||||
|
DEC PDP-11 BASIC Publications
|
||||||
|
---
|
||||||
|
|
||||||
|
- [PDP-11 BASIC Programming Manual (1970)](http://archive.pcjs.org/pubs/dec/pdp11/basic/BASIC_Programming_Manual_Dec70.pdf)
|
||||||
|
- [LISTING OF BASIC/PTS (May 1974)](http://archive.pcjs.org/pubs/dec/pdp11/basic/BASIC_PTS_Listing_Mar77.pdf)
|
||||||
28
pubs/dec/pdp11/diags/README.md
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: DEC PDP-11 Diagnostic Publications
|
||||||
|
permalink: /pubs/dec/pdp11/diags/
|
||||||
|
---
|
||||||
|
|
||||||
|
DEC PDP-11 Diagnostic Publications
|
||||||
|
---
|
||||||
|
|
||||||
|
PDPjs development and testing relied on the following PDP-11 diagnostic publications:
|
||||||
|
|
||||||
|
- [MAINDEC-11-DZQAB MAINDEC USER REFERENCE MANUAL (Oct 1973)](http://archive.pcjs.org/pubs/dec/pdp11/diags/MAINDEC-11-DZQAB-B-D_User_Reference_Manual_Oct73.pdf)
|
||||||
|
- [MAINDEC-11-DCQKC 11/40 and 11/45 INSTRUCTION EXERCISER (Sep 1974)](http://archive.pcjs.org/pubs/dec/pdp11/diags/MAINDEC-11-DCQKC-D-D_1140_1145_INSTRUCTION_EXERCISER_Sep74.pdf)
|
||||||
|
- [MAINDEC-11-DZQXA XXDP USER MANUAL (Jul 1976)](http://archive.pcjs.org/pubs/dec/pdp11/diags/MAINDEC-11-DZQXA-I-D_XXDP_User_Manual_Jul76.pdf)
|
||||||
|
- [CEKBAD0 11/70 CPU #1 (May 1980)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AH-7963D-MC_CEKBAD0_1170_CPU_1_May80.pdf)
|
||||||
|
- [CEKBBF0 11/70 CPU #2 (May 1980)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AH-7968F-MC_CEKBBF0_1170_CPU_2_May80.pdf)
|
||||||
|
- [CEKBEE0 11/70 MEM MGMT (May 1980)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AC-7975E-MC_CEKBEE0_1170_MEM_MGMT_May80.pdf)
|
||||||
|
|
||||||
|
The *MAINDEC-11-DZQAB MAINDEC USER REFERENCE MANUAL (Oct 1973)* was particularly useful for understanding DEC's
|
||||||
|
[Paper Tape Diagnostics](/apps/pdp11/tapes/diags/).
|
||||||
|
|
||||||
|
The *MAINDEC-11-DCQKC 11/40 and 11/45 INSTRUCTION EXERCISER (Sep 1974)* document was useful for understanding DEC's
|
||||||
|
[11/70 CPU EXERCISER](/apps/pdp11/tapes/diags/#md-11-1170-cpu-exerciser).
|
||||||
|
|
||||||
|
### Non-DEC Publications
|
||||||
|
|
||||||
|
- [PDP-11 DIAGNOSTIC HANDBOOK (1988)](http://archive.pcjs.org/pubs/dec/pdp11/diags/PDP11_DiagnosticHandbook_1988.pdf)
|
||||||
|
- [Notes for XXDP+ and XXDP V2 Operating Systems (Feb 1993)](http://archive.pcjs.org/pubs/dec/pdp11/diags/XXDP_Notes_Feb93.pdf)
|
||||||
12
pubs/dec/pdp11/kw11/README.md
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: DEC PDP-11 KW11 Line Time Clock
|
||||||
|
permalink: /pubs/dec/pdp11/kw11/
|
||||||
|
---
|
||||||
|
|
||||||
|
DEC PDP-11 KW11 Line Time Clock
|
||||||
|
---
|
||||||
|
|
||||||
|
PDPjs development and testing relied on the following PDP-11 publications:
|
||||||
|
|
||||||
|
- [KW11-L Line Time Clock Manual (Apr 1973)](http://archive.pcjs.org/pubs/dec/pdp11/kw11/KW11L_Apr73.pdf)
|
||||||
12
pubs/dec/pdp11/m9312/README.md
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: "DEC PDP-11 M9312 Bootstrap/Terminator Module"
|
||||||
|
permalink: /pubs/dec/pdp11/m9312/
|
||||||
|
---
|
||||||
|
|
||||||
|
DEC PDP-11 M9312
|
||||||
|
---
|
||||||
|
|
||||||
|
PDPjs development and testing relied on the following PDP-11 publications:
|
||||||
|
|
||||||
|
- [M9312 Bootstrap/Terminator Module Technical Manual (Oct 1979)](http://archive.pcjs.org/pubs/dec/pdp11/m9312/M9312_Bootstrap_Terminator_Module_Technical_Manual.pdf)
|
||||||
13
pubs/dec/pdp11/macro11/README.md
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: DEC PDP-11 MACRO-11
|
||||||
|
permalink: /pubs/dec/pdp11/macro11/
|
||||||
|
---
|
||||||
|
|
||||||
|
DEC PDP-11 MACRO-11
|
||||||
|
---
|
||||||
|
|
||||||
|
PDPjs development and testing relied on the following PDP-11 publications:
|
||||||
|
|
||||||
|
- [MACRO-11 Reference Manual (Dec 1975)](http://archive.pcjs.org/pubs/dec/pdp11/macro11/MACRO11_Dec75.pdf)
|
||||||
|
- [MACRO-11 Language Reference Manual (Mar 1983)](http://archive.pcjs.org/pubs/dec/pdp11/macro11/MACRO11_Mar83.pdf)
|
||||||
13
pubs/dec/pdp11/other/README.md
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: DEC PDP-11 Assorted Handbooks
|
||||||
|
permalink: /pubs/dec/pdp11/other/
|
||||||
|
---
|
||||||
|
|
||||||
|
DEC PDP-11 Assorted Handbooks
|
||||||
|
---
|
||||||
|
|
||||||
|
PDPjs development and testing relied on the following PDP-11 publications:
|
||||||
|
|
||||||
|
- [PDP-11 Peripherals Handbook (1976)](http://archive.pcjs.org/pubs/dec/pdp11/other/PDP11_Peripherals_Handbook_1976.pdf)
|
||||||
|
- [PDP-11 Software Handbook (1978)](http://archive.pcjs.org/pubs/dec/pdp11/other/PDP11_Software_Handbook_1978.pdf)
|
||||||
|
|
@ -7,7 +7,7 @@ permalink: /pubs/dec/pdp11/papers/
|
||||||
Assorted PDP-11 Papers
|
Assorted PDP-11 Papers
|
||||||
---
|
---
|
||||||
|
|
||||||
* A New Architecture for Mini-Computers: The DEC PDP-11 [[PDF](http://research.microsoft.com/en-us/um/people/gbell/CGB%20Files/New%20Architecture%20PDP11%20SJCC%201970%20c.pdf)]
|
- 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 [[PDF](http://research.microsoft.com/en-us/um/people/gbell/CGB%20Files/PMS%20and%20ISP%20Descriptive%20Systems%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)]
|
||||||
* [What Have We Learned From The PDP-11? (1975)](1975_what_have_we_learned/) [[PDF](http://research.microsoft.com/en-us/um/people/gbell/Digital/Bell_Strecker_What_we%20_learned_fm_PDP-11c%207511.pdf)]
|
- [What Have We Learned From The PDP-11? (1975)](1975_what_have_we_learned/) [[Original PDF](http://research.microsoft.com/en-us/um/people/gbell/Digital/Bell_Strecker_What_we%20_learned_fm_PDP-11c%207511.pdf)]
|
||||||
* [What Have We Learned From The PDP-11? (1977)](1977_what_have_we_learned/) [[PDF](http://research.microsoft.com/en-us/um/people/gbell/CGB%20Files/What%20Have%20We%20Learned%20From%20the%20PDP-11%201977%20c.pdf)]
|
- [What Have We Learned From The PDP-11? (1977)](1977_what_have_we_learned/) [[Original PDF](http://research.microsoft.com/en-us/um/people/gbell/CGB%20Files/What%20Have%20We%20Learned%20From%20the%20PDP-11%201977%20c.pdf)]
|
||||||
|
|
|
||||||
14
pubs/dec/pdp11/pc11/README.md
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: DEC PDP-11 PC11 Paper Tape Reader
|
||||||
|
permalink: /pubs/dec/pdp11/pc11/
|
||||||
|
---
|
||||||
|
|
||||||
|
DEC PDP-11 PC11 Paper Tape Reader
|
||||||
|
---
|
||||||
|
|
||||||
|
PDPjs development and testing relied on the following PDP-11 publications:
|
||||||
|
|
||||||
|
- [LISTING OF PDP-11 ABSOLUTE LOADER (June 1975)](http://archive.pcjs.org/pubs/dec/pdp11/pc11/Absolute_Loader_Listing_Jun75.pdf)
|
||||||
|
- [CZQMCF0 0-124K MEM EXER 16K (Feb 1978)](http://archive.pcjs.org/pubs/dec/pdp11/pc11/Mem-Exer-16k_Feb78.pdf)
|
||||||
|
- [PDP-11 Paper Tape Software Handbook (Apr 1976)](http://archive.pcjs.org/pubs/dec/pdp11/pc11/Paper_Tape_Software_Handbook.pdf)
|
||||||
13
pubs/dec/pdp11/rk11/README.md
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: DEC PDP-11 RK11 Disk Controller
|
||||||
|
permalink: /pubs/dec/pdp11/rk11/
|
||||||
|
---
|
||||||
|
|
||||||
|
DEC PDP-11 RK11 Disk Controller
|
||||||
|
---
|
||||||
|
|
||||||
|
PDPjs development and testing relied on the following PDP-11 publications:
|
||||||
|
|
||||||
|
- [CXRKAG0 DEC/X11 RK11 MODULE (Sep 1978)](http://archive.pcjs.org/pubs/dec/pdp11/rk11/AC-E676G-MC_CXRKAG0-RK11_Sep78.pdf)
|
||||||
|
- [RK11-D and RK11-E Moving Head Disk Drive Controller Manual (Feb 1975)](http://archive.pcjs.org/pubs/dec/pdp11/rk11/EK-RK11D-MM-002.pdf)
|
||||||
12
pubs/dec/pdp11/rl11/README.md
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: DEC PDP-11 RL11 Disk Controller
|
||||||
|
permalink: /pubs/dec/pdp11/rl11/
|
||||||
|
---
|
||||||
|
|
||||||
|
DEC PDP-11 RL11 Disk Controller
|
||||||
|
---
|
||||||
|
|
||||||
|
PDPjs development and testing relied on the following PDP-11 publications:
|
||||||
|
|
||||||
|
- [RL01/RL02 User Guide (Sep 1981)](http://archive.pcjs.org/pubs/dec/pdp11/rl11/EK-RL012-UG-005_Sep81.pdf)
|
||||||