Paper tape punch definitions, and publication updates
This commit is contained in:
parent
039c6c8ef1
commit
c92b1521f3
9 changed files with 84 additions and 37 deletions
|
|
@ -42,7 +42,7 @@ p. 155, "PAPER TAPE SOFTWARE", the following software was available on paper tap
|
|||
- [IOX](iox/) (PDP-11 Input/Output eXecutive)
|
||||
- [PDP-11 BASIC](basic/) (Beginners All-purpose Symbolic Instruction Code)
|
||||
|
||||
There was a separate DEC publication, [PDP-11 Paper Tape Software Handbook](http://archive.pcjs.org/pubs/dec/pdp11/pc11/Paper_Tape_Software_Handbook.pdf),
|
||||
There was a separate DEC publication, [PDP-11 Paper Tape Software Handbook](http://archive.pcjs.org/pubs/dec/pdp11/other/PDP11_Paper_Tape_Software_Handbook_1976.pdf),
|
||||
that described all of the above software in greater detail, and it included some programs that the 1971 Handbook listed under
|
||||
"Disk Operating System" instead of "Paper Tape System", such as:
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ we know about the "Absolute Format":
|
|||
[Other sites](http://www.retrocmp.com/stories/dec-pc05-papertape/242-dec-pc05-working-with-paper-tapes)
|
||||
have referred to this tape format as the "Standard Absolute" format, but I've not found that terminology
|
||||
used in any DEC publication. In fact, I think that term may have arisen from a misreading of instructions
|
||||
found in DEC manuals like the ["MEM EXER 16K" Diagnostics Manual](http://archive.pcjs.org/pubs/dec/pdp11/pc11/Mem-Exer-16k_Feb78.pdf):
|
||||
found in DEC manuals like the ["MEM EXER 16K" Diagnostics Manual](http://archive.pcjs.org/pubs/dec/pdp11/diags/AC-9045F-MC_CZQMCFO_MEM_EXER_16K_Feb78.pdf):
|
||||
|
||||
Load the program using any standard absolute loader.
|
||||
|
||||
|
|
@ -54,5 +54,5 @@ for which a specific address has been selected, based on the amount of RAM prese
|
|||
PCjs has archived the following Absolute Loader resources:
|
||||
|
||||
- [Absolute Loader](DEC-11-L2PC-PO.json)
|
||||
- [LISTING OF PDP-11 ABSOLUTE LOADER (June 1975)](http://archive.pcjs.org/pubs/dec/pdp11/pc11/Absolute_Loader_Listing_Jun75.pdf)
|
||||
- [LISTING OF PDP-11 ABSOLUTE LOADER (June 1975)](http://archive.pcjs.org/pubs/dec/pdp11/other/DEC-11-UABLA_ABSOLUTE_LOADER_LISTING_Jun75.pdf)
|
||||
- "APPENDIX D: THE BOOTSTRAP AND ABSOLUTE LOADERS" from the [PDP-11 BASIC PROGRAMMING MANUAL (December 1970)](http://archive.pcjs.org/pubs/dec/pdp11/basic/BASIC_Programming_Manual_Dec70.pdf)
|
||||
|
|
|
|||
|
|
@ -44,3 +44,6 @@ used to control the device, such as choosing which tape should be "loaded" into
|
|||
</control>
|
||||
</device>
|
||||
```
|
||||
|
||||
For details about the PC11 hardware, we relied upon the [PDP-11 Peripherals Handbook (1976)](http://archive.pcjs.org/pubs/dec/pdp11/other/PDP11_Peripherals_Handbook_1976.pdf),
|
||||
p. 4-376 (p. 408 of the PDF).
|
||||
|
|
|
|||
|
|
@ -665,7 +665,7 @@ var PDP11 = {
|
|||
PVEC: 0o074, // punch vector
|
||||
PRS: { // 177550: PC11 (and PR11) Reader Status Register
|
||||
RE: 0x0001, // Reader Enable (W/O)
|
||||
RIE: 0x0040, // Reader Interrupt Enable (allows the DONE and ERROR bits to trigger an interrupt)
|
||||
IE: 0x0040, // Reader Interrupt Enable (allows the DONE and ERROR bits to trigger an interrupt)
|
||||
DONE: 0x0080, // Done (R/O)
|
||||
BUSY: 0x0800, // Busy (R/O)
|
||||
ERROR: 0x8000, // Error (R/O)
|
||||
|
|
@ -678,15 +678,14 @@ var PDP11 = {
|
|||
MASK: 0x00FF // Data
|
||||
},
|
||||
PPS: { // 177554: PC11 Punch Status Register
|
||||
/*
|
||||
* TODO: Flesh this out if/when we add Paper Tape Punch support
|
||||
*/
|
||||
IE: 0x0040, // Interrupt Enable
|
||||
RDY: 0x0080, // Ready
|
||||
ERROR: 0x8000, // Error (eg, no tape in punch, or punch has no power)
|
||||
WMASK: 0x0040, // bits writable
|
||||
BAUD: 600
|
||||
},
|
||||
PPB: { // 177556: PC11 Punch Buffer Register
|
||||
/*
|
||||
* TODO: Flesh this out if/when we add Paper Tape Punch support
|
||||
*/
|
||||
MASK: 0x00FF // Data
|
||||
}
|
||||
},
|
||||
RK11: { // RK11 Disk Controller
|
||||
|
|
|
|||
|
|
@ -78,6 +78,8 @@ class PC11 extends Component {
|
|||
|
||||
this.regPRS = 0; // PRS register
|
||||
this.regPRB = 0; // PRB register
|
||||
this.regPPS = PDP11.PC11.PPS.ERROR; // PPS register (TODO: signals an error until we implement the punch)
|
||||
this.regPPB = 0; // PPB register
|
||||
this.iTapeData = 0; // buffer index
|
||||
this.aTapeData = []; // buffer for the PRB register
|
||||
this.sTapeSource = PC11.SOURCE.NONE;
|
||||
|
|
@ -824,7 +826,7 @@ class PC11 extends Component {
|
|||
this.displayProgress(this.iTapeData / this.aTapeData.length * 100);
|
||||
this.regPRS |= PDP11.PC11.PRS.DONE;
|
||||
this.regPRS &= ~PDP11.PC11.PRS.BUSY;
|
||||
if (this.regPRS & PDP11.PC11.PRS.RIE) {
|
||||
if (this.regPRS & PDP11.PC11.PRS.IE) {
|
||||
this.cpu.setIRQ(this.irqReader);
|
||||
}
|
||||
}
|
||||
|
|
@ -868,7 +870,7 @@ class PC11 extends Component {
|
|||
*/
|
||||
if (this.regPRS & PDP11.PC11.PRS.ERROR) {
|
||||
data &= ~PDP11.PC11.PRS.RE;
|
||||
if (this.regPRS & PDP11.PC11.PRS.RIE) {
|
||||
if (this.regPRS & PDP11.PC11.PRS.IE) {
|
||||
this.cpu.setIRQ(this.irqReader);
|
||||
}
|
||||
} else {
|
||||
|
|
@ -914,6 +916,63 @@ class PC11 extends Component {
|
|||
writePRB(data, addr)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* readPPS(addr)
|
||||
*
|
||||
* @this {PC11}
|
||||
* @param {number} addr (eg, PDP11.UNIBUS.PPS or 177554)
|
||||
* @return {number}
|
||||
*/
|
||||
readPPS(addr)
|
||||
{
|
||||
return this.regPPS;
|
||||
}
|
||||
|
||||
/**
|
||||
* writePPS(data, addr)
|
||||
*
|
||||
* NOTE: This was originally added ONLY because when RT-11 v4.0 copies from device "PC:" (the paper tape reader),
|
||||
* it executes the following code:
|
||||
*
|
||||
* 016010: 005037 177550 CLR @#177550 ;history=2 PRS
|
||||
* 016014: 005037 177554 CLR @#177554 ;history=1
|
||||
*
|
||||
* and as you can see, without this PPS handler, a TRAP to 4 would normally occur. I guess since we claim to be
|
||||
* a PC11, that makes sense. But what about PDP-11 machines with only a PR11 (ie, a reader-only unit)?
|
||||
*
|
||||
* @this {PC11}
|
||||
* @param {number} data
|
||||
* @param {number} addr (eg, PDP11.UNIBUS.PPS or 177554)
|
||||
*/
|
||||
writePPS(data, addr)
|
||||
{
|
||||
this.regPPS = (this.regPPS & ~PDP11.PC11.PPS.WMASK) | (data & PDP11.PC11.PPS.WMASK);
|
||||
}
|
||||
|
||||
/**
|
||||
* readPPB(addr)
|
||||
*
|
||||
* @this {PC11}
|
||||
* @param {number} addr (eg, PDP11.UNIBUS.PPB or 177556)
|
||||
* @return {number}
|
||||
*/
|
||||
readPPB(addr)
|
||||
{
|
||||
return this.regPPB;
|
||||
}
|
||||
|
||||
/**
|
||||
* writePPB(data, addr)
|
||||
*
|
||||
* @this {PC11}
|
||||
* @param {number} data
|
||||
* @param {number} addr (eg, PDP11.UNIBUS.PPB or 177556)
|
||||
*/
|
||||
writePPB(data, addr)
|
||||
{
|
||||
this.regPPB = (this.regPPB & ~PDP11.PC11.PPB.WMASK) | (data & PDP11.PC11.PPB.WMASK);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -944,7 +1003,9 @@ PC11.CSSCLASS = {
|
|||
*/
|
||||
PC11.UNIBUS_IOTABLE = {
|
||||
[PDP11.UNIBUS.PRS]: /* 177550 */ [null, null, PC11.prototype.readPRS, PC11.prototype.writePRS, "PRS"],
|
||||
[PDP11.UNIBUS.PRB]: /* 177552 */ [null, null, PC11.prototype.readPRB, PC11.prototype.writePRB, "PRB"]
|
||||
[PDP11.UNIBUS.PRB]: /* 177552 */ [null, null, PC11.prototype.readPRB, PC11.prototype.writePRB, "PRB"],
|
||||
[PDP11.UNIBUS.PPS]: /* 177554 */ [null, null, PC11.prototype.readPPS, PC11.prototype.writePPS, "PPS"],
|
||||
[PDP11.UNIBUS.PPB]: /* 177556 */ [null, null, PC11.prototype.readPPB, PC11.prototype.writePPB, "PPB"]
|
||||
};
|
||||
|
||||
if (NODE) module.exports = PC11;
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ directory. If a PDF was not searchable, it was "OCR'ed" before being archived b
|
|||
- [CEQKCE0 11/70 INSTRUCTION EXERCISER (May 1980)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AC-7994E-MC_CEQKCE0_1170_INSTRUCTION_EXERCISER_May80.pdf) [[Original PDF](http://bitsavers.org/pdf/dec/pdp11/microfiche/ftp.j-hoppe.de/bw/gh/AH-7996E-MC__PDP11-70-74__11-70_INST_EXR__CEQKCE0__%28C%2975,80.pdf)]
|
||||
- [CFKAAC0 11/34 BASIC INSTRUCTION TEST (Oct 1978)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AC-8041C-MC_CFKAAC0_1134_BSC_INST_TST_Oct78.pdf) [[Original PDF](http://bitsavers.org/pdf/dec/pdp11/xxdp/diag_listings/1134/AC-8041C-MC_CFKAAC0-1134-Bsc-Inst-Tst_Oct78.pdf)]
|
||||
- [CXCPAG0 INSTRUCTION TEST (Sep 1978)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AC-E664G-MC_CXCPAG0_PROCESSOR_TEST_Sep78.pdf) [[Original PDF](http://bitsavers.org/pdf/dec/pdp11/xxdp/x11_listings/AC-E664G-MC_CXCPAG0-Processor-test_Sep78.pdf)]
|
||||
- [CZQMCF0 0-124K MEM EXER 16K (Feb 1978)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AC-9045F-MC_CZQMCFO_MEM_EXER_16K_Feb78.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)
|
||||
|
||||
|
|
@ -66,12 +67,6 @@ directory. If a PDF was not searchable, it was "OCR'ed" before being archived b
|
|||
- [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)
|
||||
|
|
@ -89,6 +84,7 @@ directory. If a PDF was not searchable, it was "OCR'ed" before being archived b
|
|||
|
||||
[Assorted PDP-11 Handbooks](other/)
|
||||
|
||||
- [LISTING OF PDP-11 ABSOLUTE LOADER (June 1975)](http://archive.pcjs.org/pubs/dec/pdp11/other/DEC-11-UABLA_ABSOLUTE_LOADER_LISTING_Jun75.pdf)
|
||||
- [PDP-11 Paper Tape Software Handbook (1976)](http://archive.pcjs.org/pubs/dec/pdp11/other/PDP11_Paper_Tape_Software_Handbook_1976.pdf)
|
||||
- [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)
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ PDPjs development and testing relied on the following PDP-11 diagnostic publicat
|
|||
- [CEQKCE0 11/70 INSTRUCTION EXERCISER (May 1980)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AC-7994E-MC_CEQKCE0_1170_INSTRUCTION_EXERCISER_May80.pdf) [[Original PDF](http://bitsavers.org/pdf/dec/pdp11/microfiche/ftp.j-hoppe.de/bw/gh/AH-7996E-MC__PDP11-70-74__11-70_INST_EXR__CEQKCE0__%28C%2975,80.pdf)]
|
||||
- [CFKAAC0 11/34 BASIC INSTRUCTION TEST (Oct 1978)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AC-8041C-MC_CFKAAC0_1134_BSC_INST_TST_Oct78.pdf) [[Original PDF](http://bitsavers.org/pdf/dec/pdp11/xxdp/diag_listings/1134/AC-8041C-MC_CFKAAC0-1134-Bsc-Inst-Tst_Oct78.pdf)]
|
||||
- [CXCPAG0 INSTRUCTION TEST (Sep 1978)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AC-E664G-MC_CXCPAG0_PROCESSOR_TEST_Sep78.pdf) [[Original PDF](http://bitsavers.org/pdf/dec/pdp11/xxdp/x11_listings/AC-E664G-MC_CXCPAG0-Processor-test_Sep78.pdf)]
|
||||
- [CZQMCF0 0-124K MEM EXER 16K (Feb 1978)](http://archive.pcjs.org/pubs/dec/pdp11/diags/AC-9045F-MC_CZQMCFO_MEM_EXER_16K_Feb78.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/).
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ DEC PDP-11 Assorted Handbooks
|
|||
|
||||
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/other/DEC-11-UABLA_ABSOLUTE_LOADER_LISTING_Jun75.pdf)
|
||||
- [PDP-11 Paper Tape Software Handbook (1976)](http://archive.pcjs.org/pubs/dec/pdp11/other/PDP11_Paper_Tape_Software_Handbook_1976.pdf)
|
||||
- [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)
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
---
|
||||
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)
|
||||
Loading…
Reference in a new issue