How to connect a PC to a Videocrypt decoder
-------------------------------------------

1994-04-11


The easiest way to connect your PC to a decoder is to use the card slot
as an interface and connect it with a voltage converter (MAX232) and a
TTL open collector driver (74LS07) to the RS-232 serial port. This way,
you don't even have to open the decoder.

WARNING: In order to build the adapter described below, you will at
         least require some digital electronics experience. If
         you don't understand, how the described circuitry works,
         better don't use it! Errors might in the worst case damage
         both your PC and your TV system.

The chip cards used by the Videocrypt pay-TV decoders follow exactly
the specification ISO 7816 (you might find this international standard
in a local library, if you are interested). Also, the protocol is the
asynchronous half-duplex T=0 protocol with active low reset and inverse
convention as defined in the standard.

According to ISO, a chip card is 85.60 mm long, 53.98 mm high, 0.76 mm
thick and the edges are rounded with a radius of 3.18 mm. It has eight
defined contact areas (C1 - C8 in the diagram below), each of which is
at least 2 mm wide and 1.7 mm heigh:


	   ______________________________________
	 /                                        \
	|                                          |
	|                                          |
	|    C1   C5                               |
	|    C2   C6                               |
	|    C3   C7                               |
	|    C4   C8                               |
	|                                          |
	|                                          |
	|                                          |
	 \________________________________________/



These contacts have the following purpose:


	C1	VCC	Supply voltage (+5 V, max. 200 mA)
	C2	RST	Reset signal
	C3	CLK	Clock signal
	C4	-	reserved
	C5	GND	Ground
	C6	VPP	Programming voltage
	C7	I/O	Data input/output
	C8	-	reserved


The following table gives the precise location of the contact areas.
These areas are only minimum areas, the actual contacts might be larger
but must of course be properly isolated from each other.

In the following table,

	A	represents the maximum distance between the card's left
		edge and the contact area's left edge,
	B	represents the minimum distance between the card's left
		edge and the contact area's right edge,
	C	represents the maximum distance between the card's top
		edge and the contact area's upper edge,
	D	represents the minimum distance between the card's top
		edge and the contact area's lower edge.


		  A	  B	  C	  D
      -----------------------------------------
	C1	10.25	12.25	19.23	20.93
	C2	10.25	12.25	21.77	23.47
	C3	10.25	12.25	24.31	26.01
	C4	10.25	12.25	26.85	28.55
	C5	17.87	19.87	19.23	20.93
	C6	17.87	19.87	21.77	23.47
	C7	17.87	19.87	24.31	26.01
	C8	17.87	19.87	26.85	28.55


Older card systems had these contacts located higher (distance from the
top between 9.07 mm and 18.39 mm, distance from the left identical). As
some decoders support both contact area alternatives, make sure that
this old contact area is properly isolated or you'll produce a short
circuit when inserting your card. You might have noticed, that the
contacts are arranged in the usual 0.1 inch (= 2.54 mm) system (i.e.
like the pins of a 8-pin DIL chip).

You can produce your card adapter by making a PCB with contact areas at
the above listed locations. The PCB must have precisely the thickness
and width of a real card, but it may be longer, so that you can locate
the interface electronics on the part which remains outside the slot.
Cards are inserted in most decoders with the contacts on the bottom
side, but check this on your system. Normal PCBs are about 1.3 mm think
and won't fit into the slot. Either you get a PCB which is about 0.8 mm
thick or you make it thinner, e.g. by using a sander machine. Perhaps
you find also ready to use test cards with connectors instead of
producing your own or you simply open the decoder and clamp contacts to
the resistors near the card slot (not recommended: there are unisolated
230 V parts inside the decoder, this may kill you if you are not very
carefull!!!).

The adapter will only need the card contacts I/O, GND, RST and VCC. On
the RS-232 side, only the following contacts will be used:

		   Sub-D 25-pin	   Sub-D 9-pin
      ---------------------------------------------------------
	TxD		2		3	transmit data
	RxD		3		2	receive data
	CTS		5		8	clear to send
	DSR		6		6	data set ready
	GND		7		5	ground
	DCD		8		1	carrier detect (here: reset)
	DTR		20		4	data terminal ready


The pins DTR, DSR and CTS are not actually needed, they are just
connected together in the adapter, so that defined levels are available
on them because some software might need this.

The following components are necessary for the adapter


	1	PCB or test card
	1	IC Maxim MAX232
	1	IC 74LS07 (or only a 7407)
	4	capacitors 22 uF
	1	female Sub-D connector (9 or 25-pin)


The MAX232 converts the RS-232 levels (about +10 and -10 V) to TTL
voltage  (0 and +5 V) and vice versa without requiring anything else
than +5 V power supply. This chip contains two TTL->RS-232 and two
RS-232->TTL drivers and needs four external 22 uF capacitors in order
to generate the RS-232 voltage internally. The adapter electronic gets
its power supply from the decoder's VCC line or you can use an external
5 V supply if you wish.

The card slot's RST line is connected using one of the TTL->RS-232
drivers in the MAX232 to DCD, so that the software and the decoder can
easily resynchronize in case of a protocol error.

The I/O line is a bidirectional half-duplex asynchronous TTL level
serial port that is operated in a Videocrypt system with 9600 bits/s.
We can connect this line to a MAX232 TTL input driver (which is
connected to RxD and sends bytes to the PC) in order to receive data
from the decoder. The TxD line's signal is converted in the MAX232 to
TTL level and is connected with an open collector TTL driver to I/O.
This open collector driver (one of six in the 74LS07) has a high
impedance output during idle state and 1 and is connected to GND during
a 0 on it's input. As there is already a pull-up resistor to +5 V on
I/O in the decoder, this circuitry guarantees, that the adapter is in
high impedance state if the TxD line is idle and delivers the correct
voltage if the PC sends bytes and the decoder is in reception mode. As
we don't connect totem-pole or tristate outputs to I/O, a short circuit
should be impossible in the adapter.

The following diagram describes the whole interface:


              +-------------+               
  +-----------|1     V    16|----o +5V (VCC)
 +|          +|             |
 === +5V o-||-|2  MAX232  15|----o GND (card & RS-232)
  |           |             |
  +-----------|3      +---14|----o DCD                    +-<-o DTR
           +  |       |     |                             |
     +---||---|4      | +-13|-                            +->-o DSR
     |        |       | v   |                             |
     +--------|5      | +-12|-                            +->-o CTS
          +   |       |     |
     GND o-||-|6      +-<-11|----o RST
              |             |
     RxD o----|7  ---<--- 10|-------------------+----o I/O
              |             |              |\   |
     TxD o----|8  --->---  9|--------------| |--+
              +-------------+             1|/ 2
                                          74LS07

                                          (also connected to 74LS07:
                                           pin 7=GND, pin 14=VCC)


Pay attention to the polarity of the capacitors (marked with a + in the
diagram next to each capacitor)!

As a side effect of this simple interface design, every byte sent by
the PC is at the same time also received by the PC. Consequently, you
can test the circuit with a terminal emulator by switching of local
echo: if you still see every typed immediately character on the screen,
the interface should be all right. Software must be capable of dealing
with this echo from the interface. As specified in the ISO standard,
the decoder activates VCC only shortly before a reset and deactivates
VCC if an answer-to-reset packet isn't received in time after the reset
signal. If no external 5 V supply is used, the software might have to
wait a few milliseconds after the reset before starting with the
answer-to-reset, in order to allow the capacitors to load up and
provide a stable operation of the MAX232.

A few final hints:

If you have a larger distance between the PC an the decoder, then
locate the adapter electronic near the decoder, because the RS-232
interface is much more suitable for long cables than the TTL signals. 
Cables of 12 m length have sucessfully been used and you shouldn't have
problems with RS-232 cables up to 15-30 m length. (If you need much
longer cables, you should use RS-422 line drivers, e.g. the Am26LS31
and Am26LS32 from AMD, which allow over 1 kilometer cable length.)

You can also use this adapter circuit to allow a PC to listen to the
data traffic between a decoder and a real card. Just connect the real
card and the adapter parallel to the decoder and don't let the PC
software transmit anything. Suitable card slots are available for
little money from various manufacturers (e.g. Amphenol). Videocrypt
uses the inverse convention data format, i.e., you have to reverse and
invert the bits in each byte in the PC software in order to get the
correct byte value. For more details about the protocol, check ISO
7816-3.

There are many alternative ways to build this interface. E.g. instead
of a MAX232, an LT1081 from Linear Technology could be applied or the
74LS07 could be replaced by two open collector inverters in the 74LS05
and a 2.2k pull-up resistor between them, etc.

Normally, both the RS-232 and the decoder slot should not be harmed by
short circuits, but be careful. Also try to avoid electrostatic voltage
(e.g. generated by walking on a suitable carpet) near the interface,
because discharges cause easily decoder or PC crashes and could
theoretically even harm the hardware (the MAX232 is a CMOS chip as are
some of the chips in the decoder). And please doublecheck everything I
have written here, because I don't want to be responsible if anything
goes wrong just because I wrote something wrong. DON'T USE THIS DESIGN
IF YOU DON'T UNDERSTAND IT.