• Please review our updated Terms and Rules here

PDP-11: High-speed paper tape reader

joev

Member
Joined
Feb 12, 2020
Messages
15
Location
Providence, RI, USA
I'm playing around with SimH, simulating a small PDP-11 system with a high-speed paper tape reader, and I have a question about how the real hardware worked.

Real paper tapes have a blank leader section for a few inches so the operator can mount the tape and pull a few inches through, so it will re-fold itself properly as it's read. After a tape is mounted like this, does reading the tape return a series of zero bytes until the first "real" data byte is read? Or is there something about the tape or reader that can tell where the first real byte is?
 
I'm playing around with SimH, simulating a small PDP-11 system with a high-speed paper tape reader, and I have a question about how the real hardware worked.

Real paper tapes have a blank leader section for a few inches so the operator can mount the tape and pull a few inches through, so it will re-fold itself properly as it's read. After a tape is mounted like this, does reading the tape return a series of zero bytes until the first "real" data byte is read? Or is there something about the tape or reader that can tell where the first real byte is?

The tape reader does not interpret the data.
So if you start it on a 'blank' (ie, sprocket hole only punched) section of tape it will read/return a sequence of zero bytes.
When it hits the first non-zero byte it will (obviously) return that and keep going until stopped, or it runs off the end of the tape.
All the tape movement/reading is under CPU/program control.

Don

Many paper tapes would punch the filename or diagnostic ID in the tape using a 5x7 character display.
The leader section where the user might load the tape into the reader to start reading might be either an all 1s (octal 377) or all 0s (octal 000) block of punches, depending on the program.
 
The paper tape reading in SimH isn’t well done. As the OP points out, DEC tapes traditionally has ‘garbage’ in the form of human-readable identification in the leader and a user would naturally position the tape appropriately. SimH provides no facilities for this. In practice though most if not all of the pseudo tape files around are already cleaned up to (as a minimum) blank leader or valid data.
 
One way to check whether tape files have text on the front is to use my ptap2dxf utility which can dump out a graphical representation of the paper tape.
For example say you had a directory full of ptap, bin etc. tape files and wanted to very quickly determine which started with text:

Code:
C:\Samples>dir
. . .
16-Feb-20  09:59 AM    <DIR>          .
16-Feb-20  09:59 AM    <DIR>          ..
16-Feb-20  09:58 AM             1,024 blah.ptap
19-Apr-19  05:25 PM            10,180 DEC-11-AJPB-PB.ptap
19-Apr-19  05:25 PM               183 DEC-11-L2PC-PO.ptap
               3 File(s)         11,387 bytes

C:\Samples>for %x in (*.ptap)  do (
More? echo %x
More? ptap2dxf --dryrun --range=0,30 %x
More? )

C:\Samples>(
echo blah.ptap
 ptap2dxf --dryrun --range=0,30 blah.ptap
)
blah.ptap
+---------+
|     .   |
| OOOO.OOO|
| O  O.  O|
| O  O.  O|
| O  O.  O|
|  OO .OO |
|     .   |
|     .   |
|     .   |
|     .   |
| OOOO.OOO|
| O   .   |
| O   .   |
|     .   |
|     .   |
| OOOO.OO |
|    O.  O|
|    O.  O|
|    O.  O|
| OOOO.OO |
|     .   |
|     .   |
| OOOO.OOO|
|    O.   |
|    O.   |
|    O.   |
| OOOO.OOO|
|     .   |
|     .   |
|     .   |
+---------+
Joiner 0000: data byte 00000000  absolute position 00000030

C:\Samples>(
echo DEC-11-AJPB-PB.ptap
 ptap2dxf --dryrun --range=0,30 DEC-11-AJPB-PB.ptap
)
DEC-11-AJPB-PB.ptap
+---------+
|     .   |
|     .   |
|     .   |
|     .   |
|     .   |
|     .   |
|     .   |
|     .   |
|     .   |
|     .   |
|     .  O|
|     .   |
|    O.   |
|     .   |
|  O  . O |
|     .   |
|     .OOO|
| O   .  O|
|O   O.O O|
|     .  O|
|     .   |
|  O  .OO |
|     .   |
|     .   |
|     .   |
| OOO .OOO|
|     .   |
|  O  .   |
|     .OO |
|     .OO |
+---------+
Joiner 0000: data byte 00000000  absolute position 00000030

C:\Samples>(
echo DEC-11-L2PC-PO.ptap
 ptap2dxf --dryrun --range=0,30 DEC-11-L2PC-PO.ptap
)
DEC-11-L2PC-PO.ptap
+---------+
|OOO O.  O|
|OOO O.  O|
|OOO O.  O|
|  OOO.O O|
|     .   |
|     .   |
|OO   .OO |
|   O .  O|
|O O  .OO |
|  O O.  O|
|OO   .O O|
|   O .  O|
|OO   .O O|
| OO  .O O|
| O  O. O |
|     .   |
|     .  O|
|    O. O |
|OO  O.OO |
|   O .OOO|
| OOOO.   |
|OOOOO.OOO|
|    O.OO |
|    O.O  |
|     . O |
|O    .OOO|
|    O.OO |
|    O. O |
|     . OO|
|     .  O|
+---------+
Joiner 0000: data byte 00000000  absolute position 00000030

C:\Samples>
The multiline FOR..DO is to allow the ECHO to print the filename before running the utility. The output could be collected or simply piped through more/less.
The example is just dumping the first 30 bytes but adjust as necessary if there appears to be a lot of leader.
 
One way to check whether tape files have text on the front is to use my ptap2dxf utility which can dump out a graphical representation of the paper tape.
This is great! I found your project earlier when doing some research, thinking about if it's feasible to build a paper tape punch that's reasonably fast. And I came up with nothing, so I think I'll do all my paper tape work virtually.
 
Back
Top