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