nummular tEKNO-----------d'RODEO
begins! lots o' wires!d'Power be with y', d'hling!
stAYin', orBITin' d'dust------------------d'Clintches fromda east-Woods
if slap & tickle aint d'same no more.
forGETmeNOT d'aling-------------last bites d'machine! da's all ph-users!
preprairY'-----------------------------------------------------on d'way
Howdy'-----------------------------------------first time to d'ranch
triX4Y'all-------'ll getcha simple ways to cool, to ph-ool ole chipcard
outta d'freeza still in d'boxes------------------slowly easin into bIZZ
mORE Rawhide----------------------y' aint diggin ditches for cables yet
e & m r guarantees personalised services 'n' relaxed manners so you
arrive in better shape for bussines. - Lemon fresh!
we speak english, d'hrling!
phOLKS & mORE preserves all rights to changes of programs!
nummular tEKNO............
d'RODEO begins! lots o' wires, d'hling!
Applyin' d'vices o' a lady exchange operator, d'arts 'n' crafts of
receivin' ya collect-calls in d'phonebooth next door
HUNTelycom
phreaker briefing\ /phonecard
G4rCE
levels
phoneCHIP UNits/ \HUNGARIAN
bit reaDOuts wordWARE
HUNTelycom is offerin' 10 000 HUFs to coppers for d'arrest o'
each fraudulent caller, mindy' it's about a third o' d'officers monthly
pay. 'ey put out d' call for a 'eadhunt 'coz as d' joke says if a Hun
steps into a revolvin' door after y' he will still be gettin'out first.
As a child, every hunget's trained daily to be able to perform d'trick
Only later do they happpen to find d'sand paper to thin out an PIC to
d'thickness o' ole chipcard so da it fits in 'ere as snugly as in
d'card slot o' ya public phone. Those in favor o' complicated
contraptions, after 'aving faced d'apperance o' metal detectors in
d' phone sets started replacin' metal wirin' with carbon conductors.
Ta-da-da-daa...Ta-da-da-daa...daah'ling.
Diallin' can save y' money! In H, 'ere are certain areas (exchanges)
where 'ere is an under advertised service da y' receive once y'start
diallin' an additional digit # 1 after d' number y' wished to call.
D' charges will be 1/ 3 o' d' regular. D'same useda be true for NL,
too, except y' 'ad to dial # 2. Where will #3 be workin' or #4. Da
is somethin' 4 y' independents out 'ere to find out.
From: sbausson#ensem.u-nancy.fr (Stephane BAUSSON)
Newsgroups: sci.electronics Subject: Telecard FAQ
======================================================================
What you need to know about electronics telecards
======================================================================
(C) Stephane BAUSSON - (1993-1994)
Version 1.07 (Last revised: 07-05-1994)
Email: sbausson#ensem.u-nancy.fr Smail: 4, Rue de Grand
F-88630 Chermisey
Phone: +33 29.06.09.89 France
------------------------------------------------------------------------
Any suggestions or comments about phonecards & smart-cards are welcome
------------------------------------------------------------------------
Content
---------
I ) The cards from Gemplus, Solaic, Schlumberger, Oberthur:
I-1) Introduction:
I-2) SCHEMATICS of the chip:
I-3) PINOUT of the connector:
I-4) Main features:
I-5) TIME DIAGRAMS:
I-6) Memory MAP of cards from France and Monaco:
I-5) Memory MAP of cards from other countries:
II ) The cards from ODS: (German cards)
II-1) Introduction:
II-2) Pinout:
II-3) Main features:
II-4) Time Diagrams:
II-5) Memory Map:
II-6) Electrical features:
III) Schematics of Readers:
III-1) Reader 1:
III-2) Reader 2:
IV) The program:
------------------------------------------------------------------------
I)The cards from Gemplus, Solaic, Schlumberger, Oberthur:(French cards)
======================================================================
I-1) Introduction:
------------
Since the middle of 80's have appeared a new generation of cards (the
smart-cards or chip cards ) that have replaced most of the magnetics
cards applications notably for telecom payement and also for credit
cards. These cards are far more secure than the magnetics cards, and
there are several kind of cards following the application.The simplier
ones are the Simple Memory cards like the one used as Telecard for the
telecom payement in the public phone-booths (Generaly all the memory
content is readable,and there is a maker-area that is unwritable), then
there are more sofisticated cards: Memeory Cards with some area read
protected by a key, these cards can contain some private informations
in the read-protected area. At the end there are microprocessor-cards
(cards working following the ISO-7816 protocol), that are the safiest
ones since these cards have their own internal Operating System that
prevent I/O if the Pin code has not been entered in the cards before
(These cards are used when confidentiality is needed, like in bank
cards, crypted TV access cards, health cards, etc ... ).
About telecards,even if these cards are the less safe ones, don't think
that you are going to phone freely for that, in fact no. All the data
are readable since there are no confidential data inside, the the cards
are well done enough to be very secure for the payement of telecom
communications in public booth.
So, what is a phonecard exactly? In fact generaly it's a 256 bits EPROM
(French likde cards), or a 128 bits EEPROM (German like cards) with a
serial output and some other control pins.
Then why can it not be refilled?Well,indeed to refill the card you will
have to erase the cards with UV, knowing that the cards is coated in UV
opaqued resin that prevent UV from reaching the silicium chip, and even
if you could to erase the chip you will have to program the manufactuer
area that is write-protected by a lock-out fuse that was fused after
the card programming in factory.
Neithertheless itcan be very interesting to study how these cards work,
to see which kind of data are inside and how the data are maped inside
or to see how many units are left inside for exemple.Besides there are
a great number of applications of these cards when there are used (only
for personal use of course),since you can use them as key to open a
door, or you can also use them as key to secure a program, etc ....
French Telecards have been created in 1984 and at this time construc-
tors decided to build these cards in NMOS technology but now, they
plan to change by 1994 all readers in the public booths and use CMOS
technology. Also they plan to use EEPROM to secure the cards and to
add many usefull infornations in, and you will perhaps use phone cards
to buy you bread or any thing else. These cards are called Second Gene-
ration Telecards.
.-----------------.
I-2) SCHEMATICS | |
of the chip: --|> Clk |
------------------ | _ |
--| R/W |
| |
--| Reset |
| |
--| Fuse |
| |
--| Vpp |
| |
'-. .-'
| |
.-----------------.
| Out |--serial output
'-----------------'
I-3) PINOUT of the connector:
-------------------------
AFNOR CHIP ISO CHIP
---------- --------
-------------+------------- -------------+-------------
| 8 | 4 | | 1 | 5 |
| | | | | |
+-------\ | /-------+ +-------\ | /-------+
| 7 +----+----+ 3 | | 2 +----+ + 6 |
| | | | | | | |
+--------| |--------+ +--------| |--------+
| 6 | | 2 | | 3 | | 7 |
| + +----+ | | +----+----+ |
+-------/ | \-------+ +-------/ | \-------+
| 5 | 1 | | 4 | 8 |
| | | | | |
-------------+------------- -------------+-------------
NB: only the position of the chip is
ISO standardized and not the pinout
PINOUT: 1 : Vcc = 5V 5 : Gnd
------ 2 : R/W 6 : Vpp = 21V
3 : Clock 7 : I/O
4 : Reset 8 : Fuse
I-4) Main features:
---------------
- Synchronous protocol.
- N-MOS technology.
- 256x1 bit organisation.
- 96 written protected by a lock-out fuse.
- Low power 85mW in read mode.
- 21 V programming voltage.
- Access time: 500ns
- Operating range: -100C +700C
- Ten year data rentention.
I-5) TIME DIAGRAMS:
---------------
+21V _____________
+5V ____________________________________| |__________ Vpp
: :
+5V ___________________:_____________:_________ Reset
0V ________________| : :
: : :
+5V ____ : ____ : ______:______
0V ___| |_______:_____| |________:______| : |__ Clock
: : : : : : : : :
+5V : : : : : :______:______: : _
0V ___:____:_______:_____:____:________| : |______:___ R/W
: : : : : : : : :
+5V : : :_____: :________: : : :____
0V XXXXXXXXXXXXXXXXX_____XXXXXX________XXXXXXXXXXXXXXXXXXXXXX____Out
: : : : : :<-----><---->: :
: : : : : :10 to 10 to :
: : : : : :50 ms 50ms :
Reset Bit 1 Bit2 Bit 3
card reading reading Bit2 writing to 1 reading
I-6) MEMORY MAP of cards from France and Monaco:
--------------------------------------------
Bytes Bits Binary Hexa
+-----------+-----+
1 1 --> 8 | | | ---> Builder code.
+-----------+-----+
2 9 --> 16 | 0000 0011 | $03 | ---> a french telecard
+-----------+-----+
3 17 --> 24 | | |
+-----------+-----+
4 25 --> 32 | | |
+-----------+-----+
5 33 --> 40 | | |
+-----------+-----+
6 41 --> 48 | | |
+-----------+-----+
7 49 --> 56 | | |
+-----------+-----+
8 57 --> 64 | | |
+-----------+-----+
9 65 --> 72 | | |
+-----------+-----+
10 73 --> 80 | | |
+-----------+-----+
11 81 --> 88 | | |
+-----------+-----+
12 33 --> 40 | 0001 0011 | $13 | ---> 120 units card
| 0000 0110 | $06 | ---> 50 units card
| 0000 0101 | $05 | ---> 40 units card
+-----------+-----+
13-31 97 --> 248 | | | ---> The units area:
| | | each time a unit is used,
| | | then a bit is set to "1";
| | | Generaly the first ten
| | | units are fused in
| | | factory as test.
| | |
+-----------+-----+
32 249 --> 256 | 1111 1111 | $FF | ---> the card is empty
+-----------+-----+
I-7) MEMORY MAP of the other cards:
-------------------------------
Bytes Bits Binary Hexa
+-----------+-----+
1 1 --> 8 | | |
+-----------+-----+
2 9 --> 16 | 1000 0011 | $83 | ---> a telecard
+-----------+-----+-----------+-----+
3-4 17 --> 32 | 1000 0000 | $80 | 0001 0010 | $12 | ---> 10 units
| | | 0010 0100 | $24 | ---> 22 units
| | | 0010 0111 | $27 | ---> 25 units
| | | 0011 0010 | $32 | ---> 30 units
| | | 0101 0010 | $52 | ---> 50 units
| | | 0110 0010 | $62 | ---> 60 units
| | | 1000 0010 | $82 | ---> 80 units
| 1000 0001 | $81 | 0000 0010 | $02 | --->100 untis
| | | 0010 0010 | $22 | --->120 units
| | | 0101 0010 | $52 | --->150 units
+-----------+-----+-----------+-----+
5 33 --> 40 | | | ---> $00 for sweden.
+-----------+-----+
6 41 --> 48 | | |
+-----------+-----+
7 49 --> 56 | | |
+-----------+-----+
8 57 --> 64 | | |
+-----------+-----+
9 65 --> 72 | | |
+-----------+-----+
10 73 --> 80 | | |
+-----------+-----+
11 81 --> 88 | | | ---> $11 for sweden
+-----------+-----+
12 89 --> 96 | 0001 1110 | $1E | ---> Sweden
| 0010 0010 | $22 | ---> Spain
| 0011 0000 | $30 | ---> Norway
| 0011 0011 | $33 | ---> Andorra
| 0011 1100 | $3C | ---> Ireland
| 0100 0111 | $47 | ---> Portugal
| 0101 0101 | $55 | ---> Czech Republic
| 0101 1111 | $5F | ---> Gabon
| 0110 0101 | $65 | ---> Finland
+-----------+-----+
13-31 97 --> 248 | | | ---> The units area:
| | | each time a unit is used,
| | | then a bit is set to "1";
| | | Generaly the first two units
| | | are fused in factory as test.
+-----------+-----+
32 249 --> 256 | 0000 0000 | $00 |
+-----------+-----+
II ) The cards from ODS, Giesecke & Devrient, ORGA Karten systeme,
=============================================================
Uniqua, Gemplus, Schlumberger and Oldenbourg Kartensysteme:
=============================================================
II-1) Introduction:
------------
These cards are in fact 128 bit memory in NMOS technology, and the map
of these cards are the following:
64 bit EPROM written protected (manufaturer area).
40 bit EEPROM (5x8 bits).
24 bits set to "1".
II-2) Pinout:
--------
ISO 7816-2
-------------+-------------
| 1 | 5 | Pinout:
| | | -------
+-------\ | /-------+
| 2 +----+ + 6 | 1 : Vcc = 5V 5 : Gnd
| | | | 2 : Reset 6 : n.c.
+--------| |--------+ 3 : Clock 7 : I/O
| 3 | | 7 | 4 : n.c. 8 : n.c.
| +----+----+ |
+-------/ | \-------+ n.c. : not connected
| 4 | 8 |
| | |
-------------+-------------
II-3) Main features:
---------------
- ISO 7816- 1/2 compatible.
- use a single 5V power supply.
- low power consuption.
- NMOS technology.
II-4) Time Diagrams:
----------------
Reset:
------
The address counter is reset to 0 when the clock line CLK is raised
while the control line R is high. Note that the address counter can
not be reset when it is in the range 0 to 7.
__________________
_____| |____________________________________ Reset
: :
: _____ : _____ _____ _____
_____:_______| |____:_| |_____| |_____| |____ Clk
: : : : : : : : :
_____:_______:__________:_:_____:_____:_____:_____:_____:_____
_____:___n___|_____0____:_|_____1_____|_____2_____|_____3____ (Address)
: : : : :
_____: :_______:___________:___________:____
_____XXXXXXXXXXXXXXXXXXXX_______|___________|___________|____ Data
Bit n Bit 0 Bit 1 Bit2 Bit3
The address counter is incremented by 1 with each rising edge of the
clock signal Clk, for as long as the control line R remains low. The
data held in each addressed bit is output to I/O contact each time Clk
falls.It is not impossible to decrement the address counter, therefore
to address an earlier bit, the address counter must be reset then
incremented to require value.
Write:
------
All unwritten or erased bits in the address 64-104 may be unwritten to
When a memory cell is unwritten to, it is set to 0. The addressed cell
is unwritten to by the following sequence.
1- R is raised while Clk is low, to disable address counter increment
for one clock pulse.
2-Clk is then raised for a minimum of 10ms to write to the address bit
When to write operation ends, and Clk falls, the address counter is
unlocked, and the content of the written cell, which is now 0, is
output to I/O contact if the operation is correct.
The next Clk pulse will increment the address by one, then the write
sequence can be repeated to write the next bit.
_____ _____
___________| |___________________________| |____________ Reset
: :
___ : _____ ___ : _____
__| |____:_________| |________| |____:_________| |____ Clk
: : : : : : : : :
__:________:_________:_____:________:___:____:_________:_____:___
n| n+1 | n+2 | : n+3 | : (Addr)
--'--------:---------:-----:--------:---:----:---------'-----:----
: : : : : : :
_______ _: : : ___________: __: : :
_______XXX_XXXXXXXXXXXXXXXXXX___________ XX__XXXXXXXXXXXXXXXXXXXX I/O
n n+1 : : n+1 n+2 : :
: : : :
write write
WriteCarry:
-----------
A counter is erased by performing the WRITECARRY sequence on the stage
of the next highest weighing to that to be erased.
The writecarry sequence is as follows:
1 - Set the address counter to an unwritten bit in the next highest
counter stage to that to be erased.
2 - Increment is disabled on the following rising edge of R where Clk
remains low.
3 - Clk is then raised for a minimum of 10ms, while R is low, to write
to the next address bit.
4 - R is then raised again while Clk remains low to disable increment a
second time.
5 - Clk is the raised for a minimum of 1ms, while R is low, to write
to the addressed bit a second time, erasing the counter level imme-
diately below that the addressed bit.
_____ _____
____| |____________________| |____________________________Rst
: :
: _______ : _______ ___
____:___________| |______:_____________| |______| |_Clk
: : : : : : : :
: : : : : : : :
<----------------------- address n ------------------------>:<---n+1-
: : : : : : :
: : : : : : :
____: : :______: : :__________: __
____XXXXXXXXXXXXXXXXXXXXX______XXXXXXXXXXXXXXXXXXXXXXX__________XX__I/O
: : n : : n n+1
: : : :
Write Erase
II-5) Memory Map:
-------------
Bytes Bits Binary Hexa
+-----------+-----+
1 1 --> 8 | | |
+-----------+-----+
2 9 --> 16 | 0010 1111 | $2F | ---> Germany
| 0011 0111 | $37 | ---> Netherland
| 0011 1011 | $3B | ---> Greece
+-----------+-----+
3 17 --> 24 | | |
4 25 --> 32 | | | ---> Issuer area
5 33 --> 40 | | | (written protected)
6 41 --> 48 | | |
7 49 --> 56 | | |
8 57 --> 64 | | |
+-----------+-----+
9 65 --> 72 | | | ---> c4096 )
10 73 --> 80 | | | ---> c512 ) 5 stage
11 81 --> 88 | | | ---> c64 ) octal counter
12 89 --> 96 | | | ---> c8 )
13 97 --> 104 | | | ---> c0 )
+-----------+-----+
14 105 --> 112 | 1111 1111 | $FF |
15 113 --> 120 | 1111 1111 | $FF | ---> area of bits set to "1"
16 120 --> 128 | 1111 1111 | $FF |
+-----------+-----+
The Issuer area:
----------------
This issuer consists of 40 bits. The contents of the issuer area are
specified by the card issuer, and are fixed during the manufacturing
process. The contents of the issuer area will include data such as
serial numbers, dates, and distribution centers.
This area may only be read.
The Counter area:
-----------------
The counter area stores the card's units. Its initial value is
specified by the card issuer and set during manufacturing.
The counter area is divided into a 5 stage abacus. The octal value of
each stage is defined by the number of bits set to '1' and this stage
value must be weighted by the coeficient 8^n (where n is among [4..0])
Exemple: For a card with 15818 units (or money units) left.
--------
Byte9 Byte10 Byte11 Byte12 Byte13
--------------------------------------------------------------
00000111 - 00111111 - 01111111 - 00000001 - 00000011
--------------------------------------------------------------
(3)octal (6)octal (7)octal (1)octal (2)octal
--------------------------------------------------------------
Value = 3*8^4 + 6*8^3 + 7*8^2 + 1*8^1 + 2*8^
--------------------------------------------------------------
TOTAL = 15818 Units
Note that you can only decrease the counter and it is not authorised
to write in the counter a value greater than the old value.
I-6) Electrical features:
--------------------
Maximum ratings:
----------------
+--------+------+------+------+
| Symbol | Min | Max | Unit |
+----------------------+--------+------+------+------+
| Supply voltage | Vcc | -0.3 | 6 | V |
+----------------------+--------+------+------+------+
| Input voltage | Vss | -0.3 | 6 | V |
+----------------------+--------+------+------+------+
| Storage temperature | Tstg | -20 | +55 | 0C |
+----------------------+--------+------+------+------+
| Power dissipassion | Pd | - | 50 | mW |
+----------------------+--------+------+------+------+
DC caracteristics:
| Symbol | Min.| Typ.| Max.| Unit |
+---------------------------+--------+-----+-----+-----+------+
| Suplly current | Icc | - | - | 5 | mA |
+---------------------------+--------+-----+-----+-----+------+
| Input Voltage (low) | Vl | 0 | - | 0.8 | V |
+---------------------------+--------+-----+-----+-----+------+
| Input voltage (high) | Vh | 3.5 | - | Vcc | V |
+---------------------------+--------+-----+-----+-----+------+
| Input current R | Ih | - | - | 100 | uA |
+---------------------------+--------+-----+-----+-----+------+
| Input current Clk | Il | - | - | 100 | uA |
+---------------------------+--------+-----+-----+-----+------+
| Output current (Vol=0.5V) | Iol | - | - | 10 | uA |
+---------------------------+--------+-----+-----+-----+------+
| Output current (Voh=5V) | Ioh | - | - | 0.5 | mA |
+---------------------------+--------+-----+-----+-----+------+
AC caracteristics:
| Symbol | Min. | Max. | Unit |
+----------------------+--------+------+------+------+
| Pulse duration | tr | 50 | - | us |
| R address reset | | | | |
+----------------------+--------+------+------+------+
| Pulse duration | ts | 10 | - | us |
| R write | | | | |
+----------------------+--------+------+------+------+
| High level Clk | th | 8 | - | us |
+----------------------+--------+------+------+------+
| Low level Clk | tl | 12 | - | us |
+----------------------+--------+------+------+------+
| Write window | Twrite | 10 | - | ms |
+----------------------+--------+------+------+------+
| Erase window | Terase | 10 | - | ms |
+----------------------+--------+------+------+------+
| | tv1 | 5 | - | us |
+----------------------+--------+------+------+------+
| | tv2 | 3.5 | - | us |
+----------------------+--------+------+------+------+
| | tv3 | 3.5 | - | us |
+----------------------+--------+------+------+------+
| | tv4 | 3.5 | - | us |
+----------------------+--------+------+------+------+
| | tv5 | 3.5 | - | us |
+----------------------+--------+------+------+------+
| | tv6 | 5 | - | us |
+----------------------+--------+------+------+------+
| | tv7 | 5 | - | us |
+----------------------+--------+------+------+------+
| | tv8 | 10 | - | us |
+----------------------+--------+------+------+------+
III) Schematics of Readers:
=======================
III-1) Reader 1:
----------
External 5V (Optional)
5V o------,
| / T2 PNP d13 r7 10
0V o--, | / BC 177 |\ | _____
| | ,-------o/ o--*------. E C .--| >+-[_____]----,
__+__ | | | \ / |/ | |
\\\\\ | __|__ Batery | \ / |
| - 22.5V | --------- |
....... | | | _____ | _____ |
: | __+__ +--[_____]--*--[_____]--, |
D2 : | \\\\\ r6 150k r5 15k | |
4 o-------|---------------------------*------------------|----------, |
: | | r3 220k / C | |
Ack : | | _____ |/ T1 - NPN | |
10 o------|--------. '--[_____]-*---| BC107 | |
: | | _____ | |\ | |
: ,-, ,-, +--[_____]-' \ E | |
: | |r2 | |r1 | r4 390k | | |
: | |220 | |22k __+__ __+__ | |
: |_| |_| \\\\\ \\\\\ | |
: | |\ | | | |
: *--| >+--|----------------*-------------------------------|-*
: | |/ | | ,-----|-----------------------------, | |
: | d1 | | | ,----------,----------, | | |
: | | | *---|--* Fuse | Reset *--|---' | |
: | | | | |----------|----------| | |
D0 : | | | ,-|---|--* I/O | Clk *--|---, | |
2 o-------|--------|----------' | | |----------|----------| | | |
: | | | '---|--* Vpp | R/W *--|---|-' |
Busy : | | | |----------|----------| | |
11 o------|--------|--------------' ,---|--* Gnd | 5V * | | |
: | | | '----------'-------|--' | |
D1 : | | __+__ Chip connector | | |
3 o-------|--------|--------, \\\\\ | | |
: | | '------------------------------|------' |
Str : | |\ | | | |
1 o-------*--| >+--*----*----*----*----*-------------------' |
: d2|/ | |d3 |d4 |d5 |d6 |d7 |
: -+- -+- -+- -+- -+- |
: /_\ /_\ /_\ /_\ /_\ |
D3 : | | | | | |\ | d8 |
5 o----------------*----|----|----|----|---| >+-------*---------------'
: | | | | |/ | |
: | | | | |
D4 : | | | | |\ | d9 |
6 o---------------------*----|----|----|---| >+-------*
: | | | |/ | |
: | | | |
D5 : | | | |\ | d10 |
7 o--------------------------*----|----|---| >+-------*
: | | |/ | |
: | | |
D6 : | | |\ | d11 |
8 o-------------------------------*----|---| >+-------*
: | |/ | |
: | |
D7 : | |\ | d12 |
9 o------------------------------------*---| >+-------'
: |/ |
:
:
25 o------.
: |
.......: | d1 to d13: 1N4148
__+__
\\\\\
Centronic port
III-2) Reader 2:
---------
Zener 3.3V
2x1N4001 ______ 150
|\ | |\ | | | ___ | /| (6)
o---, ,-+ >+--*--+ >+--*--+ 7824 +---*--o o-|___|-+< +-*----o Vpp
| | |/ | | |/ | | |______| | | \| |
)||( 220F | 220F | | ===== 0.22F _+_
220V)||( 25V | + 40V | + | | / \ 1N4148
)||( ===== ===== __+__ __+__ '-+-'
~ )||( | - | - \\\\\ \\\\\ ,+,
| | ___ | | | | 12
o---' '-o o-* __+__ | |
card | \\\\\ ______ '+' 12
present | |\ | | | | ___ (1)
'--+ >+-----+ 7805 +-----*----------------*--|___|-o Vcc
|/ | |______| | |
1N4001 | _+_ |
| \ / ---> ,+,
__+__ -+- ---> | |
\\\\\ | | | 4.7k
,+, '+'
| | | (7)
| | 680 *--------o I/O
'+' |
| Busy (11) o
| (4)
__+__ D0 (2) o----*---o Raz
\\\\\ |
4.7nF =====
|
__+__
\\\\\ (3)
D1 (3) o-------o Clk
(2)
D2 (4) o-------o W
Gnd (25) o
| fuse (8)
*--~~~~~-o Fus
__+__
\\\\\
IV) The program:
===========
The following program will enable you to read telecards on you PC if
you build the precedent reader.
--------------- cut here (begin)
(*********************************************************************)
(* T E L E C A R D . PAS *)
(*********************************************************************)
(* This program enables you to dumb the memory of electronic *)
(*phonecards from all over the world, so that you will be able to see*)
(*which country the card is from how many units are left and so on.. *)
(*********************************************************************)
(* *)
(* Written by Stephane BAUSSON (1993, 1994) *)
(* *)
(* Email: sbausson#ensem.u-nancy.fr *)
(* *)
(* Snail Mail Address: 4, Rue de Grand *)
(* F-88630 CHERMISEY *)
(* France *)
(*-------------------------------------------------------------------*)
(* Last revised: 07.05.1994 *)
(*********************************************************************)
(* Thanks to: Tomi Engdahl (Tomi.Engdahl#hut.fi) *)
(* Martin Schutlte (schulte#thp.Uni-Koeln.DE) *)
(* *)
(*********************************************************************)
USES crt,dos;
CONST port_address=$378; (* Select Printer PORT 1 *)
TYPE string8=string[8];
string2=string[2];
VAR reg : registers;
i,j : integer;
Data : array[1..32] of byte;
car : char;
byte_number : integer;
displaying : char;
[---------------------------------------------------------------------]
[ PROCEDURE Send(b:byte); ]
[ ]
[ - Send a byte on the selected printer port. ]
[---------------------------------------------------------------------]
PROCEDURE Send(b:byte);
BEGIN port[port_address]:=b;
END;
[---------------------------------------------------------------------]
[ FUNCTION Get:byte; ]
[ ]
[ - Get a byte from the status register of the selected printer port. ]
[---------------------------------------------------------------------]
FUNCTION Get:byte;
BEGIN get:=port[port_address+1];
END;
[---------------------------------------------------------------------]
[ FUNCTION dec2hexa_one(decimal_value):hexa_character_representation; ]
[ ]
[ - convert a 4 bit long decimal number to hexadecimal. ]
[---------------------------------------------------------------------]
FUNCTION dec2hexa(value:byte):char;
BEGIN case value of
0..9 : dec2hexa:=chr(value+$30);
10..15 : dec2hexa:=chr(value+$37);
END;
END;
[---------------------------------------------------------------------]
[ FUNCTION d2h(decimal_byte):string2; ]
[ ]
[ - convert a decimal byte to its hexadecimal representation. ]
[---------------------------------------------------------------------]
FUNCTION d2h(value:byte):string2;
BEGIN d2h:=dec2hexa(value div $10) + dec2hexa(value and $0F);
END;
[---------------------------------------------------------------------]
[ FUNCTION Binary(byte):string8; ]
[ ]
[ - Convert a byte to its binary representation. ]
[---------------------------------------------------------------------]
FUNCTION Binary( b : byte):string8;
VAR weigth : byte;
s : string8;
BEGIN weigth:=$80;
s:='';
while (weigth > 0) do
BEGIN if ((b and weigth) = weigth) then s:=s+'1'
else s:=s+'0';
weigth:=weigth div $02;
END;
Binary:=s;
END;
[------------------------------------------------------------------]
FUNCTION Units:byte;
VAR u, i : integer;
s : string8;
BEGIN u:=0;
i:=13;
while (Data[i] = $FF) do
BEGIN u:=u+8;
i:=i+1;
END;
s:=Binary(Data[i]);
while(s[1]='1') do
BEGIN inc(u);
s:=copy(s,2,length(s));
END;
units:=u;
END;
[------------------------------------------------------------------]
FUNCTION Octal_Unit_Count:LongInt;
FUNCTION BitCount( Data : integer ):integer;
VAR i : integer;
BEGIN i:=0;
while ((Data and $01)=$01) do
BEGIN Data:=Data div 2;
inc(i);
END;
BitCount:=i;
END;
BEGIN Octal_Unit_Count:= 4096*BitCount(Data[9])+512*BitCount(Data[10])
+64*BitCount(Data[11])+8*BitCount(Data[12])
+BitCount(Data[13]);
END;
[-------------------------------------------------------------------]
PROCEDURE Card_Type;
BEGIN case Data[2] of
$03: BEGIN write('Telecard - France - ');
case Data[12] of
$13: write('120 Units - ',units-130,'Units left');
$06: write('50 Units - ',units-60,' Units left');
$15: write('40 Units - ',units-40,' Units left');
END;
END;
$2F:write('Telecard - Germany -',Octal_Unit_Count,' Pfennigs left');
$37:write('Telecard - Neitherland - ',Octal_Unit_Count,' Units left');
$3B:write('Telecard - Greece - ', Octal_Unit_Count, ' Units left');
$83:BEGIN write('Telecard');
case Data[12] of
$1E: write(' - Sweden');
$30: write(' - Norway');
$33: write(' - Andorra');
$3C: write(' - Ireland');
$47: write(' - Portugal');
$55: write(' - Czech Republic');
$5F: write(' - Gabon');
$65: write(' - Finland');
END;
if (Data[12] in [$30,$33,$3C,$47,$55,$65]) then
BEGIN case ((Data[3] and $0F)*$100+Data[4]) of
$012: write (' - 10 Units - ',units-12,' Units left');
$024: write (' - 22 Units - ',units-24,' Units left');
$027: write (' - 25 Units - ',units-27,' Units left');
$032: write (' - 30 Units - ',units-32,' Units left');
$052: write (' - 50 Units - ',units-52,' Units left');
$067: write (' - 65 Units - ',units-62,' Units left');
$070: write (' - 70 Units - ',units-70,' Units left');
$102: write (' - 100 Units - ',units-102,' Units left');
$152: write (' - 150 Units - ',units-152,' Units left');
END;
END;
[ write(' - N0 ',Data[5]*$100+Data[6]);]
END;
END;
END;
[--------------------------------------------------------------------]
PROCEDURE waiting;
BEGIN send($00);
write('Enter a card in the reader and press a key ...');
repeat until keypressed;
gotoxy(1, wherey);
clreol;
END;
[--------------------------------------------------------------------]
PROCEDURE Full_Displaying;
BEGIN writeln('Memory dump:');
for i:=1 to 80 do write('-');
for i:=1 to (byte_number div 6 + 1) do
BEGIN for j:=1 to 6 do
if j+6*(i-1) <= byte_number then write(binary(Data[j+6*(i-1)]):9)
else write(' ');
write(' ');
for j:=1 to 6 do
if j+6*(i-1) <= byte_number then write(d2h(Data[j+6*(i-1)]),' ');
writeln;
END;
for i:=1 to 80 do write('-');
Card_Type;
writeln;
END;
[---------------------------------------------------------------------]
PROCEDURE Short_Displaying;
VAR j : integer;
BEGIN for j:=1 to byte_number do
BEGIN write(d2h(Data[j]),' ');
END;
writeln;
END;
[--------------------------------------------------------------------]
PROCEDURE Reading;
VAR i, j : integer;
Value : byte;
BEGIN send($FE);
send($F8);
for i:=1 to 32 do
BEGIN Value:=0;
for j:=1 to 8 do
BEGIN Value:=Value*$02 + ((get and $08) div $08);
send($FB);
delay(1);
send($F8);
END;
Data[i]:=Value;
END;
case displaying of
'F':full_displaying;
'S':short_displaying;
END;
END;
[---------------------------------------------------------------------]
PROCEDURE writting;
VAR i,n:integer;
car:char;
BEGIN write('Which bit do you want to set to "1" : ');
readln(n);
waiting;
car:=readkey;
send($FA);
send($F8);
for i:=1 to n do
BEGIN send($F9);
if i=n then
BEGIN send($FD);
delay(20);
send($FF);
delay(20);
END;
send($FB);
END;
reading;
END;
[---------------------------------------------------------------------]
PROCEDURE Saving;
VAR filename : string;
f : text;
i : word;
BEGIN write('Enter the filename: ');
readln(filename);
assign(f, filename);
rewrite(f);
writeln(f,'Memory dump:');
for i:=1 to 80 do write(f,'-');
for i:=1 to (byte_number div 6 + 1) do
BEGIN for j:=1 to 6 do
if j+6*(i-1) <= byte_number then write(f,binary(Data[j+6*(i-1)]):9)
else write(f,' ');
write(f,' ');
for j:=1 to 6 do
if j+6*(i-1) <= byte_number then write(f,d2h(Data[j+6*(i-1)]),' ');
writeln(f);
END;
for i:=1 to 80 do write(f,'-');
close(f);
END;
[---------------------------------------------------------------------]
PROCEDURE initialize;
VAR i : integer;
BEGIN byte_number:=32;
displaying:='F';
clrscr;
writeln(' 1 - to dump a 256 bits card');
writeln(' 2 - to dump a 128 bits card');
writeln(' F - to display in full format');
window(41,1,80,25);
writeln(' S - to display in short format');
writeln(' F2 - to save in a file');
writeln(' Q - to exit the program');
window(1,4,80,25);
for i:=1 to 80 do write('=');
window(1,5,80,25);
END;
[=====================================================================]
BEGIN initialize;
repeat waiting;
car:=upcase(readkey);
case car of
'W':writting;
'Q':;
'1':byte_number:=32;
'2':byte_number:=16;
'F','S':displaying:=car;
#00: BEGIN car:=readkey;
if car=#60 then saving;
END;
else reading;
END;
until car='Q';
END.
--------------- cut here (end)
_/_/_/_/_/ Stephane BAUSSON
_/_/_/_/_/ Engineering student at ENSEM (Nancy - France)
_/_/_/_/_/ Smail: 4, Rue de Grand, F-88630 CHERMISEY, France
_/_/_/_/_/
_/_/_/_/_/ Email: sbausson#ensem.u-nancy.fr
Bit readout of a Hungarian 50 units phonecard erased down to 0 credit:
|0.bit 63.bit|
01000000 10011010 10111110 10110101 01001011 00101011 01100111 01010000
00000001 00000010 00001111 11101111 11001111 11111111 11111111 11111111
11111111 11111111 11111111 11111110 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
|192.bit 255.bit|
Contents of a 50 unit card, erased down to 1 credit:
01000000 10011010 01000100 01101101 01001011 00101111 00010110 10001101
00000001 00000010 00111111 11101111 00001111 11111111 11111111 11111111
11111111 11111111 11111111 11111110 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Contents of a 50 unit card, erased down to 4 credits:
01000000 10011010 01101011 01010100 01001011 00101100 00011100 11101000
00000001 00000010 01001111 11101111 00001111 11111111 11111111 11111111
11111111 11111111 11111111 11110000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Contents of an other 50 unit card, containing 50 credits:
10111001 10000011 11100010 01000101 01000000 10010100 00011101 00111110
00000001 00001010 00010001 11100000 00000000 00000000 01001001 10101000
01000000 00000000 10000000 01100000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Contents of the same 50 unit card, erased down to 0 credit:
10111001 10000011 11100010 01000101 01000000 10010100 00011101 00111110
00000001 00001010 00010001 11100000 11101111 11111111 11111111 11111111
11111111 11111111 11111111 11111110 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Contents of a 50 unit card, erased down to 3 credits:
01000000 10011010 01101011 01010100 01001011 00101100 00011100 11101000
00000001 00000010 01001111 11101111 00001111 11111111 11111111 11111111
11111111 11111111 11111111 11111000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Contents of the same 50 unit card, erased down to 2 credits:
01000000 10011010 01101011 01010100 01001011 00101100 00011100 11101000
00000001 00000010 01001111 11101111 00001111 11111111 11111111 11111111
11111111 11111111 11111111 11111100 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Contents of the same 50 unit card, erased down to 1 credit:
01000000 10011010 01101011 01010100 01001011 00101100 00011100 11101000
00000001 00000010 01001111 11101111 00001111 11111111 11111111 11111111
11111111 11111111 11111111 11111110 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Contents of the same 50 unit card, erased down to 0 credit:
01000000 10011010 01101011 01010100 01001011 00101100 00011100 11101000
00000001 00000010 01001111 11101111 11001111 11111111 11111111 11111111
11111111 11111111 11111111 11111110 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Contents of a 120 unit card, containing 120 credits:
10111000 10000011 11011101 00111000 01000000 10011010 00011100 11101000
00000001 00000011 00010001 11100000 00000000 00000000 00111000 01000000
10000000 00000000 00100000 00000000 00000000 00000001 00000000 00000000
00000000 00000000 00000010 00000110 00000000 00000000 00000000 00000000
Contents of the same 120 unit card, erased down to 119 credits:
10111000 10000011 11011101 00111000 01000000 10011010 00011100 11101000
00000001 00000011 00010001 11100000 00001000 00000000 00111000 01000000
10000000 00000000 00100000 00000000 00000000 00000001 00000000 00000000
00000000 00000000 00000010 00000110 00000000 00000000 00000000 00000000
Contents of the same 120 unit card, erased down to 118 credits:
10111000 10000011 11011101 00111000 01000000 10011010 00011100 11101000
00000001 00000011 00010001 11100000 00001100 00000000 00111000 01000000
10000000 00000000 00100000 00000000 00000000 00000001 00000000 00000000
00000000 00000000 00000010 00000110 00000000 00000000 00000000 00000000
Contents of the same 120 unit card, erased down to 117 credits:
10111000 10000011 11011101 00111000 01000000 10011010 00011100 11101000
00000001 00000011 00010001 11100000 00001110 00000000 00111000 01000000
10000000 00000000 00100000 00000000 00000000 00000001 00000000 00000000
00000000 00000000 00000010 00000110 00000000 00000000 00000000 00000000
Contents of the same 120 unit card, erased down to 21 credits:
10111000 10000011 11011101 00111000 01000000 10011010 00011100 11101000
00000001 00000011 00010001 11100000 00001111 11111111 11111111 11111111
11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
11111111 11111100 00000010 00000110 00000000 00000000 00000000 00000000
Contents of the same 120 unit card, erased down to 0 credit:
10111000 10000011 11011101 00111000 01000000 10011010 00011100 11101000
00000001 00000011 00010001 11100000 11101111 11111111 11111111 11111111
11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
11111111 11111111 11111111 11111111 11111000 00000000 00000000 00000000
-_ _
_-
--_ -_ D'
-=_ following
section is for
- -_ d' locals at d'
Hungarian stati-
ons wordware.
on float
~on~
Magyarországon bevezetett telefonkártya leírása
A kártya (50 és 120 egységes egyformán) egy 256 bites tárolóeszközt és
az olvasás- programozáshoz szükséges logikai áramkört rejt magában.
Az alábbi ábrák a lábkiosztást, bekötést és felépítést mutatják.
________________ __________________________________________
| 8 ||7 ||6 || 5 | | +--------<---------+ |
| || || || | | ------------- ----------- |
| \\__||__// | | | 96+160 bit | | |<+-----|<(6)WE
| \ ____ / | | |tárolóterület|--<---|címszámláló|<|-+---|<(7)CK
|----// \\----| | ------------- | |<|-|-+-|<(8)RE
|----\\____ \----| | | ----------- | | | |
| /__ __\ | | ------------- ----------- | | | |
| // || \\ | | |kimeneti árk.|--<---|programozó |<+ | | |
| || || || | | | |-- | logika |<--+ | |
| 1 ||2 ||3 || 4 | | ------------- | | |<----+ |
---------------- | | | ----------- |
| | ----------| |
------------------------------------------
| | | | |
(2) (5) (4) (3) (1)
OUT VCC GND VPP NC
A tárolóterület első 96 bitje (0.-tól 95.-ig) csak olvasható (széria-
szám,egyéb adatok). A további 160 bit (96.- 255.) égethető, itt az
elejétől a bitek 0 állapota jelzi a meglévő egységet, amely 1-be éget-
hető. Ezen a részen az egységek száma mint információ egy bizonyos
algoritmus alapján van tárolva. A tárolóterületet a címszámláló címzi
meg, amely a CK órajel, -RE reset engedélyező és WE programozas engedé-
lyező bemenetek állapotától függően vagy resetelődik (0. címre áll),
vagy növeli egyel a címet, vagy nem változtat a címen. A programozó
logika feladata az égető impulzus engedélyezése a címszámláló állásának
megfelelő címen.
1-es láb: (NC) nincs bekötve a chip-be.
2-es láb: (OUT) a kimenet. Az adott címen a bit állapota jelenik meg,
ha a CK órajel bemenet L szintű. A CK bemenet H, akkor az OUT is
általában H szintet vesz fel.
3-mas láb: (VPP) az égető feszültség bemenete. A kártya olvasásakor
+5V-ot kell a VPP-re kapcsolni,ellenkező esetben nem működik a kimeneti
áramkör. Égetéshez 21-25V pozitív feszültség kell.
4-es láb: (GND) a tápfeszültség testpontja.
5-ös láb: (VCC) +5V tápfeszültség.
6-os láb: (WE) égetést engedélyező bemenet.Ha a WE=H szintű és VPP=21V,
akkor a CK bemenet 50mS ideig tartó H impulzusa hatására elég a bit
L-ből H-ba. Olvasás során WE=L kell.
7-es láb: (CK) órajel bemenet. H impulzus hatására a WE, a -RE és a VPP
állapotától függően lép, vagy marad eredeti állapotában,vagy nullázódik
a címszámláló, vagy égetés történik.
8-as láb: (-RE) reset engedélyező bemenet.A minusz jel a felülhuzást, a
negált jelet helyettesíti. L szintje esetén a CK órajel bemeneten H-ból
L-be lefutó él nullázza (reset), H szintje esetén pedig lépteti a
címszámlálót, ha ez alatt WE=L szintű volt.
A fenti ki- és bemenetek L ill. H szintje a TTL szinteknek megfelelőek.
A CK, WE ás -RE bemenetek egyes kombinációira a címszámláló reakciója,
vagyis, hogy mi történik a kártyában,VPP=5V esetén, az alábbi példákból
látható.
+--------------+ +--------------+ +-----------+
CK--+ +-- --+ +-- --+ +-----
+---------+
WE=L------------------ L------------------- -------+ +--
XXXXXXXXXXXXXX XXXXXXXXXXXXX------- XXXX XXXXXXXXXX
-REXXXXXXXXXXXXXX------ XXXXXXXXXXXXX XXXX------XXXXXXXXXX
Reset Lép Reset
+-------+ +-----------+ +-----------+
CK-----+ +------ --+ +----- -----+ +--
+--------------+ +---------+ +---------+
WE--+ +-- -------+ +-- --+ +-------
XXXXXXXXXXXXXXXXXXXX XXXX------XXXXXXXXXX XXXXXXXXXXXXXX------
-REXXXXXXXXXXXXXXXXXXXX XXXX XXXXXXXXXX XXXXXXXXXXXXXX
Nem lép, nincs reset! Lép Lép
+--------------------+ +--------------------+
CK--+ +-- --+ +---
------+ +-------- +----------+
WE +----------+ -------+ +--------
XXXXXXXXXXXXXX-------XXXXX XXXXXXXXXXXXXXXXXXXX-------
-REXXXXXXXXXXXXXX XXXXX XXXXXXXXXXXXXXXXXXXX
Lép Lép
Az X azt jelöli, hogy ott mindegy milyen allapotban van a bemenet.
Az alábbi táblázat a címszámláló pontos működését mutatjaVPP=5V esetén.
+-----+-----+-----+-----+-------------+
| A | B | C | D | |
+-----+-----+-----+-----+ |
| WE+ | WE+ | CK+ | CK+ | Címszámláló |
| -RE | CK | WE | -RE | |
+-----+-----+-----+-----+-------------+
| X | X | 0 | 1 | Lép egyet |
+-----+-----+-----+-----+-------------+
| X | X | 0 | 0 | Reset |
+-----+-----+-----+-----+-------------+
| 1 | 1 | 1 | X | Lép egyet |
+-----+-----+-----+-----+-------------+
| 0 | 1 | 1 | X | Reset |
+-----+-----+-----+-----+-------------+
| X | 0 | 1 | X | Nem változik|
+-----+-----+-----+-----+-------------+
Az A oszlop a WE bemenet felfutó élénél a -RE bemenet,
a B oszlop a WE bemenet felfutó élénél a CK bemenet,
a C oszlop a CK bemenet lefutó élénél a WE bemenet,
a D oszlop a CK bemenet lefutó élénél a -RE bemenet állapotát mutatja.
A telefonkészülék a kártya kiolvasását a következőképpen végzi:
A kártyát behelyezve a készülékbe, WE=L, VPP=0V, -RE=L, CK=L szintűek.
VCC=5V bekapcsol, majd 13-15 mS mulva a VPP=5V lesz. Ezután 600 ćS
elteltével a CK bemenet H-ba ugrik és 8 ćS után vissza L-be (reset).
Ekkor a címszámláló a 0. címre ugrik és a kimeneten (OUT) megjelenik a
0. címen lévő bit állapota. A CK bemenet lefutó élét követően 60 ćS
mulva a -RE bemenet H-ba vált, majd 13 ćS mulva a CK bemenet ismét
H-ba ugrik 8 ćS időre és vissza L-be (címszámláló egyet lép). A
kimeneten megjelenik az 1. cím állapota. Ezután a 8 ćS hosszŁ órajel
impulzusok 70 ćS-enként követik egymást egészen a 255. címig. A 255.
cím beolvasása után a készülék -RE=L szintet, majd 200 ćS mulva
VPP=0V-ot, ezt követve 500 ćS idővel VCC=0V-ot kapcsol. Ezután kis idő
mulva megjelenik a készülék LCD kijelzőjén a kártyán lévő egységek
száma. Az alábbi ábra a fenti jelsorozatot mutatja.
++ ++ ++ ++ ++
CK----------++-------++-------++-------++-------++----- - - ----------
+----------------------------------- - - -+
-RE-----------------+ +--------
+--------+ 0.bit +------------------+ 3.bit ++ 4.bit +---+
OUT--+ +-------+ 1.bit 2.bit +-------++----- - - ----+ +-
WE=L-------------------------------------------------------------------
+--------------------------------------------------------------+
VCC--+ VCC=5V +--
+---------------------------------------------------------+
VPP-----+ VPP=5V +----
Tárcsázás közben a kártya nem kap tápfeszültséget. Mikor a hívott fél
felveszi a kagylót, az előző teljes beolvasási ciklus megismétlődik,
majd a tápfesz kikapcsolása nélkül, mint a beolvasásnál, egy reset után
ellépteti a címszámlálót az elégetendő bitre és elégeti azt a következö
módon.CK=L, WE=L, VPP=5V, -RE=H, címszámláló az 1-be égetendő bit címén
áll. VPP-re a készülék 21V körüli feszültséget kapcsol, majd 100 ćS
mulva a WE bemenetet H-ba valtja, ezután 25 ćS-mal a CK bemenetet is
H-ba váltja és 50 mS idő után kapcsolja vissza L-be. Ez az 50 mS volt
az égetési impulzus. A CK lefutó élétől 60 ćS mulva a VPP-t visszakap-
csolja 5V-ra, majd 360 ćS elteltével a WE bemenetet L szintbe váltja.
Ezzel vége az égetési ciklusnak, a tápfesz kikapcsolása nélkül reset
és teljes beolvasás következik (ellenőrzi a készülék a bit leégetését).
Ezután a tápfesz kikapcsolása nélkül reset és mégegy teljes beolvasást
hajt végre. A tápfeszt továbbra sem szakítja meg, reset és az első 0
állapotú bitre léptetés következik, ez általában az első bitek vala-
melyike. Ezt a bitet a fent már részletezett égetési ciklussal megpro-
bálja leégetni.
Természetesen ez nem fog sikerülni, mert az első 96 bit nem égethető,
valószínű csak védelmi okokból csinálja. Ezután a tápfesz kikapcsolása
nélkül reset, újra beolvassa az egész 256 bitet és kikapcsolja a táp-
feszt a fent leírt módon. Ennek a több ciklusból álló folyamatnak a
végén jelenik meg az LCD kijelzőn az egyel csökkentett egységszám. Ha
egy egységnek megfelelő telefonalási idő eltelt, a fenti leégetési
procedúra megismétlődik és megint kevesebb lesz egy egységgel.
Ez a leégetési procedúra a telefonkészülék processzorának programjának
változtatása során módosulhat, például korábban egyszerűbb volt: az
egység leégetése után csak egyszer olvasta be a 256 bitet és utána nem
próbált égetni az első 96 bites területre.
Az alábbi ábra egy bit elégetését és az utána következő resetet, majd a
beolvasás elejét mutatja.
+--------------+ ++ ++ ++
CK-------------+ +---------------++-------++-------++----
------------------------------------------+ +----------------
-RE +--------+
+-------------------------------+ 0.bit +--------------
OUT-------------+ +-------+ 1.bit 2.bit
+------------------------------+
WE-------+ +-----------------------------
+-----------------------------+
VPP---+ VPP=21V +----------------------------------
VPP=5V VPP=5V
50 egységes, 0 egységre leégetett kártya tartalma:
|0.bit 63.bit|
01000000 10011010 10111110 10110101 01001011 00101011 01100111 01010000
00000001 00000010 00001111 11101111 11001111 11111111 11111111 11111111
11111111 11111111 11111111 11111110 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
|192.bit 255.bit|
50 egységes, 1 egységet tartalmazó kártya tartalma:
01000000 10011010 01000100 01101101 01001011 00101111 00010110 10001101
00000001 00000010 00111111 11101111 00001111 11111111 11111111 11111111
11111111 11111111 11111111 11111110 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
50 egységes, 4 egységet tartalmazó kártya tartalma:
01000000 10011010 01101011 01010100 01001011 00101100 00011100 11101000
00000001 00000010 01001111 11101111 00001111 11111111 11111111 11111111
11111111 11111111 11111111 11110000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Az előző 50 egységes kártya 3 egységre leégetve:
01000000 10011010 01101011 01010100 01001011 00101100 00011100 11101000
00000001 00000010 01001111 11101111 00001111 11111111 11111111 11111111
11111111 11111111 11111111 11111000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Az előző 50 egységes kártya 2 egységre leégetve:
01000000 10011010 01101011 01010100 01001011 00101100 00011100 11101000
00000001 00000010 01001111 11101111 00001111 11111111 11111111 11111111
11111111 11111111 11111111 11111100 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Az előző 50 egységes kártya 1 egységre leégetve:
01000000 10011010 01101011 01010100 01001011 00101100 00011100 11101000
00000001 00000010 01001111 11101111 00001111 11111111 11111111 11111111
11111111 11111111 11111111 11111110 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Az előző 50 egységes kártya 0 egységre leégetve:
01000000 10011010 01101011 01010100 01001011 00101100 00011100 11101000
00000001 00000010 01001111 11101111 11001111 11111111 11111111 11111111
11111111 11111111 11111111 11111110 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Egy másik 50 egységes, 50 egységet tartalmazó kártya:
10111001 10000011 11100010 01000101 01000000 10010100 00011101 00111110
00000001 00001010 00010001 11100000 00000000 00000000 01001001 10101000
01000000 00000000 10000000 01100000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Az előző kártya 0 egységre égetve:
10111001 10000011 11100010 01000101 01000000 10010100 00011101 00111110
00000001 00001010 00010001 11100000 11101111 11111111 11111111 11111111
11111111 11111111 11111111 11111110 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
120 egységes, 120 egységet tartalmazó kártya:
10111000 10000011 11011101 00111000 01000000 10011010 00011100 11101000
00000001 00000011 00010001 11100000 00000000 00000000 00111000 01000000
10000000 00000000 00100000 00000000 00000000 00000001 00000000 00000000
00000000 00000000 00000010 00000110 00000000 00000000 00000000 00000000
Az előző kártya 119 egységre leégetve:
10111000 10000011 11011101 00111000 01000000 10011010 00011100 11101000
00000001 00000011 00010001 11100000 00001000 00000000 00111000 01000000
10000000 00000000 00100000 00000000 00000000 00000001 00000000 00000000
00000000 00000000 00000010 00000110 00000000 00000000 00000000 00000000
Az előző kártya 118 egységre leégetve:
10111000 10000011 11011101 00111000 01000000 10011010 00011100 11101000
00000001 00000011 00010001 11100000 00001100 00000000 00111000 01000000
10000000 00000000 00100000 00000000 00000000 00000001 00000000 00000000
00000000 00000000 00000010 00000110 00000000 00000000 00000000 00000000
Az előző kártya 117 egységre leégetve:
10111000 10000011 11011101 00111000 01000000 10011010 00011100 11101000
00000001 00000011 00010001 11100000 00001110 00000000 00111000 01000000
10000000 00000000 00100000 00000000 00000000 00000001 00000000 00000000
00000000 00000000 00000010 00000110 00000000 00000000 00000000 00000000
Az előző kártya 21 egységre leégetve:
10111000 10000011 11011101 00111000 01000000 10011010 00011100 11101000
00000001 00000011 00010001 11100000 00001111 11111111 11111111 11111111
11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
11111111 11111100 00000010 00000110 00000000 00000000 00000000 00000000
Az előző kártya 0 egységre leégetve:
10111000 10000011 11011101 00111000 01000000 10011010 00011100 11101000
00000001 00000011 00010001 11100000 11101111 11111111 11111111 11111111
11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
11111111 11111111 11111111 11111111 11111000 00000000 00000000 00000000
Az első 96 bit egy része szériaszámként értelmezhető, a további 160 bit
az egységek tárolóterülete.Ezen a részen (az összes egységet tartalmazó
kártyánál) elszórva mindíg található 10 db 1-es, melyek helyezete az
ellenőrző algoritmus miatt kötött, az adott szériaszámhoz tartozik.
Átírásuk,vagy az első 96 bit változtatása különböző hibaüzeneteket vált
ki a készülékből. Hibás kártyával való kisérletezésre a "Pillanatnyilag
nem áll rendelkezésre" üzenet alatt a telefonkészülék felhív egy
telefonszámot, melyre DTMF kódokkal információt közöl. Ezt persze
hibátlan használat esetén is megteszi valamilyen gyakorisággal.
<~><-><+> FEJlesztés aLATt <#><*><.>
A TKSIM.SCH nevü file Orcad V3.2 verzióval készült, egy egyszerű áram-
köri példát mutat a telefonkártya szimulálására, ami hibamentesen
működik a fent közölt beolvasási és égetési algoritmust használó
készülékekkel.
A TKSIM.LIB file a TKSIM.SCH file könyvtári elemeit tartalmazza.
Az áramkör működése a következő:
A CK, -RE és WE jeleket nand kapuk fogadják, melyek a CD4040 lefutó
élre binárisan számláló IC-nek előállítják a reset és órajeleket. A
számláló Q0-Q7 kimenetei a 28C16 EEPROM A0-A7 címvezetékeit hajtja meg,
melyek az EEPROM 256 byte-os részét tudják megcímezni. Az EEPROM fenn-
maradó A8, A9 és A10 címvezetékeit H szintre kell kötni, vagy ezen
kívül egy kapcsoló sorra, ha több kártya tartalmát is beégetjük és
ezeket kapcsolgatni akarjuk. Az EEPROM valamelyik I/O lába (a beégeten-
dő tartalom úgy van megadva, hogy mindegy melyik) egy felhúzó ellen-
álláson és két inverteren keresztül kerül az OUT-ra. A felhúzó ellen-
állás fontos, mert az egység leégetésekor az EEPROM I/O lába bemenet,
amit H-ba kell húzni. A VPP égető feszültség egy zénerrel, ellenállás-
sal és inverterrel úgy van kialakítva, hogy 5 vagy 21V esetén az
EEPROM-nak -CE jelet prezentál. Másik két zéner és ellenállás után a
VPP=0 vagy 5V L szintként, a 21V pedig H szintként jelentkezik. Ez
engedélyezi a WE jellel együtt a CK beégető impulzusát, mely egy
kb. 10mS-es impulzust előállító tagon keresztül jut az EEPROM -WE
lábára. Két nand és egy inverter gondoskodik arról, hogy az első 96
byte megcímzésekor ne juthasson el az égető impulzus az EEPROM-ba. Az
áramkör kis fogyasztása érdekében fontos, hogy minden IC CMOS legyen!
A zenerek BZX vagy ZPD legyen,mert más típusoknál nagy szórások szoktak
előfordulni.
Az EEPROM tartalma egy az előzőekben már bitenként közölt 120 egységes
kártya tartalma, amely most úgy van átalakítva, hogy egy bit egy byte-
nak felel meg és a byte minden bitje egyformán 0 vagy 1. Ez a 256 byte
a TK120.BIN nevű file-ban található, melyet az EEPROM-ba a 0. címtől
kell beégetni. A többi 256 byte-os szeletre is beégethető ugyanez a
tartalom, így a jelzett kapcsolósorral lehet (A8, A9, A10-es címveze-
tékek) átkapcsolni. A TK50.BIN nevű file-ban egy hasonlóan átalakított
50 egységes kártya tartalma található.
A telefonkészülékbe a csatlakozást egy fantom kártyával lehet
megoldani. Nyáktervező programmal pontosan megtervezhető az aranyozott
rész. A lábak átmenő lyukakon keresztül a panel alsó oldalán a végéhez
vezethetők egy csatlakozóra. A panel alját széles vékony ragasztó
szalaggal el kell szigetelni. A kártya 0.8mm-es (szabványos) nyákból
készíthető.
~!~
nEXT outpost
.....,..
lite GRAY
.. .. . . ,.