Sprache
Deutsch
Anja-Art
Ralf Zimmermann home
 
Hardware
Software
 
Eng-Ger Wörterbuch für Palm OS handhelds
Englisch-Deutsch Wörterbuch online
 
Amateurfunk
  Amateurfunk Satelliten
Gleitschirm-Fliegen
Freunde
Wilder Kram
 
Zu Verkaufen
 
Über mich
Über meinen Arbeitgeber
 
Schreib mir
 
Impressum

Die Anleitung zu

DCF-TIME

Version 1.4
1999-01-26

von
Ralf Zimmermann
Am Ruhwehr 35
D-65207 Wiesbaden

Schreiben Sie mir eine email


Inhaltsverzeichnis


Anhang



1 Kurze Beschreibung des Programms

Es gibt einige Module für den Atari, welche die DCF77-Zeitzeichen empfangen und dem Rechner zur Dekodierung zur Verfügung stellen. Die zum Teil mitgelieferte Software läßt einige Wünsche offen (ich halte mich stark zurück...). Diesem Übel hilft diese Software ab.

DCF-TIME ist eine zuverlässige und schnelle Software zur Dekodierung der DCF77-Signale. Es werden verschiedene Ports für die ankommenden Signale unterstützt.

ACHTUNG: Die Software empfängt natürlich keine DCF-Signale! Dazu brauchen Sie eine kleine Zusatz-Hardware, eben einen der beschriebenen Empfänger.

DCF-Empfänger mit Anschluß an den Atari (und zum Teil auch Uhrzeit-Display) kann man bei mir kaufen. Informationen gibt es z.B. auf meiner WebPage im internet:

2 Autor

DCF-TIME ist ein Freeware-Programm von

Ralf Zimmermann
Am Ruhwehr 35
65207 Wiesbaden

3 Entstehungsgeschichte

Für Rechner ohne Hardware-Uhr gibt es von verschiedenen Firmen DCF77-Empfänger, die man mit dem Rechner verbindet, um damit die offizielle Richtzeit der Bundesrepublik Deutschland mit hoher Genauigkeit zu empfangen.

Ich besitze einen solchen Empfänger von der Firma Conrad. Die Dekodierung erfolgt per Software. Die mitgelieferte Software läßt einige Wünsche offen.

DCF-TIME bietet nun die Möglichkeit, die vom Empfänger gelieferten Signale zuverlässig und unauffällig zu dekodieren. Die Dekodierung läuft im Hintergrund und sorgt regelmässig für die aktuelle Uhrzeit.

Als besonderes Feature kann man zwischen der Ortszeit in Deutschland (MEZ, MESZ) und der Weltzeit UTC wählen. Die Sommerzeit wird automatisch beachtet.

Als Freeware-Produkt erhalten Sie hiermit alle zu DCF-TIME nötigen Dateien und Informationen. DCF-TIME besteht aus folgenden Dateien:

  • DCF_TIME.PRG
    Das Programm für den AUTO-Ordner

  • DCF_TIME.INF
    Beispiel-Datei für Konfiguration

  • DCF_TIME.TXT
    Der Text den Sie gerade lesen

  • DCF_TIME.CPX
    Ein CPX-Modul zur Anzeige der empfangenen Daten

  • DCF_WAIT.TOS
    Ein Hilfsprogramm für Batch-Verarbeitung

  • DCF77.H
    Die Header-Datei für C, sie enthält alle wichtigen Informationen zur Einbindung des Decoders in eigene Programme

4 Installation

Kopieren Sie einfach das Programm DCF_TIME.PRG in den AUTO-Ordner Ihres Bootlaufwerks. Dann neu booten und fertig!

Falls Sie Ihren DCF77-Empfänger nicht am Joystick-Port angeschlossen haben, so müssen Sie noch eine Datei mit den Parametern für den Decoder erstellen. Dasselbe gilt, falls Sie die weiteren Möglichkeiten des Decoders nutzen wollen. Die nötige Datei nennt sich DCF_TIME.INF und sollte im selben Verzeichnis wie DCF_TIME.PRG liegen. Am einfachsten läßt sich eine solche Datei mit dem CPX-Modul DCF_TIME.CPX erstellen.

Nach einem Kaltstart haben Sie bei korrektem Empfang nach knapp 2 Minuten die korrekte Zeit im ST! Nach einem Warmstart bleibt die System-Zeit durch Zwischenspeichern im Tastaturprozessor erhalten.

Falls Sie das mitgelieferte CPX-Modul verwenden wollen (dies ist zur eigentlichen Dekodierung nicht nötig!), so kopieren sie es bitte zu Ihren anderen CPX-Modulen. XControl wird es dann beim Starten finden.

Anmerkung: 'XControl' ist das neue erweiterte Kontrollfeld von Atari, es wird mit Rechnern ausgeliefert, die eine TOS-Version ab 2.00 haben. Dieses neue Kontrollfeld erlaubt es, einzelne Module (mit der Endung CPX) nachzuladen.

Für ältere TOS-Versionen ist das neue Kontrollfeld nicht vorgesehen - aber abgesehen von ein paar Modulen läuft es z. B. auch unter TOS 1.04 ohne Probleme. Ich benutze es täglich und kann es nur empfehlen!

Seit einigen Jahren gibt es von mir auch 'zControl', einen XControl-Clone mit vielen zusätzlichen Features und weniger Bugs...

DCF-TIME läuft auf allen ST, STe, Mega-ST, Mega-STe, TT und Falcon-Rechnern von Atari. Neuere Atari-Clones scheinen auch keine Probleme zu haben. Falls doch bitte ich um einen kurzen Hinweis.

5 Funktionsweise der Programme

Das Auto-Ordner-Programm DCF_TIME.PRG sucht beim Start die Datei DCF_TIME.INF und wertet sie aus. Nach Möglichkeit wird eine Dekodier-Routine im Hintergrund installiert.

Die Uhrzeit wird aus dem Tastatur-Prozessor gelesen. Damit wird erreicht, daß nach einem Warmstart sofort wieder die dorthin gesicherte Zeit zur Verfügung steht.

Ab sofort sorgt die Decoder-Routine im Hintergrund für eine bestmögliche Entzifferung des empfangenen DCF-Signals. Desgleichen wird die System-Zeit im Rechner in regelmässigen Abständen gesetzt.

Anmerkung: Das Dekoder-Programm ist jetzt schon gute 10 kB groß. Davon bleiben aber nur knappe 2 kB resident. Der Speicherbedarf durch den residenten Decoder ist also denkbar klein!

Das CPX-Modul DCF_TIME.CPX kann von dem vorhandenen Accessory XCONTROL (von Atari) geladen werden. Das Modul zeigt sämtliche Daten über das empfangene DCF77-Signal sowie über den Decoder an.

Es dient also hauptsächlich zur Information, was der Decoder denn so treibt. Für die eigentliche Funktion des Zeit-Dekodierens und -Stellens hat es keine Bedeutung.

Desweiteren läßt sich hiermit das Verhalten des Dekoders beeinflussen.

Das Programm DCF_WAIT.TOS ist für diejenigen gedacht, die automatisch irgendwelchen Datenbestand "crunchen" lassen. Falls dieses "Crunchen" mit dem Datum als Kriterium geschieht, so ist es natürlich fatal, wenn die Uhrzeit im Rechner nach dem Starten irgendwelche utopischen Werte annimmt. Dieses Problem behebt dieses Programm. DCF_WAIT wartet nach dem Start einfach solange, bis die Rechner-Zeit vom Decoder gesetzt wurde.

Bei mir wird DCF_WAIT in der Stapelverarbeitung direkt vor meinem Message-Cruncher aufgerufen. Wenn die Zeit stimmt, geht's gleich weiter falls nicht wird gewartet. Und schon sind alle Probleme beseitigt.

6 Die Bedienungselemente des CPX-Moduls

Das CPX-Modul erlaubt das ausführliche Anzeigen der Aktionen rund um den DCF77-Decoder. Man kann alle empfangenen Signale ablesen sowie ein paar Parameter einstellen.

  • Im Hauptdialog des Moduls sieht man die wichtigsten Informationen auf einen Blick. Von dort kann man mittels eines Popup-Dialoges unter dem Knopf 'Weitere Dialoge...' weitere Dialoge wählen. (Wer hätte DAS gedacht?)

  • Über DCF_TIME
    Hier kann man sehen, welche Version des DCF-Decoders man verwendet und wer das Programm geschrieben hat.

  • Konfiguration
    Zur Zeit kann man die Zeitzone und das Zeit-Stellen-Intervall einstellen. Mittels 'Sichern' wird diese Information in die Datei DCF_TIME.INF geschrieben. Es wird nach der Datei \AUTO\DCF_TIME.INF gesucht und die Parameter dort gesichert. Falls die Datei nicht existiert, wird eine neue erstellt.

  • DCF77-Signale
    Hier kann man alle Informationen sehen, die das ursprüngliche DCF-Signal übermittelt hat.

  • Letztes Stellen
    Hier können Sie sehen, wann der Decoder die Rechner-Zeit zum letzten Mal gestellt hat. Es wird in zwei Angaben unterschieden:

    • Gemdos:
      Dies ist die Zeit, welche von den meisten Programmen als Rechner-Zeit verwendet wird.

    • XBios:
      Dies ist die eventuell vorhandene Hardware-Uhr, bzw. die Uhr im Tastaturprozessor. Diese Uhr wird vom Decoder auch gestellt!

7 Programmiertechnisches

Das AUTO-Ordner-Programm installiert sich in den entsprechenden Vektoren mit der XBRA-Kennung zDCF. Ebenso installiert es einen Cookie mit der Kennung zDCF. Der Cookie-Wert ist ein Zeiger auf eine DCF77-Struktur.

Die Definition dieser Struktur finden Sie in der Datei DCF77.H, sie erlaubt es Ihnen, den Decoder in eigenen Programmen anzusprechen.

Die C-Struktur 'tm' ist folgendermassen definiert:

 struct tm
 {
    WORD    tm_sec;   /*  Sekunden                            */
    WORD    tm_min;   /*  Minuten                             */
    WORD    tm_hour;  /*  Stunden (0..23)                     */
    WORD    tm_mday;  /*  Tag im Monat (1..31)                */
    WORD    tm_mon;   /*  Monat (0..11)                       */
    WORD    tm_year;  /*  Jahr                                */
    WORD    tm_wday;  /*  Wochentag (0..6)   (So..Sa)         */
    WORD    tm_yday;  /*  Tag im Jahr (0..365)                */
    WORD    tm_isdst; /*  ungleich Null entspricht Sommerzeit */
 };

8 Zur Hardware

Ursprünglich war diese Software dafür ausgelegt, die Signale des DCF-Empfängermoduls der Fa. Conrad für den Atari-ST auszuwerten. Der Anschluß an den Rechner erfolgt über den zweiten Joystick-Port. Mittlerweile läuft die Software auch mit anderen Empfänger-Modulen und an anderen Schnittstellen.

DCF-Empfänger mit Anschluß an den Atari (und zum Teil auch Uhrzeit-Display) kann man bei mir kaufen. Informationen gibt es z.B. auf meiner WebPage im internet:

Der vorliegenden Version von DCF-TIME ging eine aufwendige Beta-Test-Phase vorraus. Sie arbeitet mit verschiedenen Eingängen (Ports genannt) für das DCF77-Signal und mit verschiedenen Empfängermodulen zusammen.

Nachfolgend beschreibe ich die bisher benutzten Ports. Falls es Probleme beim Anschluß gibt, so kann ich gerne mit Tips aushelfen. Möchte jemand einen anderen Port benutzen, der hier noch nicht aufgeführt ist, so kann er sich ja mit mir in Verbindung setzen.

Bisher werden drei Ports unterstützt:

8.1 Anschluß am Joystick-Port (JOY)

Der Anschluß des Moduls an den Rechner erfolgt über einen 9-poligen Sub-D-Verbinder. Die Belegung der Anschlüsse ist folgende:

1: Signal
7: +5V
8: Masse

Welche Pegel muss das Signal haben?

8.2 Anschluß an MODEM1 (RI1)

Das Signal wird über den Ring-Indicator-Anschluß (RI genannt) in den Rechner gebracht. Dazu muß die Verbindung des RI zu einem eventuell vorhandenen Modem getrennt werden. Da die meiste Software zum Betrieb von Modems den RI nicht benutzt, ist dies kein Verlust an Funktionalität.

Lediglich einige Fax-Programme für den Atari fragen explizit den RI-Kontakt ab. In diesem Fall sollte man seinen DCF-Empfänger natürlich nicht an diesem Anschluß betreiben.

Aber man hat ja die Wahl... ! ;-)

Der Anschluß an MODEM1 wurde von einigen Beta-Testern erfolgreich benutzt, es sollte also auch bei Ihnen funktonieren. Man spart sich vor allem das Kabel zur abgesetzten Tastatur, wo sich der Joystick-Port befindet.

Ein kleiner Tip: Die Eingänge der MODEM1-Schnittstelle kann man auch mit TTL-Pegeln benutzen! Die im Atari benutzten Schnittstellen-Bausteine sind da sehr tolerant.

8.3 Anschluß an MODEM2 (RI2)

Dies funktioniert analog zu dem Anschluß an MODEM1, es wird ebenfalls der RI benutzt. Leider konnte ich speziell diesen Port noch nicht ausführlich testen.

Aber wie in der letzten Version versprochen kann nun auch dieser Port verwendet werden. Ein paar Betatester haben das mittlerweile erfolgreich ausprobiert.

Leider ist der MODEM2-RingIndicator-Anschluss beim MegaSTe wohl leider nicht angeschlossen, es fehlt ja auch der zweite MFP, der diese Leitung sonst verwaltet. Deshalb kann dieser Port bei dem MegaSTe leider nicht verwendet werden!

9 Das Format der INF-Datei

Das Decoder-Programm kann nun mittels einer Datei konfiguriert werden. Dies ist nützlich, falls man nicht die Default-Einstellungen verwenden möchte und XControl oder zControl nicht benutzt. Damit ergibt sich dann ein minimaler Verbrauch von Speicher!

Die Datei dazu heist DCF_TIME.INF und wird beim Programmstart im selben Verzeichnis wie das Programm erwartet. Die Datei kann jeder selbst mit Hilfe eines ASCII-Editors erstellen, oder man läßt sie einfach von dem CPX-Modul mittels 'Konfiguration sichern' erzeugen. Bisher werden folgende Variablen ausgewertet:

9.1 PORT

Bestimmt, welcher Port für die DCF77-Signale verwendet werden soll.

Mögliche Werte sind:

  • JOY
    Es wird der Joystick-Port verwendet

  • RI1
    Es wird der RI von MODEM1 verwendet

  • RI2
    Es wird der RI von MODEM2 verwendet

9.2 ZONE

Bestimmt, welche Zeitzone vom Dekoder zur Verfügung gestellt wird.

Mögliche Werte sind:

  • LOC
    Deutsche Ortszeit

  • UTC
    Weltzeit (UTC)

  • MEZ
    MittelEuropäische Zeit

  • MESZ
    MittelEuropäische SommerZeit

Die Weltzeit (UTC) ist wohl vor allem für die Funkamateure unter uns (73!) interessant. Die beiden letzten Einstellungen (MEZ, MESZ) sind nicht unbedingt praxistauglich.

9.3 SET_EVERY

Bestimmt die Anzahl der Minuten zwischen zweimal Zeit-Setzen (0-60). Ein Wert von 0 bedeutet, daß die Zeit nur einmal übernommen wird, 60 bedeutet ein stündliches Setzen der Zeit. Werte darüber sind nicht erlaubt.

9.4 QUICK_SET

Definiert das Verhalten des Decoders für das erstmalige Stellen der Zeit:

  • ON
    Auch beim erstmaligen Stellen der Uhrzeit wird ein zweites Zeittelegramm abgewartet, um eventuelle Fehler bei schlechtem Empfang zu verhindern. Dadurch Verzögert sich das Stellen nach dem Booten natürlich um eine weitere Minute.

  • OFF
    Dies ist die schnellere Möglichkeit, es wird das erste korrekte Zeittelegramm zum Stellen verwendet. Danach werden wieder jeweils zwei Telegramme verglichen, bevor die Zeit übernommen wird.

9.5 BOOT_TEXT

Bestimmt, welcher Text beim Starten des AUTO-Ordner-Programmes ausgegeben wird:

  • SHORT
    Es wird nur die Copyright-Meldung mit Versionsnummer und Erstellungsdatum ausgegeben. Dies ist ganz nützlich, wenn alles ordentlich läuft und man beim booten sowieso schon so viele Texte angezeigt bekommt. Fehlermeldungen werden natürlich nicht unterdrückt!

  • LONG
    Es wird die selbe Meldung wie bei SHORT ausgegeben, aber zusätzlich meldet DCF-TIME jede Aktion und gibt die eingestellten Parameter aus.

9.6 TIM_FILE

Definiert das Verhalten des Decoders für das erstmalige Stellen der Zeit:

  • ON
    Jedesmal, wenn die DCF-Zeit in den Rechner übernommen wird, wird diese Uhrzeit in die Datei DCF_TIME.TIM geschrieben. Falls der Tastatur-Prozessor beim Booten keine gültige Uhrzeit liefert, versucht DCF_TIME die zuletzt geschriebene Uhrzeit aus der Datei DCF_TIME.TIM zu lesen. Dies ist zum Beispiel dann der Fall, wenn man keine Uhr mit Batterie-Pufferung im Rechner hat. Mit dieser Methode erhält man bei solchen Rechnern nach dem Booten wenigstens eine einigermaßen sinnvolle Uhrzeit - bis zur Dekodierung des DCF77-Empfangs-Signals.

  • OFF
    Die Datei DCF_TIME.TIM (falls vorhanden) wird beim Booten ignoriert. Die Datei wird auch nicht aktualisiert, d.h. es erfolgt kein Schreibzugriff.

9.7 Beispiel

Das File enthält z. B. folgende Zeilen:

PORT = JOY
ZONE = LOC
SET_EVERY = 60

Das bedeutet in diesem Beispiel, daß die Signale am Joystick-Port erwartet werden, die Zeit in Ortszeit (LOC) dekodiert wird und die Zeit alle 60 Minuten in den Rechner übernommen wird.

Die Reihenfolge der Zeilen in der Datei ist egal.

10 History

  • Version 1.0
    Dies ist die erste Version, die einer kleinen Öffentlichkeit vorgestellt wurde. Es gab noch kein CPX-Modul, dafür erfolgten alle Einstellungen über ein Accessorie. Alles funktioniert funktionierte schon prächtig, aber es gibt ja bekanntlich nichts, was man nicht besser machen kann.

  • Version 1.1
    Nennen wir diese Version mal 'Public Edition'. DCF-TIME wurde in dieser Version zum ersten Mal weit verbreitet, vor allem über das Maus-Netz.

    • Zum ersten Mal werden verschieden Schnittstellen für das DCF77-Signal unterstützt.

    • Alle Einstellungen erfolgen jetzt über ein CPX-Modul.

  • Version 1.2

    • Nun funktioniert auch der RI2-Port (RingIndicator von MODEM2).

    • Der Decoder ist jetzt etwas schneller geworden.

    • Die Erkennung von gestörten Signalen und unsinnigen Zeitangaben wurde stark verbessert. Dies ist lediglich für Benutzer interessant, die immer einen schlechten Empfang haben.

    • In Zusammenhang mit HSMODEM1.PRG wurde ein Problem im Interrupt-Handling offenbar. DCF-TIME brachte etwas zuviel Zeit in seinen Berechnungen zu.
      Durch eine kleine Interrupt-Kosmetik konnte das Problem beseitigt werden, DCF-TIME setzt seine Priorität herab und behindert keine High-Speed-Übertragungen mehr.
      (Hallo Harun!)

  • Version 1.4

    • Die Variable TIM_FILE für die Konfiguration wurde eingeführt.

    • Ein paar Kleinigkeiten wurden verbessert.

11 Neue Versionen

Wenn das Echo auf meine Software positiv ist, so wird es auch weiterhin neue Versionen von DCF-TIME geben. Zumindestens werde ich es für den eigenen Gebrauch weiter verbessern.

12 Copyright (Das Unvermeidliche...)

DCF-TIME ist ein Freeware-Produkt. Das bedeutet, Sie dürfen die Dateien frei kopieren und weitergeben. Eine kommerzielle Auswertung dieses Produktes durch andere als mich, den Autor, ist nicht erlaubt. Wer DCF-TIME kommerziell einsetzen will (also z.B. in einer Firma) wende sich bitte direkt an mich, es gibt da einen speziellen Tarif für solche Verwendung.

Da mich dieses Produkt einige Mühe, Zeit und sogar Geld gekostet hat, möchte ich Sie gerne bitten, mir bei Benutzung dieser Software 10 DM zukommen zu lassen.

Dieser Betrag ist ja wohl wirklich nicht zuviel! Sie kostet es nicht die Welt und ich könnte damit wenigstens die Kosten für meinen C-Compiler wieder reinholen. Halten Sie das nicht für eine faire Sache?

Meine Postalische Anschrift finden Sie oben in diesem Text, hier meine Bankverbindung:

Für Anregungen und Fehlerberichte bin ich immer dankbar!

Viel Spaß und guten Empfang wünscht

Ralf Zimmermann


A Bezugsquellen

Die jeweils aktuelle Version des Programms ist beim Autor gegen Einsendung einer formatierten Diskette sowie eines frankierten und adressierten Rückumschlags erhältlich.

Die aktuelle Version dieses Programms sollte natürlich auch im internet zu finden sein, unter:

Leider kann ich seit 1996 nicht mehr im Maus-Netz teilnehmen, daher kann ich dort keinen Support mehr leisten.