🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.org.ccc
Article #504

Re: Suche Kartenzwerg Software

#504
From: Jens-Erich Lange
Date: Thu, 18 Sep 1997 00:00
164 lines
4975 bytes
Michael Pahlenberg <Michael_Pahlenberg@bigfoot.com> schrieb im Beitrag
<01bcc9a6$ed64eda0$LocalHost@default>...
> Hallo, hat hier vielleicht einer `ne Ahnung, wo ich Software f=FCr =
meinen
> Kartenzwerg bekomme?  Ich versuche mich gerade (wie so viele) im
> Telefonkarten editieren. Irgendwie ist die Sache gar nicht mal so
> einfach...=20

Die Firma TOWITOKO schrieb mir dazu folgendes:


Kartenzwerg I2C-Protokoll Random Read/Write
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D


GRUNDLAGEN

Der Kartenzwerg arbeitet mit einer halbduplex-Uebertragung, d.h. es wird
wechselseitig nur in eine Richtung gesendet. Alle Uebertragungen werden =
vom
PC [oder vom Mac!, d. Setzer] initiiert.

Die vom PC gesendete Befehlsfolge kann mit einem Characterspacing von 0 =
bis
50ms gesendet werden. Die Antwort auf einen abgeschlossenen Datenblock =
wird
innerhalb von 0 bis 200ms gesendet (CWT < 50ms; BWT < 200ms).

In der folgenden Protokollbeschreibung werden jeweils die vom PC =
gesendeten Daten in runden Klammern (), die vom KartenZwerg gesendeten =
Daten in eckigen Klammern [] dargestellt.

(QS) kennzeichnet eine zu berechnende Quersumme. [nc] kennzeichnet einen =
Platzhalter der zur zuk=FCnftigen Nutzung reserviert ist.

Die Schnittstelle des PC muss auf 9600 bps (8N1) eingestellt sein, die =
RTS und DTR Leitungen muessen auf +12V liegen.


DIE QUERSUMMENBERECHNUNG

Die Quersummenberechnung startet mit dem Wert 00 hex. JEDES gesendete =
Byte wird nach dem folgenden Algorithmus in die Quersumme einbezogen:

Alte Quersumme            Neuer Wert
Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0   B7 B6 B5 B4 B3 B2 B1 B0
-----------+-----------   -----------------------
           |                         |
           +------------+------------+
                        |
                       XOR
                        |
          +--X7 X6 X5 X4 X3 X2 X1 X0<-+
          |                           |
          +----------------------------
                        |
                    XOR 01hex
                        |
             N7 N6 N5 N4 N3 N2 N1 N0
             Neue Quersumme

Beachten Sie, dass der Wert X je um ein Bit nach links rotiert wird; Bit =
7 wird nach Bit 0 kopiert und invertiert.

[Anmerkung des Setzers: Die Quersummenbildung habe ich in Metrowerks =
Pascal folgendermassen geloest]

-------- schnipp ---------
           =20
function QuerSumme (S: Str255): char;
var
    i, j: integer;
begin
    j :=3D 0;
    for i :=3D 1 to length(S) do
    begin
        j :=3D BitXOr(j, integer(S[i]));
        j :=3D BitShift(j, 1);
        if BitTst(@j, 7) then BitSet(@j, 15);
        j :=3D BitXOr(j, $01);
    end;
    QuerSumme :=3D char(j);
end;

-------- schnapp ---------

DIE BEFEHLSSEQUENZEN


Karte aktivieren
  (60, 0F, 9C) [01]


Karte deaktivieren
  (61, 0F, 98) [01]


I2C ab Adr. A lesen

 Init Sequenz fuer I2C bis 16 kBit:

  (7C, 64, 41, a1, a2, 64, 40, a3, 0F, QS) [01]
  a1 :=3D Hi.A shl 1 or A0
  a2 :=3D Lo.A
  a3 :=3D a1 or 01

 Init Sequenz fuer I2C 32/64 kBit:

  (7C, 64, 42, A0, a1, a2, 64, 40, A1, 0F, QS) [01]
  a1 :=3D Hi.A
  a2 :=3D Lo.A

 n Byte lesen

  (10 or (n-1), QS) [d1...dn, QS]
  mit N: 1...16 Bytes


I2C ab Adr. A schreiben

 Init Sequenz fuer I2C bis 16 kBit:

  (7C, 64, 41, A0, 00, 64, 40, A1, 0F, 36) [01]
  (7E, 10, DA) [??, QS]
  (7E, 66, 6E, a2, a1, pm, 0F, QS) [01]
  a1 :=3D Hi.A shl 1 or A0
  a2 :=3D Lo.A
  pm gibt den Pagemode an, wobei folgender Zusammenhang gilt: (pm-1) =
Byte je Page

 Init Sequenz fuer I2C bis 64 kBit:

  (7C, 64, 42, A0, 00, 00, 64, 40, A1, 0F, 0B) [01]
  (7E, 10, DA) [??, QS]
  (7F, 66, 6E, a2, a1, A0, 0F, QS) [01]
  a1 :=3D Hi.A
  a2 :=3D Lo.A
  Der Pagermodus ab 32 kBit ist auf 16 Byte voreingestellt.

 n Datenbytes schreiben (das niederwertigste Byte des Adresszaehlers =
wird inkrementiert):

 fuer n =3D 1..15 Bytes:

  (40 or (n-1), d1...dn, 0F, QS) [01]

 fuer n =3D 16 Bytes:

  (4F,d1...dn, QS) [01]


Um das hoeherwertige Byte des Adresszaehlers zu setzen (auch bei =
fortlaufendem Beschreiben der Karte) wird die folgende Sequenz =
eingefuegt:

 fuer I2C bis 16 kBit:

  (7E, 66, 6E, a2, a1, pm, 0F, QS) [01]

fuer I2C 32/64 kBit:

  (7F, 66, 6E, a2, a1, A0, 0F, QS) [01]
Technical Details
Message-ID: <5vs54r$pdu$3@news02.btx.dtag.de>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <01bcc9a6$ed64eda0$LocalHost@default>

Show Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII-7-bit
X-Google-Thread: fd655,77bd86f1dce9a104
X-Google-Attributes: gidfd655,public
X-Google-Thread: 103e79,77bd86f1dce9a104
X-Google-Attributes: gid103e79,public
From: DYNAMO@t-online.de (Jens-Erich Lange)
Subject: Re: Suche Kartenzwerg Software
Date: 1997/09/18
Message-ID: <5vs54r$pdu$3@news02.btx.dtag.de>
X-Deja-AN: 274282240
References: <01bcc9a6$ed64eda0$LocalHost@default>
X-Sender: 04551967766-0001@t-online.de (Jens-Erich Lange)
Organization: DYNAMO Software
Newsgroups: de.org.ccc,fido.ger.ccc