Anhang
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:
DCF-TIME ist ein Freeware-Programm von
Ralf Zimmermann
Am Ruhwehr 35
65207 Wiesbaden
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
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.
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.
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!
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 */
};
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:
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?
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.
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!
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:
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
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.
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.
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.
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.
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.
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.
- 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.
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.
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
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.