DCF_TIME Version 1.2 Die ultimative Software zu allen DCF77-Empf„ngern! 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 l„sst einige Wnsche offen (ich halte mich stark zurck...). Diesem šbel hilft diese Software ab. DCF_TIME ist eine zuverl„ssige und schnelle Software zur Dekodierung der DCF77-Signale. Es werden verschiedene Ports fr die ankommenden Signale untersttzt. ACHTUNG: Die Software empf„ngt natrlich keine DCF-Signale! Dazu brauchen Sie eine kleine Zusatz-Hardware, eben einen der beschriebenen Empf„nger. 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-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„sst einige Wnsche 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 fr 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 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 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 mssen Sie noch eine Datei mit den Parametern fr 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„sst 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 >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 l„uft es z. B. auch unter TOS 1.04 ohne Probleme. Ich benutze es t„glich und kann es nur empfehlen! DCF_TIME l„uft 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 M”glichkeit 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 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 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 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. Fr die eigentliche Funktion des Zeit-Dekodierens und -Stellens hat es keine Bedeutung. Desweiteren l„sst 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 w„hlen. (Wer h„tte 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 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 Ursprnglich war diese Software dafr ausgelegt, die Signale des DCF-Empf„ngermoduls der Fa. Conrad fr den Atari-ST auszuwerten. Der Anschluss an den Rechner erfolgt ber den zweiten Joystick-Port. Mittlerweile l„uft die Software auch mit anderen Empf„nger-Modulen und an anderen Schnittstellen. Der vorliegenden Version von DCF_TIME ging eine aufwendige Beta-Test-Phase vorraus. Sie arbeitet nun mit verschiedenen Eing„ngen (Ports genannt) fr das DCF77-Signal und mit verschiedenen Empf„ngermodulen zusammen. Nachfolgend beschreibe ich die bisher benutzten Ports. Falls es Probleme beim Anschluss gibt, so kann ich gerne mit Tips aushelfen. M”chte 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 Funktionalit„t. Lediglich einige Fax-Programme fr den Atari fragen explizit den RI-Kontakt ab. In diesem Fall sollte man seinen DCF-Empf„nger 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 Eing„nge 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 m”chte 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 l„sst 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. 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 Verfgung 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 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 Verz”gert sich das Stellen nach dem Booten natrlich 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 ntzlich, wenn alles ordentlich l„uft 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 zus„tzlich meldet DCF_TIME jede Aktion und gibt die eingestellten Parameter aus. 9.6 Beispiel Das File enth„lt 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 pr„chtig, 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 gest”rten 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 Priorit„t 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, 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 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 verz”gert.