                       DCF_TIME Version 1.2

          Die ultimative Software zu allen DCF77-Empfngern!


                   Atari (Mega)ST(E), TT, Falcon


                      Copyright  1991-93 by

                         Ralf Zimmermann


                          2. Juni 1993




1    Kurze Beschreibung des Programms

Es gibt einige Module fr den Atari, welche die DCF77-Zeitzeichen 
empfangen und dem Rechner zur Dekodierung zur Verfgung stellen. Die 
zum Teil mitgelieferte Software lsst einige Wnsche offen (ich halte 
mich stark zurck...). Diesem bel hilft diese Software ab.

DCF_TIME ist eine zuverlssige und schnelle Software zur Dekodierung 
der DCF77-Signale. Es werden verschiedene Ports fr die ankommenden 
Signale untersttzt.
ACHTUNG: Die Software empfngt natrlich keine DCF-Signale! Dazu 
brauchen Sie eine kleine Zusatz-Hardware, eben einen der beschriebenen 
Empfnger.

     DCF_TIME ist nur eine alternative Dekodier-Software dazu!


2    Copyright

DCF_TIME ist ein Freeware-Programm von

                               Ralf Zimmermann
                               Am  Ruhwehr  35
                               6200  Wiesbaden


3    Entstehungsgeschichte

Fr Rechner ohne Hardware-Uhr gibt es von verschiedenen Firmen 
DCF77-Empfnger, die man mit dem Rechner verbindet, um damit die 
offizielle Richtzeit der Bundesrepublik Deutschland mit hoher 
Genauigkeit zu empfangen.
Ich besitze einen solchen Empfnger von der Firma Conrad. Die 
Dekodierung erfolgt per Software. Die mitgelieferte Software lsst 
einige Wnsche offen.

DCF_TIME bietet nun die Mglichkeit, die vom Empfnger gelieferten 
Signale zuverlssig und unauffllig zu dekodieren.  Die Dekodierung 
luft im Hintergrund und sorgt regelmssig fr die aktuelle Uhrzeit.
Als besonderes Feature kann man zwischen der Ortszeit in Deutschland 
(MEZ, MESZ) und der Weltzeit UTC whlen. Die Sommerzeit wird 
automatisch beachtet.
Als Freeware-Produkt erhalten Sie hiermit alle zu DCF_TIME ntigen 
Dateien und Informationen. DCF_TIME besteht aus folgenden Dateien:

      DCF_TIME.PRG      Das Programm fr den AUTO-Ordner
      DCF_TIME.INF      Beispiel-Datei fr 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 fr Batch-Verarbeitung
      DCF77.H           Die Header-Datei fr C, sie enthlt 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-Empfnger nicht am Joystick-Port angeschlossen 
haben,  so mssen Sie noch eine Datei mit den Parametern fr den 
Decoder erstellen.  Dasselbe gilt, falls Sie die weiteren 
Mglichkeiten des Decoders nutzen wollen. Die ntige Datei nennt sich 
DCF_TIME.INF und sollte im selben Verzeichnis wie DCF_TIME.PRG liegen. 
Am einfachsten lsst 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 ntig!), 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 >2.00 haben. 
Dieses neue Kontrollfeld erlaubt es, einzelne Module (mit der Endung 
CPX) nachzuladen.
Fr ltere TOS-Versionen ist das neue Kontrollfeld nicht vorgesehen - 
aber abgesehen von ein paar Modulen luft es z. B. auch unter TOS 1.04 
ohne Probleme. Ich benutze es tglich und kann es nur empfehlen!

DCF_TIME luft auf allen ST, STe, Mega-ST, Mega-STe, TT und 
Falcon-Rechnern von Atari.


5    Funktionsweise der Programme

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

Die Uhrzeit wird aus dem Tastatur-Prozessor gelesen. Damit wird 
erreicht, dass nach einem Warmstart sofort wieder die dorthin 
gesicherte Zeit zur Verfgung steht.
Ab sofort sorgt die Decoder-Routine im Hintergrund fr eine 
bestmgliche Entzifferung des empfangenen DCF-Signals. Desgleichen 
wird die System-Zeit im Rechner in regelmssigen Abstnden gesetzt.

Anmerkung: Das Dekoder-Programm ist jetzt schon knapp 9 kB gross. 
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 smtliche Daten ber das 
empfangene DCF77-Signal sowie ber den Decoder an.
Es dient also hauptschlich zur Information, was der Decoder denn so 
treibt. Fr die eigentliche Funktion des Zeit-Dekodierens und 
-Stellens hat es keine Bedeutung.
Desweiteren lsst sich hiermit das Verhalten des Dekoders 
beeinflussen.

Das Programm DCF_WAIT.TOS ist fr diejenigen gedacht, die automatisch 
irgendwelchen Datenbestand crunchen lassen. Falls dieses Crunchen mit 
dem Datum als Kriterium geschieht, so ist es natrlich 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 ausfhrliche Anzeigen der Aktionen rund um 
den DCF77-Decoder. Man kann alle empfangenen Signale ablesen sowie ein 
paar Parameter einstellen.

   o 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 whlen. (Wer 
     htte DAS gedacht?)

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

   o 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.

   o DCF77-Signale...
     Hier kann man alle Informationen sehen,  die das ursprngliche 
     DCF-Signal bermittelt hat.

   o Letztes Stellen...
     Hier knnen 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

Ursprnglich war diese Software dafr ausgelegt, die Signale des 
DCF-Empfngermoduls der Fa. Conrad fr den Atari-ST auszuwerten.  Der 
Anschluss an den Rechner erfolgt ber den zweiten Joystick-Port. 
Mittlerweile luft die Software auch mit anderen Empfnger-Modulen und 
an anderen Schnittstellen.
Der vorliegenden Version von DCF_TIME ging eine aufwendige 
Beta-Test-Phase vorraus. Sie arbeitet nun mit verschiedenen Eingngen 
(Ports genannt) fr das DCF77-Signal und mit verschiedenen 
Empfngermodulen zusammen. Nachfolgend beschreibe ich die bisher 
benutzten Ports. Falls es Probleme beim Anschluss gibt, so kann ich 
gerne mit Tips aushelfen. Mchte jemand einen anderen Port benutzen, 
der hier noch nicht aufgefhrt ist, so kann er sich ja mit mir in 
Verbindung setzen. Bisher werden drei Ports untersttzt:

					JOY	Joystick-Port (JOY1, also nicht die Maus)
					RI1	Ring-Indicator von MODEM1
					RI2	Ring-Indicator von MODEM2


8.1 Anschluss am Joystick-Port (JOY)

Der Anschluss des Moduls an den Rechner erfolgt ber einen 9-poligen 
Sub-D-Verbinder.
Die Belegung der Anschlsse ist folgende:

                                   1: Signal
                                   7: +5V
                                   8: Masse


8.2    Anschluss an MODEM1 (RI1)

Das Signal wird ber den Ring-Indicator-Anschluss (RI genannt) in den 
Rechner gebracht. Dazu muss 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 
Funktionalitt.
Lediglich einige Fax-Programme fr den Atari fragen explizit den 
RI-Kontakt ab.  In diesem Fall sollte man seinen DCF-Empfnger 
natrlich nicht an diesem Anschluss betreiben.

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

Der Anschluss 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 Eingnge der MODEM1-Schnittstelle kann man auch 
mit TTL-Pegeln benutzen! Die im Atari benutzten 
Schnittstellen-Bausteine sind da sehr tolerant.


8.3    Anschluss an MODEM2 (RI2)

Dies funktioniert analog zu dem Anschluss an MODEM1, es wird ebenfalls 
der RI benutzt. Leider konnte ich speziell diesen Port noch nicht 
ausfhrlich 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 Datei DCF_TIME.INF

Das Decoder-Programm kann nun mittels einer Datei konfiguriert werden. 
Dies ist ntzlich, falls man nicht die Default-Einstellungen verwenden 
mchte und XControl 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 lsst sie 
einfach von dem CPX-Modul mittels 'Konfiguration sichern' erzeugen. 
Bisher werden folgende Variablen ausgewertet:


9.1    PORT

Bestimmt, welcher Port fr die DCF77-Signale verwendet werden soll.
Mgliche 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 Verfgung gestellt wird.
Mgliche Werte sind:

                      LOC   Deutsche Ortszeit
                      UTC   Weltzeit (UTC)
                      MEZ   MittelEuropische Zeit
                      MESZ  MittelEuropische SommerZeit


Die Weltzeit (UTC) ist wohl vor allem fr 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, dass die Zeit nur einmal bernommen wird, 60 
bedeutet ein stndliches Setzen der Zeit. Werte darber sind nicht 
erlaubt.


9.4    QUICK_SET

Definiert das Verhalten des Decoders fr 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 Verzgert sich das 
          Stellen nach dem Booten natrlich um eine weitere Minute.
     OFF  Dies ist die schnellere Mglichkeit, 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 ntzlich, wenn 
           alles ordentlich luft und man beim booten sowieso schon so 
           viele Texte angezeigt bekommt. Fehlermeldungen werden 
           natrlich nicht unterdrckt!
    LONG   Es wird die selbe Meldung wie bei SHORT ausgegeben, aber 
           zustzlich meldet DCF_TIME jede Aktion und gibt die 
           eingestellten Parameter aus.


9.6    Beispiel

Das File enthlt z. B. folgende Zeilen:

                                PORT = JOY
                                ZONE = LOC
                                SET_EVERY = 60

Das bedeutet in diesem Beispiel, dass 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

   o Version 1.0
     Dies ist die erste Version, die einer kleinen "Offentlichkeit 
     vorgestellt wurde. Es gab noch kein CPX-Modul, dafr erfolgten 
     alle Einstellungen ber ein Accessorie.
     Alles funktioniert funktionierte schon prchtig, aber es gibt ja 
     bekanntlich nichts, was man nicht besser machen kann.

   o 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 fr das 
          DCF77-Signal untersttzt.

        - Alle Einstellungen erfolgen jetzt ber ein CPX-Modul.

   o Version 1.2
        - Nun funktioniert auch der RI2-Port (RingIndicator von 
          MODEM2).
        - Der Decoder ist jetzt etwas schneller geworden.
        - Die Erkennung von gestrten Signalen und unsinnigen 
          Zeitangaben wurde stark verbessert. Dies ist lediglich fr 
          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 Prioritt herab und 
          behindert keine High-Speed-bertragungen mehr.

          (Hallo Harun!)


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 
fr den eigenen Gebrauch weiter verbessern.


12     Copyright (Das Unvermeidliche...)

DCF_TIME ist ein Freeware-Produkt. Das bedeutet, Sie drfen 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 fr 
solche Verwendung.

Da mich dieses Produkt einige Mhe, Zeit und sogar Geld gekostet hat, 
mchte 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 knnte damit wenigstens die Kosten fr meinen 
C-Compiler wieder reinholen. Halten Sie das nicht fr eine faire 
Sache?

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

                        Nassauische Sparkasse Wiesbaden
                        BLZ      510  500  15
                        Konto   1010  299  72

Fr Anregungen und Fehlerberichte bin ich immer dankbar!



Viel Spass und guten Empfang wnscht



Ralf Zimmermann



Auf elektronischem Weg bin ich zu erreichen unter:

              Maus-Netz     : Ralf Zimmermann @ WI2
              Fido-Netz     : Ralf Zimmermann on 2:2405/1.9
              Packet-Radio  : DL1FDT @ DB0GV  (ex. DG8FCA)


13     Post Scriptum (War eigentlich nicht geplant)

Zu der vorliegenden Version habe ich die Anleitung in LaTeX, meinem 
Lieblingstextsystem verfast. Natrlich sehe ich ein, das dem Programm 
eine Anleitung als ASCII-Text beiliegen muss! Deshalb habe ich mit 
verschiedenen Programmen (TEX2TXT, DVI2TTY) versucht einen solchen 
ASCII-Text automatisch erstellen zu lassen.

Vorweg: es ist nicht gelungen...!

Mit dem erstgenannten Programm gab es etliche Probleme - ich sollte 
dem Autor wohl mal schreiben. Der hier vorliegende Text wurde nun mit 
DVI2TTY erstellt und dann von Hand nachbearbeitet - es hat keinen Spa 
gemacht!

Wenn dieser Text also etwas bel aussieht, dann bitte ich um 
Entschuldigung, der Inhalt sollte aber auch so rberkommen. Vielleicht 
bekomme ich dieses Problem ja noch in den Griff. Ich wollte nur 
endlich die Anleitung fertigmachen, da dies seit Wochen das einzige 
ist, was die Auslieferung der Version 1.2 verzgert.
