Looking for a paper tape reader/writer

Tony Duell ard at p850ug1.demon.co.uk
Tue Jun 27 16:47:56 CDT 2006


> Be aware:  The Facit 4070 comes in two versions the 'DTL' version and the 'TTL'
> version.  The signal levels are a bit different.  The TTL version is the later

On paper, yes :-). But I've never had any problems linking a DTL version 
to TTL logic (I have at least 3 of these punches, one TTL, 2 DTL IIRC).

> one, and has easier level signals.  Mine was the DTL one and needs some
> clamping zener diodes to make it all work.
> 
> If you do get one with a serial option, note that it will probably cost a
> bit more (I've seen $100).  Without is much cheaper.  The schematics are
> on bitsavers.  You might want to print them out on large (11x17 inch)
> paper they look nicer that way.

Fortunately, I have 2 versions of the service manual on paper. The later 
one covers 3 different logic board versions (I think it's one DTL and two 
TTL ones), the earlier one covers only a DTL board, but it better on the 
mechanical side...


> 
> As for the reader, that is another story.  I got some off of eBay as well, but
> I have yet to get them all interfaced up.  The PeeCee really has no general
> input port (with controls and the like).

_Years_ ago I made a little interface to link a Trand reader to a PC 
parallel port. I've dug out the schematic and software (in turbo pascal), 
here they are  :

     Trend HSR500 (or UDR700) - PC printer port interface
     ----------------------------------------------------
      +5v            +5V
      ---            ---
       |              |
23 >---+    17 >------+
(+5v)       (SpktE)   |
                      |
            10 >------+
            (ChanE)   |
                     --- 0.1uF
                     ---
                      |
21 >---+    16 >------+---W----o 24
(Gnd)  |    (ChanI)   |          (Gnd)
      ---            ---         <Gnd>
      ///            ///

        1 o----------------+
        (Stb)              |
        <Step>             |
                           |          +-----------< 15
        +----------+       o          |           (TransportE)
        |          |   ----------     |
       ---         |   |   S    |     |      |\
       ///         +---|D      Q|-----+------| >o---Or---o 15
             |\        |        |            |/          (Error)
18 >---------| >o------|>       |o            '04f       <Ready>
(Spkt)       |/        |   R    |
              '04a     ----------
                           o   '74b
                           |
                           |   +5v
                           |   ---
                           |    |
                           +----+



                        +----------------< 14
                        |                (Drive L)
                 |\     |    |\
 3 o------R------| >o---+----| >o---------< 13
 (D1)            |/          |/           (Drive R)
 <Direction>      '04b        '04c

                    '157
                 --------------
                 |            |
20 >-------------|0           |
(Ch1)            |           Y|--------Y----o 13
                 |     a      |             (Sel)
19 >-------------|1           |             <Bit0>
(Ch5)            |------------|
                 |            |
 9 >-------------|0           |
(Ch2)            |           Y|--------Gn---o 12
                 |     b      |             (PE)
 6 >-------------|1           |             <Bit1>
(Ch6)            |------------|
                 |            |
 7 >-------------|0           |
(Ch3)            |           Y|--------Bu---o 10
                 |     c      |             (Ack)
22 >-------------|1           |             <Bit2>
(Ch7)            |------------|
                 |            |
 8 >-------------|0           |   |\
(Ch4)            |           Y|---| >o--Pu---o 11
                 |      d     |   |/         (Busy)
24 >-------------|1           |    '04d      <Bit3>
(Ch8)            |            |
                 | S       E  |
                 --------------
                   |       o
                   |       |
 2 o---------------+       |
 (D0)                     ---
 <NybbleSel>              ///

 Note:
 >--- represents pins on the Trend edge connector. Signal names in ()

 o---- represents pins on the D25 plug for the PC printer port.
       IBM signal names in (). PTR interface signals in <>



unit PTR;
{Operate Trend paper tape reader on LPT1:}
{Port bit allocations
Write :
Port_base     : D0 - select nybble to read (1 = high nybble)
                D1 - direction (1=reverse)
Port_base + 2 : D0 - Pulse to step reader
Read  :
Port_base + 1 : D3 - Reader ready (1 = ready)
                D4-D7 - Nybble read }

interface
function read_no_skip : byte;
{Read 1 byte from the PTR without stepping it}
function read_ptr (direction:integer) : byte;
{Read 1 byte from the PTR, and move the tape. Set direction
 to 0 for forward (R-L) movement, 1 for reverse (L-R) movement}

implementation

const Port_base = $378; {Address of PTR port}

function read_no_skip : byte;
{Read one byte from the PTR without stepping it}
var character : byte;
begin;
  port[Port_base] := 0; {select low nybble}
  character := (port[Port_base+1] and $f0) shr 4;
  port[Port_base] := 1; {Select high nybble}
  character := character OR (port[Port_base+1] and $f0);
  read_no_skip := not (character);
end;

function read_ptr(direction:integer) : byte;
{Step the PTR, and read the next byte from it}
begin;
  port[port_base] := 2 * (direction and 1) ; {select direction}
  port[port_base+2] := 1;   {Pulse step line}
  port[port_base+2] := 0;
  repeat;
    {Wait for ready signal}
  until (port[port_base+1] and 8) > 0;
  read_ptr:=read_no_skip;
end;

end.

Enjoy!

-tony



More information about the cctalk mailing list