@DATABASE DCF77.guide
@MASTER DCF77.guide
@$VER: 3.4
@AUTHOR "Ralf Gruner"
@(c) "© Ralf Gruner, Großschönau, Germany"
@INDEX "Index"

@NODE "Main" "DCF77 Handbuch"
@{JRIGHT}***RGR***
@{JCENTER}
DCF77:  @{b}Das@{ub} Empfangsprogramm für den Zeitsignalsender DCF77
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Version 3.4

Bedienungsanleitung
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

@{JLEFT}
  @{u}Inhalt:@{uu}



  @{" Vorwort " LINK "Vorwort" 0}
  @{" Neuigkeiten dieser Version " LINK "Neuigkeiten" 0}
  @{" Schnelleinstieg " LINK "Schnelleinstieg" 0}
  @{" Lieferumfang " LINK "Lieferumfang" 0}
  @{" DCF77  -  Normalfrequenz und BCD-Zeitcode " LINK "Normalfrequenz und Zeitcode" 0}
  @{" Funkuhrempfang mit dem Amiga " LINK "Funkuhrempfang mit dem Amiga" 0}
  @{" Installation und Programmstart " LINK "Installation" 0}
  @{" Installation rückgängig machen " link "Desinstallation" 0}
  @{" Bedienung " LINK "Bedienung" 0}
  @{" Eigenschaften " LINK "Eigenschaften" 0}
  @{" Festlegen der Betriebsart " LINK "Betriebsart" 0}
  @{" Genauigkeit " LINK "Genauigkeit" 0}
  @{" Fehlersicherheit " LINK "Fehlersicherheit" 0}
  @{" DCF77-Empfänger und Dongle " link "DCF77-Empfänger und Dongle" 0}
  @{" Unverträglichkeiten mit anderen Programmen " link "Unverträglichkeiten" 0}
  @{" Mögliche Weiterentwicklung " link "Weiterentwicklung" 0}
  @{" Anschluß von Empfängern " link "Anschluß von Empfängern" 0}
  @{" Fehlersuche " LINK "Fehlersuche" 0}
  @{" Hilfsprogramme " LINK "Hilfsprogramme" 0}
  @{" Copyright " LINK "Copyright" 0}
  @{" Registrierung " LINK "Registrierung" 0}
@ENDNODE

@NODE "Vorwort" "Vorwort"
@SMARTWRAP
@{LINDENT 1}


Willkommen zur perfekten Uhrzeit-Steuerung Ihres Amiga!


DCF77 ist der Zeitsignalsender in Mainflingen, der die meisten funkgesteuerten
Uhren in Deutschland mit der genauen Zeit versorgt.

Mit der vorliegenden Software steht Ihnen eine zuverlässige Schnittstelle
zwischen dem Amiga-Betriebssystem und den Informationen dieses Senders zur
Verfügung.


Das Programm DCF77 ist ein Commodity und läuft auf allen Amigas, die mit einem
Betriebssystem ab Version 37 (Kickstart 2.04) ausgestattet sind. Es ist entwickelt
worden, um Amiga-Benutzern den professionellen Funkuhr-Einsatz möglich zu machen,
da bisherige Softwarelösungen diesem Anspruch nicht standhalten konnten. Der
Programmierung lagen deshalb die folgenden Eigenschaften als Prämissen zugrunde:

@{lindent 2}

- Ständiger Empfangsbetrieb bei minimalem Rechenzeit-Verbrauch

- Keine Beeinflussung anderer laufender Anwendungsprogramme

- Exaktes und fehlerfreies Stellen der Amiga-Systemzeit

- Weitestgehende Konfigurierbarkeit.
@{lindent 1}


Zum Betrieb mit diesem Programm sind alle Funkuhrempfänger geeignet, die das
demodulierte AM-Signal vom Sender DCF77 als TTL-Signal (für den Gameport oder die
Parallelschnittstelle) oder im V24-Pegel (für die serielle Schnittstelle) zur
Verfügung stellen (z.B. der Amiga-Empfänger von Conrad Electronic).


@ENDNODE

@NODE "Neuigkeiten" "Neuigkeiten"
@SMARTWRAP
@{LINDENT 1}

@{B}Neuigkeiten dieser Version@{UB}


Nun, ganz genau läßt sich hier gar nicht sagen, was alles neu ist, da das
schließlich von der Programmversion abhängt, die Sie bereits kennen. Da die
Entwicklung einen längeren Zeitraum in Anspruch genommen hat, sind eine Reihe
kleiner Verbesserungen veröffentlicht worden, und Sie sollten am besten in der
@{" Änderungsliste " LINK "DCF77 History" 0} von DCF77 vergleichen, was Sie
noch nicht kennen.


Neuerungen seit der Version 2 sind die Unterstützung vieler Schnittstellen
(Gameport 2, Gameport 1 mittlere Maustaste, serielle Schnittstelle,
Parallelschnittstelle), eine weiterentwickelte Datenübergabe an andere
Programme, neue Hilfsprogramme (ein Zeitzeichen-Commodity).


Und die wesentliche Verbesserung ist:

DCF77 ist jetzt mit einer Fähigkeit ausgestattet, die ich mangels besserer
Bezeichnungen Software-PLL nennen will.

Diese Funktion macht es möglich, die Amiga-Systemzeit so genau zu stellen, daß
die Abweichung weniger als eine tausendstel Sekunde beträgt.
Wenn Sie mehr darüber wissen möchten, dann lesen Sie bitte das Kapitel
@{" Genauigkeit " LINK "Genauigkeit" 0}.



@ENDNODE

@NODE "Schnelleinstieg" "Schnelleinstieg"
@SMARTWRAP
@{LINDENT 1}

@{B}Schnelleinstieg:@{UB} Starten Sie das Skript "Ausprobieren" durch Anklicken
oder klicken Sie auf das Feld "Ausprobieren" unten auf dieser Seite.


Damit starten Sie die Programme


- Exchange (der Workbench),

- GClock (aus der Schublade Utilities) und

- DCF77 Diagnosis (aus der Schublade "DCF77 (Kickstart 2.04)").


DCF77 Diagnosis läßt sich mit der Tastenkombination Ctrl-C oder mittels
des zu diesem Zweck gestarteten Exchange wieder beenden.




@{JCENTER}
@{" Ausprobieren " SYSTEM "execute /SofortAusprobieren"}

@ENDNODE

@NODE "Lieferumfang" "Lieferumfang"
@SMARTWRAP
@{LINDENT 1}

@{B}Lieferumfang@{UB}


Das DCF77-Paket besteht aus folgenden Programmen:


@{" DCF77 " LINK "Vorwort"}             @{B}Das Empfangsprogramm@{UB} (als Commodity)

@{" DCF77-1.2 " LINK "/DCF77 (old)/DCF77 (Kickstart 1.2)/DCF77-1.2-Anleitung/MAIN"}         Das Empfangsprogramm für Kickstart ab 1.2

@{" DCF77 Diagnosis " LINK "DCF77 Diagnosis"}   Eine Version des Empfangsprogramms zur Fehlersuche

@{" GClock " LINK "GClock"}            Eine Analog-Uhr mit Anzeige des DCF77-Empfangsstatus

@{" TimeSignal " LINK "TimeSignal"}        Ein akustisches Zeitzeichen (als Commodity; ab OS 3.0)

@{" WaitForDCF77 " LINK "WaitForDCF77"}      Ein Shell-Befehl, der auf den Empfang der DCF77-Zeit wartet

@{" WaitDCF77ifCrash " LINK "WaitDCF77ifCrash"}  Ein Shell-Befehl, der bei verstellter Hardware-Uhr wartet.



Weiterhin finden Sie im Verzeichnis "Developer"
noch die Sourcecodes der beiden Shell-Befehle
@{" WaitForDCF77.c " LINK "/Developer/WaitForDCF77.c/MAIN"} und
@{" WaitDCF77ifCrash.c " LINK "/Developer/WaitDCF77ifCrash.c/MAIN"}

und eine @{" Dokumentation " LINK "/Developer/DCF77-Datenaustausch/MAIN"}, wie ein Programm den DCF77-Empfangsstatus erfahren kann.

@ENDNODE

@NODE "Normalfrequenz und Zeitcode" "DCF77 - Normalfrequenz und BCD-Zeitcode"
@SMARTWRAP
@{LINDENT 1}

@{B}DCF77  -  Normalfrequenz und BCD-Zeitcode@{UB}


DCF77 - so heißt der Sender, mit dem die Physikalisch-Technische
Bundesanstalt in Braunschweig seit 1959 eine Normalfrequenz und seit 1973
zusätzlich Datum und Uhrzeit ausstrahlt.

Der Sender steht in Mainflingen bei Frankfurt am Main und arbeitet auf
77,5 kHz mit einer Leistung von 50 kW.

Die Zeitbasis stellen dabei mehrere Atom-Uhren (derzeit zwei Cäsium- und
eine Rubidium-Uhr) dar. Die Abweichung des daraus abgeleiteten Signals
beträgt weniger als eine Sekunde in 1 Million Jahren.


Im Zeitgesetz von 1978 wird die Physikalisch-Technische Bundesanstalt mit
der Verbreitung der Gesetzlichen Zeit in Deutschland beauftragt. Die über
DCF77 verbreitete Zeitinformation stellt also die offizielle
Zeit der Bundesrepublik Deutschland dar.


Das DCF77-Signal ist - abhängig von Tages- und Jahreszeit - bis zu einer
Entfernung von etwa 1900 km (tagsüber) bzw. 2100 km (nachts) zu empfangen.
Die Grafik @{" Reichweite " LINK "/Range/MAIN" 0}, die sich mit einem
beliebigen Amiga-Grafik-Programm anschauen läßt, illustriert die Ausbreitung
des Langwellensignals:

Im Bereich bis ca. 600 km ist der Sender als Bodenwelle zu empfangen.
Ab ca. 1100 km überwiegt der Raumwellenanteil. Im Abstand von 600 km
bis 1100 km vom Sender kann es gelegentlich bei gleichen Feldstärken
von Boden- und Raumwelle zur Auslöschung des Signals kommen (Fading von
15 min Dauer und mehr).


Die logischen Informationen (die Zeitinformationen) werden zusätzlich zur
Normalfrequenz (der Trägerfrequenz des Senders, also 77,5 kHz) übertragen.
Das geschieht durch negative Modulation des Signals (Absenken der
Trägeramplitude auf 25%).


Der Beginn der Absenkung liegt jeweils auf dem Beginn der Sekunden 0...58
innerhalb einer Minute. In der 59. Sekunde erfolgt keine Absenkung, wodurch
die nachfolgende Sekundenmarke den Beginn einer Minute kennzeichnet, und
der Empfänger synchronisiert werden kann.
Der logische Wert der Zeichen ergibt sich aus der Zeichendauer: 100 ms sind
die "0", 200 ms sind die "1".


Damit stehen innerhalb einer Minute 59 Bit für Informationen zur Verfügung.
Davon werden die Sekundenmarken 1 bis 14 für Betriebsinformationen
verwendet, die nicht für DCF77-Nutzer bestimmt sind.
Die Sekundenmarken 15 bis 19 kennzeichnen die Sendeantenne, die Zeitzone
und kündigen Zeitumstellungen an:


15           "0": Normalantenne, "1": Reserveantenne

16           "1": Am Ende dieser Stunde wird MEZ/MESZ umgestellt.

17           "0": MEZ,  "1": MESZ

18           "0": MESZ, "1": MEZ

19           "1": Am Ende dieser Stunde wird eine Schaltsekunde eingefügt.


Von der 20. bis zur 58. Sekunde wird die Zeitinformation für die jeweils
nachfolgende Minute seriell in Form von BCD-Zahlen übertragen:


20           Startbit ("1")

21 - 27      Minute

28           Parität Minute

29 - 34      Stunde

35           Parität Stunde

36 - 41      Monatstag

42 - 44      Wochentag

45 - 49      Monat

50 - 57      Jahr

58           Parität Datum


Für den Anwender einer Funkuhr bedeutet das, daß der Empfang mindestens
eine volle Minute laufen muß, bevor die Zeitinformation zur Verfügung
stehen kann.


Die innerhalb dieser Minute dekodierte Information ist lediglich durch
drei Paritätsbits gesichert, somit führen bereits zwei fehlerhaft empfangene
Bits zu einem auf diese Weise nicht zu erkennenden Übertragungsfehler.
Um eine zuverlässige Zeitinformation zu erhalten, muß man also zusätzliche
Maßnahmen ergreifen, z.B. indem die Redundanz der Zeitinformation in
aufeinanderfolgenden Minuten ausgewertet wird.


Wer sich noch genauer informieren möchte, findet alles Wissenswerte über
den Sender DCF77 in:

   Dr.-Ing. Peter Hetzel: Zeitinformation und Normalfrequenz,

   telekom praxis, Heft 1/1993, S. 25-36.


@ENDNODE

@NODE "Funkuhrempfang mit dem Amiga" "Funkuhrempfang mit dem Amiga"
@SMARTWRAP
@{LINDENT 1}

@{B}Funkuhrempfang mit dem Amiga@{UB}


Seit einigen Jahren können auch Amiga-Benutzer die Systemzeit ihres
Computers vom Sender DCF77 steuern lassen:


Empfängerschaltungen (ursprünglich einfache Geradeausempfänger) sind 
von verschiedenen Elektronikzeitschriften als Bauanleitung
veröffentlicht worden, zuletzt in Funkamateur 3/95, S.264f.

(Mit einem selbstgebauten Empfänger hat auch der Autor des vorliegenden
Programms vor einigen Jahren seine ersten DCF77-Erfahrungen gesammelt;
aber nicht mit einem Amiga zur Dekodierung des Signals, sondern mit einer
Eigenbau-Z80-Schaltung, die auf Assemblerniveau programmiert wurde.)


Als schließlich ein Empfängerchip zur Verfügung stand, hat als erste
Firma Conrad Electronic einen preisgünstigen Empfänger produziert,
anfangs mit Software für den C64.

Das erste veröffentlichte Amiga-Empfangsprogramm war (soweit bekannt) ein
Amiga-Basic-Programm von Dr. Peter Kittel.

Später kam dann auch eine Amiga-Software von Conrad Electronic dazu.


Während des Einsatzes der Conrad-Software über den Zeitraum von reichlich
einem Jahr auf einem Amiga, der den Info-Kanal einer Kabel-TV-Anlage
steuert, haben sich so viele Probleme damit ergeben, daß die weitere
Benutzung des Programms nicht sinnvoll erschien. Und da nach dieser Zeit
immer noch kein Update von Conrad zu erhalten war, ist mit der
Programmierung der vorliegenden DCF77-Empfangssoftware begonnen worden.


Den Vertrieb dieses Programmpakets hat die OsaMatic übernommen (Conrad hatte
kein Interesse) und bietet zusätzlich einen hochwertigen DCF77-Empfänger
der Firma boeder an, der für den Einsatz am Amiga modifiziert ist.




Die Amiga-Empfangssoftware existiert in zwei Versionen:
eine einfache, die auch noch mit Kickstart 1.2 und 1.3 funktioniert und die
Vollversion, die als Commodity ins System eingebunden wird.


Zusätzlich finden Sie noch eine Analog-Uhr, die neben der Zeit und dem
Datum auch den erfolgreichen Empfang anzeigt,@{LINE}
eine Version des DCF77-Programms, die die laufenden Vorgänge in einem
Textfenster anzeigt, so daß sich der Empfangsvorgang überprüfen läßt,@{LINE}
und ein Zeitzeichen-Commodity.



Das vorliegende Empfangsprogramm unterscheidet sich von anderen dem Autor
bekannten Amiga-DCF77-Programmen im wesentlichen in folgenden Punkten:

@{LINDENT 3} @{PARI -2}

- Es stellt die Uhr genau.

- Es beeinflußt keine anderen Anwendungen, die sich an die
Amiga-Programmierrichtlinien halten.

- Es überprüft zusätzlich zur Auswertung der Paritätsbits die Redundanz
der Zeitinformation in aufeinanderfolgenden Minuten und garantiert
damit eine akzeptabel niedrige Fehlerrate.

- Es läuft im Dauerbetrieb und bricht auch bei längeren Sendepausen die
Empfangsversuche nicht ab (bei Gewitter und Wartungsarbeiten wird der
Sender DCF77 abgeschaltet).

- Es stellt auch die akkugestützte Uhr des Amiga auf die genaue Zeit.

- Es läßt sowohl das Schließen als auch die Änderung der Grafikbetriebsart
des Workbench-Screens zu.

- Es reserviert das Gameport ordnungsgemäß beim Betriebssystem und benutzt
das Gameport Device zum Einlesen der Informationen (kein direkter
Hardwarezugriff in der betreffenden Betriebsart).

- Für spezielle Einsatzfälle kann wahlweise auf die systemkonforme Betriebsart
verzichtet und die Hardware direkt angesprochen werden.

- Es braucht sehr wenig Rechenzeit (auf einem Amiga 4000/040 in der
Standard-Betriebsart am Gameport ca. ein Zehntel gegenüber anderen Lösungen!).


Besonderheiten des Programms sind außerdem:

- Es paßt sich dynamisch (!) an die Zeitkonstanten des jeweiligen Empfängers
an und verbessert dadurch die Auswertung der Informationen auch bei
ungünstigen Empfangsbedingungen.

- Eine Software-PLL mit geregelter Zeitkonstante erzielt eine auf
Desktop-Computern bisher unerreichte Genauigkeit (besser als 1ms).

- Es erkennt automatisch die Phasenlage des benutzten Empfängers.

- Es unterstützt verschiedene Schnittstellen und findet selbständig den
Empfänger.

- Es kann die Uhrzeit für beliebige Zeitzonen einstellen.

- Andere Programme können über eine dokumentierte Software-Schnittstelle den
aktuellen Empfangsstatus erfahren.

@{LINDENT 1}
@{PARI 0}

Bei ausreichendem Interesse für diese Software ist eine Weiterentwicklung
möglich, wobei auf möglichst alle Nutzerwünsche eingegangen wird.

@ENDNODE

@NODE "Installation" "Installation und Programmstart"
@SMARTWRAP
@{LINDENT 1}

@{b}Installation und Programmstart@{ub}


Wenn Ihr DCF77-Empfänger noch nicht angeschlossen ist: Schalten Sie Ihren Amiga
aus, schließen Sie den DCF77-Empfänger je nach Modell entweder am Gameport 2 an (dem
Joystickanschluß neben dem Mausanschluß) oder an der seriellen Schnittstelle
und schrauben Sie ihn gegebenenfalls fest.

Besitzer von Amiga 1000 und 600 bekommen möglicherweise Probleme beim Anschließen
der von OsaMatic gelieferten Empfänger für Gameport, die mit Standard-Sub-D-Steckern
ausgestattet sind, da die Anschlüsse dieser Computer nur für Maus- und
Joystick-Stecker ohne Verschraubung geeignet sind.
In diesem Fall hilft eine handelsübliche Joystickverlängerung mit angegossenem
Stecker weiter (z.B. hama 42130 oder boeder 61920).


Schalten Sie nun den Amiga wieder ein, und booten Sie wie üblich mit Ihrer Workbench.
Richten Sie den Empfänger dann so aus, daß die Anzeige (wenn Ihr Empfänger eine hat)
im Sekundenabstand blinkt.

Sollte Ihnen das nicht gelingen, achten Sie darauf, daß der Empfänger weit genug
von Störquellen entfernt ist (Mögliche Störquellen: Computer, Monitor,
Fernsehgerät, Drucker, Flachbettscanner usw.). Auch hierbei kann ein
Joystickverlängerungskabel nützlich sein oder ein neunpoliges Kabel mit Buchse und
Stecker, wie es im Computerfachhandel als serielles Verbindungskabel erhältlich
ist.


Falls Sie Elektronikkenntnisse besitzen und einen Empfänger einer anderen
Bauart benutzen wollen, dann lesen Sie bitte den Abschnitt
@{" Anschluß von Empfängern " LINK "Anschluß von Empfängern" 0}.



Das Programm DCF77 kann durch Anklicken gestartet werden. Wenn es automatisch bei
Systemstart aktiviert werden soll, dann kopieren Sie es bitte in die Schublade
WBStartup ihrer Workbench. Dies sollten Sie von dem Installationsskript erledigen
lassen (Doppelklick auf InstallDCF77), weil auf diese Weise sichergestellt wird,
daß frühere Installationen von DCF77 entfernt werden. Nachdem DCF77 gestartet
worden ist, dauert es meistens zwei bis drei Minuten, bis die Systemzeit des Amiga
eingestellt wird (die Übertragung der Zeitinformation benötigt mindestens eine
Minute).


Sollte bei der ersten Benutzung von DCF77 die Systemzeit falsch eingestellt werden
oder der Empfang überhaupt nicht funktionieren, dann lesen Sie den Abschnitt
@{" Fehlersuche " LINK "Fehlersuche" 0}.

@ENDNODE

@NODE "Desinstallation" "Installation rückgängig machen"
@SMARTWRAP
@{LINDENT 1}

@{b}Installation rückgängig machen@{ub}


Das installierte Programm DCF77 läßt sich problemlos mit UninstallDCF77 wieder aus
Ihrem System entfernen.

@ENDNODE

@NODE "Bedienung" "Bedienung"
@SMARTWRAP
@{LINDENT 1}

@{b}Bedienung des Programms DCF77@{ub}


Wie alle Commodities läßt sich DCF77 mittels Exchange steuern.

Das Programm Exchange finden Sie im Verzeichnis Tools/Commodities der Workbench.

Wenn man mit Commodities arbeitet, dann verschiebt man Exchange üblicherweise auch
nach WBStartup, damit es ständig verfügbar ist; und damit es bei seinem Start nicht
sofort ein Fenster öffnet, aktiviert man  das Piktogramm von Exchange, wählt den
Menüpunkt Piktogramm/Informationen und ändert bei 'Merkmale' (bzw. 'Tool Types')
den Eintrag CX_POPUP=YES in CX_POPUP=NO.

Exchange wird im allgemeinen (falls Sie das nicht selbst geändert haben) mit der
Tastenkombination Ctrl-Alt-Help aktiviert.

@ENDNODE

@NODE "Eigenschaften" "Eigenschaften"
@SMARTWRAP
@{LINDENT 1}

@{b}Eigenschaften@{ub}


Das Programm DCF77 läßt sich auf verschiedene Weise einsetzen. Je nach Empfängertyp
und ausgewählter @{" Betriebsart " LINK "Betriebsart" 0} ergibt sich ein anderes
Verhalten.


Wenn Sie DCF77 ohne Änderung der bei der Auslieferung eingestellten Merkmale starten,
dann sucht es als erstes den Empfänger, indem es der Reihe nach alle vorgesehenen
Schnittstellen außer der Parallelschnittstelle ca. 2 Sekunden lang testet.

Wenn es keine Signale feststellt, wechselt es zur nächsten Schnittstelle und so fort,
bis der Empfänger gefunden ist. Wenn DCF77 während des Suchens auf eine andere
Signalquelle stößt, dann versucht das Programm, die Zeit zu empfangen, erkennt aber
nach ca. einer Minute, daß es sich nicht um Signale des Senders DCF77 handelt und
wechselt zur nächsten Schnittstelle.

Die Parallelschnittstelle wird nicht getestet, um zu vermeiden, daß während des
Testens möglicherweise gestartete Druckvorgänge blockiert werden.


Ist der Empfänger gefunden, wertet das Programm DCF77 dann kontinuierlich das
empfangene Signal aus und stellt bei erfolgreich gelesener Zeitinformation die
Amiga-Systemzeit (im Idealfall also zu jeder vollen Minute). Beim ersten
erfolgreichen Empfang nach dem Programmstart wird außerdem die akkugestützte Uhr
des Computers eingestellt und (wenn das Programm im Dauerbetrieb läuft) danach
immer beim ersten Einstellen der Systemzeit nach Mitternacht.


Wenn DCF77 versucht, die Zeit zu empfangen, dann ärgern Sie sich bitte nicht,
wenn es evtl. zum Einstellen der Zeit bei kritischen Empfangsbedingungen länger
braucht als andere Funkuhrprogramme. Das ist nämlich eine Frage der Prioritäten:
Das Signal vom Sender DCF77 besitzt leider keine allzu sichere Kodierung.
Deshalb muß man sich entscheiden, ob man die Zeit lieber schnell oder fehlerfrei
haben möchte.

Das vorliegende Programm ist für Anwender gedacht, denen eine richtige Uhrzeit
wichtiger ist als eine möglichst schnell empfangene, aber manchmal falsche Uhrzeit.


DCF77 besitzt eine Möglichkeit, andere Programme über seinen Status zu informieren.
Das Signal für erfolgreichen Empfang wird beim Stellen der Systemzeit gesetzt und
nach ca. 2 Stunden ohne erfolgreichen Empfang wieder zurückgesetzt. Außerdem
erkennt DCF77 innerhalb einer Minute, wenn die Systemzeit durch ein anderes
Programm verändert worden ist und löscht auch dann das Signal. Weiterhin können
andere Programme die verbleibende Zeit bis zum nächsten Stellen der Systemzeit
ermitteln.

Hilfsprogramme, die diese Funktionen anwenden, finden Sie in den
Schubladen "Utilities" und "Developer". Für den normalen Anwender ist aber
der einfachste Weg zum Erhalt dieser Informationen, die mitgelieferte Uhr zu
benutzen.


Das Programm DCF77 ist entwickelt worden, um ständig als Task mitzulaufen. Deshalb
wurde bei der Programmierung besonderer Wert darauf gelegt, daß DCF77 beim
Verbrauch von Rechenzeit sehr zurückhaltend ist, damit gleichzeitig arbeitende
Programme nicht beeinträchtigt werden. Bei vielen Aktionen hoher Priorität durch
andere Programme und überhaupt bei hoher Systembelastung nimmt die
Wahrscheinlichkeit für ein erfolgreiches Einlesen der DCF77-Zeit deshalb auch ab.

Wenn Sie bei den ersten Experimenten also schnell Erfolg erzielen wollen, sollten
Sie während der Empfangsphase besonders auf langsamen Amigas auf intensive
Workbenchbenutzung (Öffnen, Verschieben und Schließen von Fenstern) verzichten.
Speziell das Programm DCF77 Diagnosis ist aufgrund der ständigen Ausgabe von Texten
in ein Fenster anfällig für Störungen durch Workbench-Funktionen.

Sollte Ihnen auch später ein schneller Empfang wichtiger sein als der ungestörte
Betrieb anderer Programme, können Sie DCF77 auch mit einer höheren Priorität arbeiten
lassen. Die Priorität des DCF77-Tasks läßt sich mit dem Eintrag
@{" TASK_PRIORITY " LINK "TASK_PRIORITY" 0} in den Merkmalen (bzw. "Tool Types")
verändern.


Auf einem Standard-Amiga mit CPU 68000 und 7,09 MHz Taktfrequenz benötigt das
Programm DCF77 in der Gameport-Device-Betriebsart ca. 2% der Rechenzeit, auf einem
Amiga 4000/040 mit 25MHz sind es ca. 0,08%.


Noch ein Hinweis: Wenn Sie zum Vergleich mit anderen Funkuhren, der im Fernsehen
angezeigten Zeit oder Rundfunk-Zeitzeichen die  Workbench-Uhr (Utilities/Clock)
benutzen, dann werden Sie geringfügige Zeitabweichungen feststellen. Das Programm
Clock ist mit der Systemzeit nur lose gekoppelt und läßt Schwankungen bis zu minus
einer Sekunde zu (dadurch wird vermutlich ein klein wenig Rechenzeit gespart, oder
der Programmierer hielt eine genauere Anzeige schlicht für überflüssig). Damit Sie
die Möglichkeit haben, sich die genaue Zeit anzusehen, ohne nun erst die diversen
Amiga-PD-Serien nach Uhrenprogrammen absuchen zu müssen (wovon es aber genug gibt),
finden Sie in der Schublade Utilities noch ein Uhrenprogramm, das die Systemzeit
ganz genau anzeigt und außerdem (wie bereits erwähnt) den aktuellen Empfangsstatus
von DCF77 grafisch darstellt.

@ENDNODE

@NODE "Betriebsart" "Festlegen der Betriebsart"
@SMARTWRAP
@{LINDENT 1}

@{b}Festlegen der Betriebsart@{ub}


Die Funktionsweise des Programms DCF77 läßt sich über verschiedene Einträge in den
Merkmalen (bzw. englisch "Tool Types") des DCF77-Piktogramms beeinflussen. Die
voreingestellten Werte sind für den normalen Amiga-Nutzer eingerichtet, so daß Sie
nur dann etwas zu ändern brauchen, wenn Sie spezielle Wünsche haben.


Merkmale ändern Sie auf folgende Weise (Lesen Sie dazu auch Ihr Workbench-Handbuch,
Abschnitt über Merkmale für Piktogramme im Kapitel 3!): Wählen Sie das
DCF77-Piktogramm an (einmal anklicken) und rufen Sie die Funktion "Informationen"
aus dem Menü "Piktogramm" auf. In dem dann erscheinenden Fenster sehen Sie unter
anderem eine Liste von Schlüsselwörtern, die die einzelnen Funktionen beschreiben.
Sie können dann einen Eintrag auswählen, um ihn zu verändern oder zu löschen, oder
Sie können einen neuen Eintrag erzeugen. Im Lieferzustand von DCF77 sind alle
wichtigen Einträge für dieses Programm mit ihren zusätzlichen Angaben vorhanden,
aber in Klammern gesetzt. Die Klammern bedeuten, daß die Einträge nur als Kommentar
gelten und die jeweilige Standardeinstellung wirksam ist. Wenn Sie also etwas
ändern wollen, dann brauchen Sie lediglich die Klammern zu entfernen und dann die
Angaben nach dem Gleichheitszeichen Ihren Wüschen anzupassen. Nachdem Sie die
betreffenden Werte verändert haben, müssen Sie sie speichern, damit sie beim
nächsten Start von DCF77 wirksam werden.


Folgende Merkmale sind vorgesehen:


@{" SAFETY_LEVEL " LINK "SAFETY_LEVEL" 0}              Fehlersicherheit

@{" TASK_PRIORITY " LINK "TASK_PRIORITY" 0}             Einstellen der Task-Priorität

@{" LOCALE " LINK "LOCALE" 0}                    Benutzung der Locale-Library

@{" UPDATE_LOCALE " LINK "UPDATE_LOCALE" 0}             Aktualisieren der Locale-Einstellung

@{" DST " LINK "DST" 0}                       Anwenden der Sommerzeit

@{" UTC " LINK "UTC" 0}                       Einstellen auf Universalzeit

@{" GMT " LINK "UTC" 0}                       Einstellen auf Universalzeit

@{" PAUSE " LINK "PAUSE" 0}                     Warten nach Empfang

@{" ONE_TIME " LINK "ONE_TIME" 0}                  Nur einmal empfangen

@{" OFFSET.HOURS " LINK "OFFSETS" 0}              zu addierende Stunden

@{" OFFSET.MINUTES " LINK "OFFSETS" 0}            zu addierende Minuten

@{" OFFSET.SECONDS " LINK "OFFSETS" 0}            zu addierende Sekunden

@{" OFFSET.MICROSECONDS " LINK "OFFSETS" 0}       zu addierende Mikrosekunden

@{" QUIT_AFTER_TRIALS " LINK "QUIT_AFTER_TRIALS" 0}         Anzahl Empfangsversuche

@{" SAVE_DST " LINK "SAVE_DST_UTC" 0}                  Speichern der Sommerzeit

@{" SAVE_UTC " LINK "SAVE_DST_UTC" 0}                  Speichern der Universalzeit

@{" MAX_TIME_DIFFERENCE " LINK "MAX_TIME_DIFFERENCE" 0}       Abweichung Hardwareuhr

@{" ALLOWED_TIME_DIFFERENCE " LINK "ALLOWED_TIME_DIFFERENCE" 0}   zulässige Abweichung

@{" TIMER " LINK "TIMER" 0}                     Benutzter Timer

@{" PORT " LINK "PORT" 0}                      Benutzte Schnittstelle

@{" PIN " LINK "PIN" 0}                       Benutzter Stift

@{" ALLOCATE_RESOURCES " LINK "ALLOCATE_RESOURCES" 0}        Schnittstelle reservieren

@{" SCAN_PORTS " LINK "SCAN_PORTS" 0}                Schnittstelle suchen

@{" SUPPRESS_SCAN_MESSAGE " LINK "SUPPRESS_SCAN_MESSAGE" 0}     reservierte Schnittstelle übergehen

@{" CONTROL_GAMEPORT_HARDWARE " LINK "CONTROL_GAMEPORT_HARDWARE" 0} Ein-/Ausgabe steuern

@{" CONTROL_PARALLEL_HARDWARE " LINK "CONTROL_PARALLEL_HARDWARE" 0} Ein-/Ausgabe steuern

@{" CONTROL_SERIAL_HARDWARE " LINK "CONTROL_SERIAL_HARDWARE" 0}   Ein-/Ausgabe steuern

@{" SCAN_RATE " LINK "SCAN_RATE" 0}                 Abtastrate


Weitere Einträge bei den Merkmalen (z.B. CX_PRIORITY oder DONOTWAIT) sind
Standardeinträge des Amiga-Betriebssystems. Lesen Sie dazu bitte die entsprechenden
Abschnitte über Commodities Ihres Workbench-Handbuches (bei Amiga-OS 2 und 3 im
Kapitel 10).

@ENDNODE

@NODE "SAFETY_LEVEL" "SAFETY_LEVEL"
@SMARTWRAP
@{LINDENT 2}

@{b}SAFETY_LEVEL@{ub}              Standardeinstellung:  SAFETY_LEVEL=1


Festlegen der Empfangssicherheit des DCF77-Empfangsprogramms.


Die von DCF77 ausgestrahlte Zeitinformation ist so kodiert, daß ziemlich leicht
Übertragungsfehler auftreten können, die sich mit der vorgesehenen Fehlererkennung nicht
abfangen lassen. Deshalb überprüft DCF77 zusätzlich die Konstanz der Information.

Mit dem Eintrag SAFETY_LEVEL legen Sie fest, wie oft eine Zeit übereinstimmend empfangen
worden sein muß, um als fehlerfrei anerkannt zu werden.

Der Standardwert 1 bedeutet, daß die Zeit entweder mit der Systemzeit übereinstimmen
oder zweimal identisch empfangen werden muß, um als gültig zu gelten.


Die folgende Übersicht zeigt Ihnen die genäherte Fehlerwahrscheinlichkeit unter der
Annahme, daß es sich um gleichverteilte Einzelfehler handelt. Damit ist der ungünstigste
Fall angenommen; in der Praxis treten Empfangsfehler oft als Bündelfehler auf, was die
Fehlerwahrscheinlichkeit noch verringert.

Die angegebene Fehlerhäufigkeit ist die Häufigkeit der durch die Paritätsprüfung nicht
erkennbaren Empfangsfehler. Dieser Wert hängt sehr von den bei Ihnen vorherrschenden
Empfangsbedingungen ab und liegt zwischen mehreren Fehlern am Tag und einem Fehler
im Monat.


@{U}1 unerkannter Fehler je Stunde:@{UU} (Das ist nicht sehr realistisch.)


SAFETY_LEVEL=1:     1 Fehler in 5 Monaten

SAFETY_LEVEL=2:     1 Fehler in 60 Jahren

SAFETY_LEVEL=3:     1 Fehler in 200000 Jahren



@{U}1 unerkannter Fehler in 5 Stunden:@{UU}


SAFETY_LEVEL=1:     1 Fehler in 10 Jahren

SAFETY_LEVEL=2:     1 Fehler in 185000 Jahren

SAFETY_LEVEL=3:     1 Fehler in 3 Milliarden Jahren



@{U}1 unerkannter Fehler am Tag:@{UU}


SAFETY_LEVEL=1:     1 Fehler in 236 Jahren

SAFETY_LEVEL=2:     1 Fehler in 20 Millionen Jahren

SAFETY_LEVEL=3:     1 Fehler in 1,7 Billionen Jahren




@ENDNODE

@NODE "TASK_PRIORITY" "TASK_PRIORITY"
@SMARTWRAP
@{LINDENT 2}

@{b}TASK_PRIORITY@{ub}             Standardeinstellung:  TASK_PRIORITY=0


Festlegen der Priorität des DCF77-Empfangsprogramms.


Hier müssen Sie sich entscheiden, ob Ihnen ein schneller DCF77-Empfang wichtiger ist
als der unbeeinflußte Betrieb anderer Programme.

Lassen Sie das Programm DCF77 mit einer höheren Priorität arbeiten, z.B. 5, dann
wird die Zeit ein kleines bißchen genauer eingestellt und das Programm läßt sich nicht
so schnell durch andere Tasks stören.

Für den praktischen Einsatz im Dauerbetrieb ist allerdings eher eine niedrigere
Priorität zu empfehlen: Wenn man DCF77 mit einer Priorität von beispielsweise
-10 benutzt, dann arbeitet der Empfang wirklich nur noch unter der Voraussetzung,
daß auch Rechenzeit übrig ist. Sobald Anwendungsprogramme mit der üblichen Priorität
Null die CPU vollständig beanspruchen, bekommt DCF77 keine Rechenzeit mehr und der
Empfangsvorgang wird abgebrochen.

Auf diese Art und Weise merkt der Amiga-Benutzer überhaupt nichts mehr
von den Aktivitäten des Funkuhrempfangs, aber die Uhr wird verständlicherweise
etwas seltener eingestellt.

Auf dem Computer des Programmautors läuft DCF77 ohne Änderung der Priorität.


@ENDNODE

@NODE "LOCALE" "LOCALE"
@SMARTWRAP
@{LINDENT 2}

@{b}LOCALE@{ub}                    Standardeinstellung:  LOCALE=YES


In der Einstellung YES berechnet DCF77 die Uhrzeit für die im
Locale-Voreinsteller des Betriebssystems gewählte Zeitzone.
Dabei wird jedoch außerdem die mitteleuropäische Sommerzeit übernommen,
was natürlich nicht für alle Lokalzeiten sinnvoll ist (die Uhr geht dann
während der Sommerzeit eine Stunde vor).

Ändern Sie ggf. den Eintrag @{" DST " LINK "DST" 0}, um die Sommerzeit abzuschalten.


In der Einstellung NO wird die Zeitzone aus Locale nicht berücksichtigt,
so daß die vom Sender DCF77 gesendete MEZ (Mitteleuropäische Zeit) die
Zeitbasis darstellt.

@ENDNODE

@NODE "UPDATE_LOCALE" "UPDATE_LOCALE"
@SMARTWRAP
@{LINDENT 2}

@{b}UPDATE_LOCALE@{ub}             Standardeinstellung:  UPDATE_LOCALE=YES


In der Einstellung YES liest DCF77 vor jedem Einstellen der Systemzeit
die Zeitzone aus Locale neu. Dadurch werden Änderungen der Zeitzone
beim nächsten erfolgreichen Empfang bereits berücksichtigt.


In der Einstellung NO liest DCF77 die Zeitzone nur einmalig beim
Programmstart.
@ENDNODE

@NODE "DST" "DST"
@SMARTWRAP
@{LINDENT 2}

@{b}DST@{ub}                       Standardeinstellung:  DST=YES

                          (DST - Daylight Saving Time)


In der Einstellung YES übernimmt DCF77 die gesendete MESZ
(Mitteleuropäische Sommerzeit).


In der Einstellung NO wird die Sommerzeit nicht eingestellt.

Diese Betriebsart ist in Verbindung mit anderen Zeitzonen sinnvoll.


Alternativ zu DST kann auch das Schlüsselwort MESZ benutzt werden.

@ENDNODE

@NODE "UTC" "UTC"
@SMARTWRAP
@{LINDENT 2}

@{b}UTC@{ub}                       Standardeinstellung:  UTC=NO

                          (UTC - Universal Time Coordinated)


Die Einstellung UTC=YES veranlaßt DCF77, die Zeit auf Koordinierte Weltzeit
einzustellen.

Alternativ zu UTC kann auch das Schlüsselwort @{b}GMT@{ub} (Greenwich Mean Time)
 benutzt werden.

Eigentlich ist die Funktion UTC redundant, weil man dasselbe Ergebnis
erzielen kann, indem man folgende Einstellungen wählt:

  LOCALE=NO

  DST=NO

  OFFSET.HOURS=-1

Wenn UTC=YES eingestellt ist, werden die Argumente für @{" LOCALE " LINK "LOCALE" 0} und @{" DST " LINK "DST" 0} ignoriert; die Offset-Werte (s.u.) bleiben aber gültig.

@ENDNODE

@NODE "PAUSE" "PAUSE"
@SMARTWRAP
@{LINDENT 2}

@{b}PAUSE@{ub}                     Standardeinstellung:  PAUSE=0


Wenn bei PAUSE eine Zeit (in Minuten) angegeben ist, dann wartet DCF77
nach jedem erfolgreichen Empfang diese Zeit, bevor der Empfangsvorgang
wieder gestartet wird. Während dieser Pause wird keine Rechenzeit in
Anspruch genommen.


Wenn Rechenzeit gespart werden soll, ist es im allgemeinen vorzuziehen,
die Task-Priorität von DCF77 zu verringern, weil dann laufende Anwendungen
nicht langsamer werden (sofern man das überhaupt bemerkt) und trotzdem ab
und zu die Zeit empfangen wird.


Die Funktion PAUSE zu benutzen ist dann sinnvoll, wenn eine Anwendung
niedriger priorisierten Tasks überhaupt keine Rechenzeit mehr übrig läßt
(z.B. ein Raytracer oder ein Fraktalgenerator). Eine brauchbare Einstellung
für einen Amiga, auf dem häufig solche Anwendungen laufen, ist beispielsweise:

  TASK-PRIORITY=5

  PAUSE=20

Jedoch ist zu vermuten, daß Raytraycing-Anwendungen eher auf einem
A4000/040 benutzt werden als auf einem 500-er, und auf einem schnellen
Amiga ist der Rechenzeitverbrauch von DCF77 ohnehin kaum noch festzustellen,
so daß man DCF77 dort auch ohne Pause mit einer hohen
Priorität laufen lassen kann.


Die Funktion PAUSE ist zur Zeit auf eine vereinfachte Weise implementiert:
Während der Pause können vorerst keine Commodity-Kommandos empfangen
werden.

@ENDNODE

@NODE "ONE_TIME" "ONE_TIME"
@SMARTWRAP
@{LINDENT 2}

@{b}ONE_TIME@{ub}                  Standardeinstellung:  ONE_TIME=NO


In der Einstellung NO läuft DCF77 im Dauerbetrieb.


In der Einstellung YES stellt das Programm die Systemzeit nur einmalig und
beendet dann seine Tätigkeit.

@ENDNODE

@NODE "OFFSETS" "OFFSETS"
@SMARTWRAP
@{lindent 2}

@{b}OFFSET.HOURS@{ub}              Standardeinstellung:  OFFSET.HOURS=0

@{b}OFFSET.MINUTES@{ub}                                  OFFSET.MINUTES=0

@{b}OFFSET.SECONDS@{ub}                                  OFFSET.SECONDS=0

@{b}OFFSET.MICROSECONDS@{ub}                             OFFSET.MICROSECONDS=0


Mit den verschiedenen Offset-Werten kann man die Zeit für individuelle
Zwecke beeinflussen.

Die jeweiligen Werte werden zur Uhrzeit addiert.


Die Offset-Funktionen arbeiten im Bereich von ±68 Jahren, sofern dabei
nicht der Funktionsbereich der Amiga-Systemzeit verlassen wird:

@{lindent 4}

bis Amiga-OS 2.1   1.1.1978 00:00:00  -  19. 1.2046 03:14:08

ab  Amiga-OS 3.0   1.1.1978 00:00:00  -  31.12.2099 23:59:59.

@ENDNODE

@NODE "QUIT_AFTER_TRIALS" "QUIT_AFTER_TRIALS"
@SMARTWRAP
@{LINDENT 2}

@{b}QUIT_AFTER_TRIALS@{ub}         Standardeinstellung:  QUIT_AFTER_TRIALS=0


Bei der Einstellung Null läuft DCF77 im Dauerbetrieb.


Wenn eine Zahl größer Null angegeben ist, bricht DCF77 seine Tätigkeit
ab, wenn eine entsprechende Anzahl vergeblicher Synchronisationsversuche
erfolgt ist, ohne daß es einen Signalwechsel vom DCF77-Empfänger gegeben
hat.

Der interne Timeout-Wert für diesen Vorgang ist variabel und liegt bei
ca. zwei Sekunden. Soll DCF77 also nach beispielsweise zwei Minuten ohne
Signal vom Empfänger seine Arbeit beenden, dann müssen Sie
QUIT_AFTER_TRIALS=60 eintragen.


Einen solchen Eintrag bei den Merkmalen können Sie dazu verwenden, DCF77
erkennen zu lassen, daß der Empfänger nicht am Amiga angeschlossen ist.
Sie sollten aber nicht außer acht lassen, daß bei Empfangsstörungen
durchaus längere Empfangspausen (im Bereich mehrerer Stunden)
möglich sind. Benutzen Sie ihn also nur, wenn Sie ein gelegentlich
irrtümliches Abbrechen des Empfangsprogramms nicht weiter stört.


Nach dem ersten erfolgreichen Empfang wird QUIT_AFTER_TRIALS intern
auf Null gesetzt und ist damit nicht mehr wirksam.

@ENDNODE

@NODE "SAVE_DST_UTC" "SAVE_DST, SAVE_UTC"
@SMARTWRAP
@{LINDENT 2}

@{b}SAVE_DST@{ub}                  Standardeinstellung:  SAVE_DST=YES

@{b}SAVE_UTC@{ub}                  Standardeinstellung:  SAVE_UTC=NO


Diese zwei Einträge sind momentan (für Amiga-OS bis Version 3.1) noch nicht
von Bedeutung. Sie sind für eine künftige Version des Amiga-Betriebssystems
vorgesehen, die auch die Umstellung auf die lokalen Sommerzeiten
berücksichtigt.

Da das auf verschiedene Weise möglich ist, stellen diese Einträge sicher,
daß sich die vorliegende Programmversion auch bei allen weiterentwickelten
Amiga-OS-Versionen benutzen läßt.


Die möglichen Varianten, zwischen denen sich die Softwareentwickler bei
Amiga Technologies entscheiden müssen, unterscheiden sich in der Differenz
der in der batteriegestützten Uhr abgespeicherten Zeit zur Systemzeit.
Die Systemzeit soll natürlich die jeweils aktuelle Lokalzeit angeben.


@{b}Variante 1@{ub} wäre, daß die abgespeicherte Zeit den gleichen Wert wie die
Systemzeit hat. Dann müßten Sie überhaupt keine Änderungen an den Merkmalen
vornehmen. Diese Variante ist aber nicht zu erwarten, denn sie würde
erfordern, daß sich das Betriebsystem in einer Datei merkt, wann die letzte
Zeitumstellung vorgenommen worden ist.


@{b}Variante 2@{ub}, die ich für die nützlichste halte, besteht darin, daß immer die
normale Zeit der in den Voreinstellern ausgewählten Zeitzone abgespeichert
wird, und daß die Systemzeit während der Sommerzeit um die Differenz vorgestellt
wird. In diesem Fall müßten Sie nach dem Betriebssystem-Update den
Merkmalen den Eintrag SAVE_DST=NO hinzufügen.


@{b}Variante 3@{ub} ist der Weg, immer die Koordinierte Weltzeit (UTC) abzuspeichern
und die jeweilige Lokalzeit nur für die Systemzeit zu benutzen.
Für diesen Fall wäre der Eintrag SAVE_UTC=YES erforderlich.
@ENDNODE

@NODE "MAX_TIME_DIFFERENCE" "MAX_TIME_DIFFERENCE"
@SMARTWRAP
@{LINDENT 2}

@{b}MAX_TIME_DIFFERENCE@{ub}       Standardeinstellung:  MAX_TIME_DIFFERENCE=1


Der hier eingetragene Wert ist die maximale Abweichung zwischen Systemzeit
und Hardwareuhr in Sekunden, die innerhalb einer Minute entstehen darf.
Wenn die Differenz größer ist, löscht DCF77 das Signal für die gültige
DCF77-Zeit.


Normalerweise braucht hier niemand etwas einzutragen. Diesen Wert zu
vergrößern ist nur für Amigas mit defektem Uhrenchip sinnvoll, bei denen
aufgrund einer extremen Gangabweichung das Signal für erfolgreichen
Empfang sofort wieder gelöscht wird.

@ENDNODE

@NODE "ALLOWED_TIME_DIFFERENCE" "ALLOWED_TIME_DIFFERENCE"
@SMARTWRAP
@{LINDENT 2}

@{b}ALLOWED_TIME_DIFFERENCE@{ub}   Standardeinstellung:  ALLOWED_TIME_DIFFERENCE=0


Wenn hier ein Wert größer Null (in Mikrosekunden) eingetragen wird, dann
stellt DCF77 die Systemzeit nur noch in dem Fall, daß ihre Abweichung zur
empfangenen DCF77-Zeit diesen Wert überschreitet.


Einen Nutzen könnte ein solcher Eintrag dann bringen, wenn Sie aus irgendeinem
Grund die kleinen Sprünge der Systemzeit zur vollen Minute stören,
die DCF77 beim Stellen zwangsläufig verursacht. Zwar handelt es sich nur
um Sprünge in der Größenordnung weniger Millisekunden, aber in seltenen
Fällen könnten Anwendungen betroffen sein, die ein kontinuierliches Fortschreiten
der Systemzeit voraussetzen. Bisher ist dem Autor von DCF77
allerdings kein solcher Fall bekannt.

Bei Bedarf dürften Werte ab 5000 sinnvoll sein.

@ENDNODE

@NODE "TIMER" "TIMER"
@SMARTWRAP
@{LINDENT 2}

@{b}TIMER@{ub}                     Standardeinstellung:  TIMER=GAMEPORT_DEVICE


Mit diesem Eintrag legen Sie die Betriebsart von DCF77 bei Benutzung
eines Empfängers am Gameport 2, Pin 6 fest.


Mögliche Einträge sind

TIMER=GAMEPORT_DEVICE und

TIMER=TIMER_DEVICE.


Die Einstellung GAMEPORT_DEVICE ist die ursprüngliche Betriebsart des
Empfangsprogramms. In allen Fällen, wo diese Einstellung benutzt werden kann,
sollten Sie sie auch anwenden, weil das Programm dann die Timeout-Funktion
des Gameport-Devices als Zeitbasis benutzt, wodurch der Rechenzeitverbrauch
extrem niedrig bleibt, weil das Programm nur bei einer Änderung des Pegels
der Eingangsleitung aus seinem Wartezustand herausgeholt wird.


In der anderen möglichen Betriebsart TIMER_DEVICE wird die Eingangsleitung
des betreffenden Ports direkt abgefragt (also auf nicht systemkonforme
Art und Weise). Dies geschieht mittels Timersignalen
aller @{" SCAN_RATE " LINK "SCAN_RATE" 0} Millisekunden.

Auf diese Weise braucht DCF77 jedoch etwa die fünffache Rechenzeit und liegt
damit beim Rechenzeitverbrauch nur noch unwesentlich unter den anderen
Amiga-DCF77-Lösungen.
(Seine sonstigen Vorteile hat das Programm aber nach wie vor.)

Dieses Verfahren bringt außerdem noch den Nachteil mit sich, daß DCF77
leichter durch andere Programme gestört werden kann. Deshalb ist - je nach
Dringlichkeit des Funkuhrempfangs - evtl. eine höhere Taskpriorität
angebracht.


Wenn mit den Einträgen @{" PORT " LINK "PORT" 0} und
@{" PIN " LINK "PIN" 0} ein anderer Anschluß als Gameport 2, Pin 6
ausgewählt wird, dann arbeitet DCF77 grundsätzlich mit dem Timer Device.

@ENDNODE

@NODE "PORT" "PORT"
@SMARTWRAP
@{LINDENT 2}

@{b}PORT@{ub}                      Standardeinstellung:  PORT=GAMEPORT_2


Mit diesem Eintrag teilen Sie DCF77 mit, an welcher Schnittstelle Ihres
Computers der DCF77-Empfänger angeschlossen ist.


Mögliche Einträge sind zur Zeit

PORT=GAMEPORT_1

PORT=GAMEPORT_2

PORT=SERIAL

PORT=PARALLEL


Mit dem Merkmal @{" PIN " LINK "PIN" 0} wird die für das DCF77-Signal
benutzte Datenleitung angegeben.

@ENDNODE

@NODE "PIN" "PIN"
@SMARTWRAP
@{LINDENT 2}

@{b}PIN@{ub}                       Standardeinstellung:  PIN=6  (bei PORT=GAMEPORT_2)

                                                PIN=5  (bei PORT=GAMEPORT_1)

                                                PIN=3  (bei PORT=SERIAL)

                                                PIN=2  (bei PORT=PARALLEL)


Dieser Eintrag legt fest, an welcher Datenleitung der mit
@{" PORT " LINK "PORT" 0} ausgewählten Schnittstelle das Signal vom
DCF77-Empfänger erwartet wird.


Mögliche Einträge sind bei PORT=GAMEPORT_2 die Werte 1 bis 6 oder 9,

bei PORT=GAMEPORT_1 der Wert 5 (die mittlere Maustaste),

bei PORT=SERIAL die Werte 3 oder 8

und bei PORT=PARALLEL die Werte 2 bis 9 oder 11.


Die Eingänge 5 und 9 der Gameports werden durch einen anderen Baustein der Amiga-Hardware
ausgewertet als Pin 6, da sie auch für Analog-Joysticks benutzt werden können.

Wenn Sie einen anderen Empfänger als das von OsaMatic gelieferte Modell an diesen
Eingängen betreiben wollen, dann lesen Sie bitte den Abschnitt "Gameport" im
Kapitel @{" Anschluß von Empfängern " link "Anschluß von Empfängern" 0}.

@ENDNODE

@NODE "ALLOCATE_RESOURCES" "ALLOCATE_RESOURCES"
@SMARTWRAP
@{LINDENT 2}

@{b}ALLOCATE_RESOURCES@{ub}        Standardeinstellung:  ALLOCATE_RESOURCES=YES



Hiermit legen Sie fest, ob DCF77 die mit @{" PORT " LINK "PORT" 0} ausgewählte
Schnittstelle beim Betriebssystem reservieren soll.


Sie sollten sich darüber im klaren sein, daß die Einstellung NO eine nicht
systemkonforme Betriebsart darstellt (normalerweise muß jedes benutzte Gerät
reserviert werden) und sie also nur anwenden, wenn es unbedingt sein muß.


In der derzeitigen Programmversion hat dieses Merkmal nur für die serielle
Schnittstelle Bedeutung.


@ENDNODE

@NODE "SCAN_PORTS" "SCAN_PORTS"
@SMARTWRAP
@{LINDENT 2}

@{b}SCAN_PORTS@{ub}                Standardeinstellung:  SCAN_PORTS=YES


Das Merkmal SCAN_PORTS legt fest, ob DCF77 den Empfänger nur an der mit
@{" PORT " LINK "PORT" 0} und @{" PIN " LINK "PIN" 0} angegebenen
Schnittstelle suchen oder alle verfügbaren Ports (außer der
Parallelschnittstelle) überprüfen soll.


Die Standardeinstellung YES soll helfen, daß auch ungeübte Anwender des
Programms schnell zum Funkuhrempfang kommen.


Da die meisten aber vermutlich über nur einen DCF77-Empfänger verfügen,
der auch nicht andauernd die Schnittstelle wechselt, ist es empfehlenswert,
PORT und PIN richtig einzustellen und SCAN_PORTS auf NO zu setzen.


@ENDNODE

@NODE "SUPPRESS_SCAN_MESSAGE" "SUPPRESS_SCAN_MESSAGE"
@SMARTWRAP
@{LINDENT 2}

@{b}SUPPRESS_SCAN_MESSAGE@{ub}     Standardeinstellung:  SUPPRESS_SCAN_MESSAGE=NO


In der Einstellung NO werden beim Überprüfen der Ports Dialogfelder ausgegeben, mit
denen Ihnen gegebenenfalls mitgeteilt wird, daß die angeforderte Schnittstelle
reserviert ist.


Mit der Einstellung YES können Sie diese Dialogfelder unterdrücken.


Wenn DCF77 von einer Shell aus aufgerufen wird, ist die Standardeinstellung YES.

@ENDNODE

@NODE "CONTROL_GAMEPORT_HARDWARE" "CONTROL_GAMEPORT_HARDWARE"
@SMARTWRAP
@{LINDENT 2}

@{b}CONTROL_GAMEPORT_HARDWARE@{ub}  Standardeinstellung:  CONTROL_GAMEPORT_HARDWARE=NO


Bei der Einstellung YES setzt DCF77 das Register für Gameport 2, Pin 5 und 9 und
Timer Device auf die benötigte Betriebsart. Es wird lediglich die aktuell eingestellte
Datenleitung beeinflußt, so daß die restlichen Pins des Gameports für andere Zwecke frei
bleiben.


Die Standardeinstellung NO bewirkt, daß diese Steuerung der Register nicht ausgeführt
wird. In den meisten Fällen sind die Datenleitungen des Gameports durch das
Betriebssystem auf den benötigten Wert (Eingabe) eingestellt.


Ursprünglich war vorgesehen, das Steuern der Hardware grundsätzlich zur
Standardeinstellung zu machen. Beim Schreiben in das Steuerregister (POTGO) wird jedoch
ein Interrupt ausgelöst, der durch das Gameport-Device als Klick der rechten Maustaste
interpretiert wird. Dieser Effekt ist nicht weiter gefährlich (jedenfalls bei den
aktuellen Amigas), aber zumindest ein Schönheitsfehler, der besonders bei aktiver
Scan-Funktion auffällt.


@ENDNODE

@NODE "CONTROL_PARALLEL_HARDWARE" "CONTROL_PARALLEL_HARDWARE"
@SMARTWRAP
@{LINDENT 2}

@{b}CONTROL_PARALLEL_HARDWARE@{ub}  Standardeinstellung:  CONTROL_PARALLEL_HARDWARE=YES


Bei der Standardeinstellung YES steuert DCF77 die Datenrichtung der
Parallelschnittstelle. Es wird lediglich die aktuell eingestellte Datenleitung
beeinflußt, so daß die restlichen Pins der Schnittstelle für andere Zwecke frei bleiben.


Die Einstellung NO bewirkt, daß diese Steuerung nicht ausgeführt wird.
Das ist nur dann sinnvoll, wenn DCF77 zusammen mit einem anderen Programm betrieben
werden soll, das seinerseits die betreffenden Register steuert und dadurch mit DCF77
in Konflikt gerät.

Beachten Sie bitte, daß (mit Ausnahme von Pin 11) die unterstützten Datenleitungen
des Parallelports normalerweise auf Ausgabe eingestellt sind.

Natürlich ist ohne Steuerung der Datenrichtung auf Eingabe das Lesen des DCF77-Signals
nicht möglich, so daß Sie bei CONTROL_PARALLEL_HARDWARE=NO auf andere Weise für die
Einstellung der notwendigen Datenrichtung sorgen müssen.

@ENDNODE

@NODE "CONTROL_SERIAL_HARDWARE" "CONTROL_SERIAL_HARDWARE"
@SMARTWRAP
@{LINDENT 2}

@{b}CONTROL_SERIAL_HARDWARE@{ub}   Standardeinstellung:  CONTROL_SERIAL_HARDWARE=YES


Bei der Standardeinstellung YES setzt DCF77 die Register für die serielle
Schnittstelle in der Betriebsart PIN=3 (RxD) so, daß die Betriebsspannung für den
Empfänger der Firma SURE eingeschaltet wird.


Die Einstellung NO ist sinnvoll, wenn diese Betriebsspannung nicht benötigt wird.

@ENDNODE

@NODE "SCAN_RATE" "SCAN_RATE"
@SMARTWRAP
@{LINDENT 2}

@{b}SCAN_RATE@{ub}                 Standardeinstellung:  SCAN_RATE=23


Minimum:  1

Maximum: 40


Der Eintrag SCAN_RATE legt die Abtastrate (in ms) fest, mit der DCF77 in der Betriebsart
TIMER=TIMER_DEVICE die Eingangsleitung im Polling abfragt.


Wenn Sie die Fähigkeiten der Software-PLL ausnutzen möchten (also eine sehr hohe
Genauigkeit), dann sollten Sie keine Werte eintragen, durch die sich die Zahl
1000 ohne Rest teilen läßt (also 5, 10, 20 und 40), da es sonst zu Interferenzen
zwischen der Abtastung und den Sekundenimpulsen kommt, wodurch die PLL dann bestenfalls
eine Genauigkeit im Bereich der Abtastrate erzielen kann.


@ENDNODE

@NODE "Genauigkeit" "Genauigkeit"
@SMARTWRAP
@{LINDENT 1}

@{b}Genauigkeit@{ub}


Die zu erzielende Übereinstimmung der Systemzeit mit der Atomzeit vom Sender hängt
teilweise von der Taktfrequenz und der Rechenzeitbelastung Ihres Computers ab. Die
folgenden Angaben können aber dennoch als allgemeingültig angesehen werden, da die
Einflüsse der Rechenleistung auf die Genauigkeit jedenfalls geringer sind, als man
auf den ersten Blick erwarten würde.


Seit Version 3 ist DCF77 mit einer Software-PLL mit geregelter Zeitkonstante
ausgestattet, die eine Genauigkeit im Bereich einer Millisekunde erlaubt.

Diese Funktion setzt die Betriebssystemversion 40 (Amiga OS 3.1)
voraus, da sich die Mikrosekunden der Systemzeit bei den älteren Versionen
noch nicht einstellen lassen (DCF77 läuft auf diesen Computern natürlich auch, nur
eben ohne die PLL).


Durch die Software-PLL scheint DCF77 zur Zeit das genaueste
DCF77-Empfangsprogramm @{b}aller@{ub} Desktop-Computersysteme zu sein!


Nachdem die Systemzeit durch DCF77 erstmalig gestellt worden ist, beträgt ihre
Abweichung zum empfangenen Signal im allgemeinen weniger als 0,005 Sekunden.
Wenn der Empfang einigermaßen ungestört weiterläuft, dann kann die PLL die
Abweichung zum Signal Ihres Empfängers immer weiter verringern, so daß sie nach ca.
5 Minuten den Wert von 0,001 Sekunden unterschreitet. 


Natürlich sagt das noch nichts über die Abweichung von der genauen Zeit aus.
Erstens gibt es eine Verzögerung durch die Laufzeit des Signals (Entfernung zum
Sender DCF77 in Mainflingen), die bei etwa 0,004s je 1000km liegt.
Die preiswerten Empfänger (damit meine ich alles unter 500 DM) liefern ein Signal,
das temperaturabhängig und abhängig von der augenblicklichen Feldstärke um bis zu
0,05s schwankt. Unterschiedliche Bandbreiten und Zeitkonstanten der einzelnen
Exemplare verursachen weitere Abweichungen.


Die Gesamtabweichung hängt also weitgehend von Ihrem Empfänger ab.


Um die Abweichungen zu kompensieren, müssen Sie den Empfänger
temperaturstabilisiert betreiben, die Abweichung messen und sie mit einem
entsprechenden Eintrag bei
@{" OFFSET.MICROSECONDS " LINK "OFFSETS" 0} korrigieren.


Wenn es ohne Meßtechnik und Zeitnormale gehen muß, dann liefert übrigens das
Hilfsprogramm @{" TimeSignal " LINK "TimeSignal"} eine gute Methode, die
Abweichung zu erkennen: Das menschliche Gehör kann Töne mit einer Genauigkeit im
Bereich von wenigen tausendstel Sekunden unterscheiden, was einen fast perfekten
Vergleich mit Rundfunk-Zeitzeichen möglich macht.


Bei extrem hoher CPU-Belastung (keine freie Rechenzeit mehr) vergrößert sich der
Fehler beim Stellen der Systemzeit. Messungen haben aber in keinem Fall eine
Abweichung von mehr als 0,08s ergeben. Diesen Fehler kann man durch Erhöhen der
Priorität des DCF77-Tasks vermeiden (mit Hilfe des Merkmals
@{" TASK_PRIORITY " LINK "TASK_PRIORITY" 0}).


Übrigens sollten Sie sich bei Vergleichen mit Rundfunk-Zeitzeichen oder im
Fernsehen angezeigten Uhren nicht täuschen lassen:
Falls Sie Ihre Sender über Satellit empfangen, dann verursacht die Signallaufzeit
bis zum geostationären Satelliten und zurück eine auffällige Verzögerung von etwa
0,27 Sekunden, die derzeit von den Sendern nicht kompensiert wird. (Das gilt auch
für die meisten ins Kabel eingespeisten Programme, da sie üblicherweise
auch über Satellit laufen.)

In einem solchen Fall ist also Ihre Amiga-Funkuhr viel genauer!



Nun noch etwas über digitale Signalerfassung:


Da bei den zur Verfügung stehenden Amiga-Eingängen keine Interrupts erzeugt werden
können (schließlich handelt es sich nicht um einen industriellen Prozeßrechner),
wird das Signal Ihres DCF77-Empfängers im Polling abgefragt (also immer nach einer
definierten Zeitspanne). Das hat den Effekt zur Folge, daß man die Phasenlage von
Signalen, deren Periodendauer ein Vielfaches der Abtastrate beträgt, nur mit der
Unschärfe dieser Abtastung messen kann.

Wenn DCF77 in der Betriebsart TIMER=GAMEPORT_DEVICE arbeitet, dann haben Sie
keinen Einfluß auf die Abtastrate (das Gameport-Device überprüft die Eingänge
während der Vertikal-Blank-Interrupts). Im PAL-Video-Modus ergibt sich dabei eine
Abtastrate von 20ms. Da 1000 Millisekunden nun ein Vielfaches von 20 sind, kann
Ihre Systemzeit also eine Abweichung bis zu 20ms haben, ohne daß die PLL das
ändern kann.

(Etwas anschaulicher: Wenn die Abtastung z.B. immer 5ms vor und 15ms nach der
vollen Sekunde geschieht, dann wird die Zeit um 15ms nachgehen.)

Im Productivity-Modus ergibt sich eine Abtastrate von ca. 17ms, was keine
Probleme macht.


Falls Sie also eine perfekt genaue Systemzeit brauchen, dann muß Ihr Amiga
entweder in der Betriebsart TIMER=GAMEPORT_DEVICE mit einer geeigneten
Bildfrequenz arbeiten, oder Sie müssen als Zeitbasis das Timer-Device benutzen
und die @{" SCAN_RATE " LINK "SCAN_RATE" 0} entsprechend einstellen.



Allerdings könnte ich mir auch vorstellen, daß Sie das alles nicht so sehr
berührt - was sind schon 20 Millisekunden Gangabweichung...


@ENDNODE

@NODE "Fehlersicherheit" "Fehlersicherheit"
@SMARTWRAP
@{LINDENT 1}

@{b}Fehlersicherheit@{ub}


Je nach Empfangsbedingungen und Qualität des Empfängers treten durch die
Paritätsprüfung nicht zu erkennende Übertragungsfehler zwischen mehrmals am Tag und
einmal im Monat auf. Meistens wird dann das Datum falsch empfangen, da hierbei nur
ein Paritätsbit für 22 Datenbits zur Verfügung steht.

Ein Teil dieser Fehler wird durch eine Plausibilitätsprüfung abgefangen
(das heißt, unsinnige Werte werden nicht akzeptiert).


Um die verbleibenden Empfangsfehler zu erkennen, wird die Zeit erst dann
als Systemzeit für den Amiga übernommen, wenn die Werte in mehreren
aufeinanderfolgenden Minuten identisch empfangen worden sind. (Damit das Programm
DCF77 nach seinem Start nicht erst nach zwei Minuten die Systemzeit einstellt,
dient als erster Vergleichswert die aktuelle Systemzeit.)

Damit dürfte die Fehlerrate in der Standardbetriebsart des Programms auch bei
ungünstigen Empfangsbedingungen unter einem Fehler in 100 Jahren liegen.


Den Grad der Fehlersicherheit können Sie mit dem Merkmal
@{" SAFETY_LEVEL " LINK "SAFETY_LEVEL" 0} festlegen.

@ENDNODE

@NODE "DCF77-Empfänger und Dongle" "DCF77-Empfänger und Dongle"
@SMARTWRAP
@{LINDENT 1}

@{b}DCF77-Empfänger und Dongle@{ub}


Der gleichzeitige Betrieb von Scala MM 300 oder Scala Info Channel oder der zu
diesen Programmen gelieferten Player und einem DCF77-Empfänger ist ohne Probleme
gewährleistet.


Leider ist eine Zusammenarbeit eines Empfängers und dem "Security Key" von
Brilliance 1.0 am Gameport - auch mittels Adapter - unmöglich. Zumindest stören
aber erfolglose Zugriffsversuche von Brilliance auf das nicht vorhandene Dongle den
DCF77-Empfang nicht, und umgekehrt stört das laufende DCF77-Empfangsprogramm
Brilliance nicht beim Überprüfen des angesteckten Dongles. Inzwischen gibt es
längst Brilliance 2.0 ohne Dongle, und damit hat sich das Problem ohnehin
erledigt.


@ENDNODE

@NODE "Unverträglichkeiten" "Unverträglichkeiten mit anderen Programmen"
@SMARTWRAP
@{LINDENT 1}

@{b}Unverträglichkeiten mit anderen Programmen@{ub}


DCF77 benutzt in der Betriebsart TIMER=GAMEPORT_DEVICE das Gameport-Device auf
die vorgesehene Art und Weise, indem der Controller auf ABSJOYSTICK gesetzt
wird. Alle systemkonform geschriebene Software sollte damit keine Probleme
haben.

Alle nachfolgend aufgelisteten Konflikte resultieren aus Meldungen von Anwendern
der DCF77-Versionen 1 und 2, bei der das Gameport Device grundsätzlich reserviert
wurde.


Um DCF77 zum gleichzeitigen Betrieb mit solchen Programmen zu bewegen, die zum
Teil mit "Hacks" arbeiten, sollten Sie es auch auf die weniger systemkonforme
Betriebsart TIMER=TIMER_DEVICE und evtl. ALLOCATE_RESOURCES=NO einstellen.
Damit können Sie wahrscheinlich alle unten genannten Probleme umgehen.

Der Grund dafür liegt darin, daß im Betriebssystem natürlich keine Mechanismen
vorgesehen sind, die es erlauben, verschiedene Hardware gleichzeitig am selben
Port zu betreiben. Wenn also ein Gerät so konstruiert ist, daß es einige
Datenleitungen des Gameports durch direkten Zugriff unter Umgehung der
Systemfunktionen benutzt und die Schnittstelle mittels Adapter oder
durchgeführten Pins auch noch für andere Hardware zur Verfügung stellt, dann
sollte man erwarten, daß es auch keine Probleme damit hat, wenn die Treiber
für die andere Hardware den Port reservieren, wie das im Betriebssystem
vorgesehen ist.

Wenn das dennoch zum Konflikt führt, ist das dann wohl ein Designfehler...



Bekannte Schwierigkeiten sind:

@{LINDENT 4}
@{PARI -2}

- Die Software zum Genlock G-LOCK (GVP) startet nicht, wenn sie auf
Steuerung über Gameport eingestellt ist und DCF77 läuft.
Das ist zwar in Ordnung, aber leider gibt das Programm keine
entsprechende Meldung aus, sondern funktioniert einfach nicht.


- Wie ein Anwender von DCF77 mitgeteilt hat, gibt es Probleme mit
der arXon-Switchbox. Mangels einer solchen Box kann ich momentan
dazu nichts Genaueres sagen.


- Das Präsentationsprogramm MediaPoint 128 stürzt beim Starten einer
Präsentation und gleichzeitig reserviertem Gameport sofort ab.
Das ist offenbar ein Programmfehler in MediaPoint, der sich nur von
MediaPoint Int. beseitigen läßt. Eine diesbezügliche Nachricht ist
mitsamt einer DCF77-Diskette nach den Niederlanden gegangen.
Ob es aber noch ein Update geben wird...


@ENDNODE

@NODE "Weiterentwicklung" "Mögliche Weiterentwicklung"
@SMARTWRAP
@{LINDENT 1}

@{b}Mögliche Weiterentwicklung@{ub}


An dem Programm DCF77 läßt sich - wie an jedem Programm - noch eine Menge
verbessern.

@{LINDENT 3}
@{PARI -2}

- Der Empfangsalgorithmus ist inzwischen sehr zuverlässig und arbeitet
dank der Adaption an die Empfängerzeitkonstanten auch mit allen Empfängern
problemlos zusammen. Bei ungünstigen Empfangsbedingungen dauert es aber
doch eine ganze Weile bis zum Einstellen der Uhrzeit. Das könnte man
durchaus noch ändern, denn auch aus mehreren fehlerhaft empfangenen
Zeittelegrammen läßt sich mit dem entsprechenden Aufwand die richtige Zeit
berechnen.


- Commodities, die sich in irgendeiner Form steuern lassen, besitzen
zu diesem Zweck ein Nutzer-Interface, das sich im allgemeinen über einen
Hotkey aufrufen läßt.
DCF77 könnte ein solches Interface erhalten, über das sich alle
Betriebseigenschaften steuern ließen, und das den Empfangsstatus und
z.B. statistische Informationen (Fehlerhäufigkeit) anzeigen würde.

Allerdings bin ich mir nicht sicher, ob ein solches GUI das Programm
nicht unnötig aufblasen würde, ohne daß es jemanden richtig interessiert
(es bleibt schließlich doch nur ein Funkuhr-Treiber...).

Meinungen der Anwender sind erwünscht.


- Vor längerer Zeit (1990/91) hatte ich ein Programm geschrieben, das - ohne
Funkuhr - die Umstellung zwischen Sommer- und Winterzeit durchführt und
beim manuellen Stellen der Uhr die Gangabweichung der akkugestützten Uhr
berechnet und danach den Gangfehler ständig korrigiert. Damit konnte man
immerhin eine Genauigkeit von einer Sekunde Abweichung in einem halben
Jahr erreichen.

Nachdem ab Amiga 3000 ein neuer Uhrenchip eingesetzt wurde,
dessen Registersatz in den mir zugänglichen Unterlagen leider
nicht dokumentiert ist und die Betriebssystemroutinen zum Setzen und
Lesen der Zeit nach wie vor mit einer Abweichung bis zu einer Sekunde
arbeiten und damit für dieses Programm unbrauchbar sind, habe ich daran
nichts mehr weiterentwickelt (Aufwand / Nutzen...).

DCF77 könnte nun die Funktionen erhalten, die die Gangabweichung
berechnen, und damit die Fähigkeit, die Uhr auch ohne angeschlossenen
Empfänger genau zu stellen.



- Um verschiedene Schnittstellen unterstützen zu können, ist DCF77 zum Teil
auf direkten Hardwarezugriff angewiesen, da entsprechende Funktionen des
Betriebssystems nicht existieren (wie sollten sie auch, z.B. für die
mittlere Maustaste, wenn der Port durch Maus+Gameport-Device belegt ist).

Da sich die Amiga-Hardware in der nächsten Generation wahrscheinlich
bedeutend ändern wird, ist damit zu rechnen, daß einige Betriebsarten von
DCF77 nicht mehr funktionieren werden. Die einzige hundertprozentig
systemkonforme Betriebsart ist die ursprüngliche (PORT=GAMEPORT_2, PIN=6,
TIMER=GAMEPORT_DEVICE und SCAN_PORTS=NO).

Wenn es also irgendwann einen neuen Amiga geben wird, ist einiges an
Anpassungsarbeit fällig. Erwarten Sie bitte nicht, daß alle
derzeit implementierten Betriebsarten dann noch möglich sein werden.

@{LINDENT 1}


So, jetzt wissen Sie, was alles kommen könnte (hoffentlich verlangt niemand noch
einen AREXX-Port). Und wenngleich auch viele Amiga-Programmierer eine solche
Bemerkung ihren Produkten offenbar vergeblich beigefügt haben: Die Zeit für die
Weiterentwicklung von DCF77 steht natürlich nur zur Verfügung, wenn auch genügend
Exemplare davon verkauft werden. Sollten Sie also jemanden im Bekanntenkreis haben,
der bereits einen DCF77-Empfänger besitzt, aber nicht dieses Programm, dann
empfehlen Sie einen Kauf, aber kopieren Sie es bitte nicht weiter.


Falls Sie die bisherige Entwicklungsgeschichte von DCF77 interessiert,
sollten Sie sich die @{" Änderungsliste " LINK "DCF77 History" 0} anschauen.


@ENDNODE

@NODE "Anschluß von Empfängern" "Anschluß von Empfängern"
@SMARTWRAP
@{LINDENT 1}

@{b}Anschluß von Empfängern@{ub}


Ohne Umbauten lassen sich die Empfänger von @{b}Conrad Electronic@{ub} für Amiga und
(natürlich) die von @{b}OsaMatic@{ub} gelieferten Modelle benutzen.
Bei diesen handelt es sich um Empfänger der Firma SURE GmbH, die als OEM-Produkte
von boeder vertrieben werden und bei OsaMatic für den Betrieb am Amiga-Gameport
modifiziert werden. (Die Wahl ist auf dieses Modell gefallen, weil es - bei noch
erträglichem Preis - besonders gute Empfangseigenschaften aufweist.)
Das Modell von boeder (bzw. SURE) für die serielle Schnittstelle bedarf keines Umbaus,
aber eines handelsüblichen Schnittstellenadapters (25 auf 9).


Bei allen anderen dem Autor bekannten Empfängern, die für Gameports irgendwelcher
Computertypen bzw. spezielle Interface-Karten gedacht sind, braucht lediglich der
Stecker ausgetauscht zu werden (dazu muß man allerdings die Lage der Anschlüsse
kennen).


Empfänger für serielle oder parallele Schnittstellen von PC's können nicht benutzt
werden, wenn sie den Empfang selbständig durchführen und nur Datenpakete mit der
kodierten Zeit senden.

Dieses Verfahren scheint dem Autor von DCF77 auch nicht sehr sinnvoll, denn zumindest
mit den aktuellen Modellen wird auf diese Weise nur eine unbefriedigende
Genauigkeit der Systemzeit des Computers erreicht.


@{B}Gameport@{UB}


Der Funkuhr-Empfänger kann am Amiga-Gameport 2 an allen Datenleitungen und am
Gameport 1 am Pin 5 angeschlossen werden.

An diesen 9-poligen Sub-D-Anschlüssen steht die Betriebsspannung an den Pins 7 (+5V)
und 8 (Masse) zur Verfügung.

Das Signal vom DCF77-Empfänger wird standardmäßig als TTL-Signal am Gameport 2,
Pin 6 erwartet (dies ist normalerweise der Eingang für den Joystick-Feuerknopf),
wobei es unerheblich ist, ob die logische 1 high-aktiv oder low-aktiv ist (das
Empfangsprogramm paßt sich selbständig an unterschiedliche Empfängertypen an!).

Wenn Sie in den Merkmalen mit dem Eintrag @{" PIN " LINK "PIN" 0} einen anderen
Anschluß eingestellt haben, liest DCF77 das Signal am betreffenden Eingang.


Die Eingänge 5 und 9 der beiden Gameports sind anders beschaltet als die anderen
Leitungen, da sie auch für für Analog-Joysticks vorgesehen sind.

Diese vier Eingänge benötigen ein Signal, dessen Low-Pegel bei der Belastung mit
ca. 13mA den Wert von 0,8V nicht überschreitet.
Wie Versuche mit verschiedenen Amigas und DCF77-Empfängern gezeigt haben, können die
Empfänger von Conrad Electronic diesen Strom nicht liefern und funktionieren an diesen
Eingängen also nicht.

Das von OsaMatic gelieferte Modell kann ohne weiteres benutzt werden.

Um auch den Conrad-Empfänger oder ein vergleichbares Modell an einem dieser Eingänge
betreiben zu können, müssen Sie das Signal mittels einer einfachen
Transistor-Schaltstufe oder eines Standard-TTL-ICs verstärken.


@{B}Serielle Schnittstelle@{UB}


Die Benutzung der seriellen Schnittstelle zum Funkuhrempfang ist primär für den
Empfänger der Firma SURE GmbH vorgesehen, der ebenfalls von boeder vertrieben wird.
In dieser Betriebsart (PORT=SERIAL, PIN=3)
wird der Empfänger über RTS und DTR mit Betriebsspannung versorgt und muß das
empfangene Signal im V24-Pegel am Pin 3 (RxD) liefern.

In anderen Betriebsarten an der seriellen Schnittstelle wird keine Betriebsspannung
angeboten. Das Signal vom Empfänger muß am entsprechenden Pin anliegen.


@{B}Parallelschnittstelle@{UB}


An der Parallelschnittstelle wird das Signal im TTL-Pegel am mit
@{" PIN " LINK "PIN" 0} gewählten Eingang erwartet. Die Betriebsspannung kann am
Pin 14 gewonnen werden, Masse steht an den Pins 17 bis 25 zur Verfügung.
(Ausnahme: Amiga 1000 - hier liegt die Betriebsspannung am Pin 23 und Masse an den
Pins 14 bis 22.)


@{B}Typische Beschaltung von PC-Gamecard-Empfängern@{UB}


DCF77-Empfänger für Game-Karten von PCs des "Industriestandards" (15-polige
Sub-D-Stiftleiste) lassen sich meistens ohne Probleme für den Amiga-Gameport
umbauen:

Die Betriebsspannung +5V ist entweder am Pin 1 oder 9 angeschlossen. Der
Masseanschluß liegt an Pin 4, 5 oder 12. Das Empfangssignal liegt an einem der
Schaltereingänge Pin 2, 7, 10 oder 14.

Für den Betrieb mit den herkömmlichen Betriebssystemen auf solchen PCs,
die Reaktionen in Echtzeit parallel zu anderen Programmen nicht ohne weiteres
zulassen, liefern einige Empfänger zusätzlich ein manipuliertes Signal,
bei dem der 200ms-Impuls auf ca. 600ms gedehnt ist (die derzeit von OsaMatic
gelieferten boeder-Empfänger gehören auch zu dieser Gruppe).

Verwenden Sie bei einem solchen Empfänger das unveränderte Signal.


---


@{b}Nehmen Sie Umbauten an elektronischen Baugruppen nur vor, wenn Sie über
entsprechende Erfahrung verfügen.@{ub} Schnittstellenbausteine von Computern enthalten
hochempfindliche Bauelemente, die sich bei fehlerhafter Beschaltung schnell in
Elektronikschrott verwandeln. Natürlich können weder der Autor dieses Programms
noch der Vertreiber eine Haftung für Schäden durch den Anschluß von
DCF77-Empfängern übernehmen.


Bitte denken Sie beim Inbetriebnehmen Ihres Empfängers auch daran, daß
Computerperipherie
grundsätzlich @{b}nur bei ausgeschalteter Betriebsspannung@{ub} angeschlossen
werden sollte.

@ENDNODE

@NODE "Fehlersuche" "Fehlersuche"
@SMARTWRAP
@{LINDENT 1}

@{b}Fehlersuche@{ub}

@{LINDENT 3} @{PARI -2}

1. @{b}Kein Empfang@{ub}:


- Passen die Einträge bei den Merkmalen von DCF77
@{" PORT " LINK "PORT" 0} und @{" PIN " LINK "PIN" 0} zum angeschlossenen
Empfängermodell?@{LINE}
Bei der Standard-Gameport-Ausführung genügen die voreingestellten Werte
(es ist also gar keine Angabe erforderlich) und beim Modell für die serielle
Schnittstelle muß PORT=SERIAL eingetragen sein.


- Benutzen Sie das Programm "DCF77 Diagnosis", um zu überprüfen, ob das Signal
Ihres DCF77-Empfängers die Software erreicht. Das Signalfenster muß im
gleichen Takt wie die Leuchtdiode des Empfängers blinken.@{LINE}
Wenn nicht:@{LINE}
Überprüfen Sie, ob der Empfänger richtig am vorgesehenen Port angeschlossen
ist. Bei Amigas, deren angeschlossenes Zubehör oft gewechselt wird,
sind verbogene oder abgebrochene Kontaktstifte ein typischer Fehler.@{LINE}
Falls die Anschlüsse äußerlich in Ordnung sind, können Sie Ihren Port-Schaltkreis
testen, indem Sie einen Joystick oder Ihre Maus an den Gameport 2
stecken und den Feuerknopf (bzw. die linke Maustaste) drücken.
Auch dann muß das Signalfenster reagieren.@{LINE}
Bei der seriellen Schnittstelle ist eine derartige Überprüfung nicht so einfach,
aber wenn andere serielle Geräte arbeiten, dann liegt der Fehler nicht an der
Schnittstelle.


- Blinkt die Anzeige-LED am Empfänger wirklich genau im Sekundentakt?
Wenn nicht: Legen Sie den Empfänger an einen anderen Ort, richten Sie
ihn neu aus, und suchen Sie nach elektronischen Störquellen.


2. @{b}Falsche Uhrzeit@{ub}:


- Wenn die Systemzeit um mehrere Stunden falsch eingestellt wird, dann ist
die Zeitzone Ihrer Workbench möglicherweise nicht richtig ausgewählt.
Korrigieren Sie das bitte mit dem Programm "Locale" in der Schublade
"Prefs" der Workbench.


- Überprüfen Sie die Einträge der Merkmale (Tool Types) von DCF77.
Im Lieferzustand des Programms DCF77 sollten alle Einträge, die die Zeit
beeinflussen, eingeklammert sein (und damit nur als Kommentar gelten).


3. Dialogfenster: @{b}Der Game Controller wird bereits benutzt.@{ub}


- Ein anderes laufendes Programm hat das Gameport-Device für sich
reserviert, oder Sie haben DCF77 versehentlich ein zweites Mal
gestartet. 


4. Dialogfenster: @{b}DCF77 kann nicht mehrfach gestartet werden.@{ub}


- Diese Meldung erscheint, wenn bereits ein Commodity namens DCF77 läuft.


5. @{b}Andere Effekte@{ub}:


- Lesen Sie bitte auch den Abschnitt
@{" Unverträglichkeiten mit anderen Programmen " link "Unverträglichkeiten" 0}.


Wenn alles nicht hilft, dann rufen Sie bei @{" OsaMatic " LINK "Registrierung" 0} an,
oder wenden Sie sich per eMail direkt an den Autor:

ralf.gruner@t-online.de


@ENDNODE

@NODE "DCF77 Diagnosis" "DCF77 Diagnosis"
@SMARTWRAP
@{LINDENT 1}

@{B}DCF77 Diagnosis@{UB}


DCF77 Diagnosis ist eine spezielle Variante des Empfangsprogramms, in die zusätzlich
eine Anzeige des Signalstatus und Kommentare über alle laufenden Vorgänge eingebaut
worden sind.

Das ist erstens nützlich zur Fehlersuche und zweitens kann man damit auch einmal zusehen,
was DCF77 intern überhaupt so treibt.


Das Programm öffnet drei Konsolen-Fenster zur Anzeige.

Im oberen gibt es Texte über den Empfangsvorgang aus, die weitgehend selbsterklärend sind.

Im unteren werden die Betriebszustände des Programms dargestellt.

Und im kleinen Fenster rechts zeigt die Farbe des Fensterinhalts den Status des
Eingangssignals an:

Schwarz - Pause zwischen den Sekundenimpulsen

Weiß    - Sekundenimpuls

Blau    - Phasenlagenerkennung hat gerade umgeschaltet


Da alle Anzeigen der Einfachheit halber Standard-Konsolen-Ausgaben sind, sollten
Sie mit empfindlichen Reaktionen auf Fensteränderungen und sonstige Störungen
rechnen. Auch sollten Sie keine Zeichen in die Fenster eingeben (wenn es
versehentlich passiert, drücken Sie die Eingabetaste).


DCF77 Diagnosis kann (zusätzlich zu der Möglichkeit über Exchange) mit Ctrl-C
beendet werden.


Wenn Sie DCF77 bereits in Ihrem System installiert haben und DCF77 Diagnosis benutzen
wollen, müssen Sie das laufende Programm mittels Exchange beenden, da es sich bei
DCF77 Diagnosis ebenfalls um eine vollständige Version des Empfangsprogramms handelt.

@ENDNODE

@NODE "Hilfsprogramme" "Hilfsprogramme"
@SMARTWRAP
@{LINDENT 1}

@{b}Hilfsprogramme@{ub}


Im Verzeichnis @{b}Utilities@{ub} finden Sie einige Hilfsprogramme,
die bei Bedarf auf die Software-Schnittstelle von DCF77 zurückgreifen.


Das wichtigste ist sicherlich die Uhr @{" GClock " LINK "GClock"}, eine
Analog-Uhr, die neben dem Datum auch den Empfangsstatus von DCF77 anzeigt.


Das Zeitzeichenprogramm  @{" TimeSignal " LINK "TimeSignal"} gibt ein
akustisches Zeitzeichen aus, das wahlweise auch mit Hintergrund-Musik in
Form von Audio-Samples unterlegt werden kann.



Weiterhin befinden sich hier zwei Programme, die auf den Empfang des
Uhrzeit warten:


@{" WaitForDCF77 " LINK "WaitForDCF77"} wartet immer, wenn die Zeit noch
nicht empfangen wurde und @{" WaitDCF77ifCrash " LINK "WaitDCF77ifCrash"} wartet
immer dann, wenn die Hardware-Uhr des Computers durch einen Absturz verstellt
worden ist.


Die Source-Codes dieser beiden Programme sind außerdem als Programmierbeispiel
in der Schublade "Developer" enthalten.


Im Verzeichnis "c" befinden sich außerdem noch kleine Installationshilfen, die
Public-Domain-Status haben:

FreeIconPosition gibt die Icon-Position des als Argument übergebenen Programms frei,

PlaySound ist ein Datatypes-Soundplayer mit Steuerung des Audiofilters und

Retire löscht Einträge aus der User-Startup.



Wenn Sie weitere Hilfsprogramme benötigen, dann finden Sie im Aminet
eine sehr große Menge Uhren, Kalender, Terminplaner und andere zeitbezogene
Tools. In der Dokumentation zur letzten Auflage von DCF77 war noch eine Liste
von brauchbaren Programmen enthalten; inzwischen ist es aber kaum noch
möglich, eine solche Liste auf dem aktuellen Stand zu halten, und damit hätte
sie nur einen geringen praktischen Wert.


Nützliche Aminet-Verzeichnisse mit diesen Programmen sind vorwiegend:


util/cdity

util/misc

util/time

util/wb

@ENDNODE


@NODE "GClock" "GClock"
@SMARTWRAP
@{LINDENT 1}

@{b}GClock@{ub}


Das Programm GClock ist ein grafisches Uhrenprogramm, das die Systemzeit  des Amiga
exakt anzeigt. Es ist entwickelt worden, um den Benutzern von  Funkuhrempfängern
eine genaue Uhr zur Verfügung zu stellen, da die  Workbench-Uhr (zumindest bis
Clock 40.1) Abweichungen bis zu minus einer Sekunde zur Amiga-Systemzeit zuläßt.


Das Programm arbeitet - wie andere Amiga-Uhrenprogramme auch - unabhängig von einer
Funkuhr und ist auch nicht auf deren Empfangssoftware angewiesen.


GClock läuft auf allen Amigas ab Betriebssystem Version 37 (Kickstart 2.04).


Es öffnet ein Fenster auf der Workbench, dessen Größe sich wie gewohnt mit der Maus
verändern läßt. Die Darstellung der Uhr paßt sich der eingestellten Fenstergröße
und dem Displaymodus der Workbench optimal an.


Bei aktivem Fenster erscheint das aktuelle Datum im Titel des Workbench-Screens.


Falls das Programm DCF77 (ab Version 1.74) läuft, wird zusätzlich zum Datum der
Empfangsstatus der Funkuhr angezeigt:


   ---        keine DCF77-Zeit verfügbar.

  DCF77       Systemzeit ist eingestellt worden.


Bei gültiger DCF77-Zeit signalisiert ein Symbol im Fenster der Uhr den
erfolgreichen Empfang:


                             ((|))

                               |


Solange die Zeit noch nicht empfangen worden ist, wird außerdem bei gleichzeitigem
Betrieb mit DCF77 ab Version 2.18 der Betriebszustand des Empfangsprogramms mittels
unterschiedlicher Farben eines Anzeigesymbols (das man als Leuchtanzeige
interpretieren könnte) dargestellt: (Die folgenden Angaben beziehen sich auf die
Standard-Workbench-Farben.) 

   Grau    -  kein Signal vom Empfänger

   Weiß    -  DCF77 ist inaktiv

   Schwarz -  Empfang ist gestört

   Blau    -  DCF77 wartet auf Synchronisation.


Während des Empfangsvorgangs von DCF77 veranschaulicht eine Fortschrittsanzeige im
Stil der "progress requester" des Betriebssystems das Einlesen des Zeittelegramms.


Über die Menüs läßt sich die Darstellung der Uhr verändern:

 - mit oder ohne Datumsanzeige

 - verschiedene Zeigertypen

 - mit oder ohne Fensterrahmen

 - Zifferblatt als Ellipse oder Kreis.


Für die Anzeige des Datums benutzt GClock vorzugsweise den Zeichensatz Helvetica.
Wenn dieser nicht in einer geeigneten Größe zur Verfügung steht, wird auf
CGTriumvirate ausgewichen. In diesem Fall dauert der Aufbau des Fensterinhalts von
GClock deutlich länger, da der Zeichensatz erst vom Betriebssystem in der
gewünschten Größe skaliert werden muß. Wenn bei kleinem GClock-Fenster keine
brauchbare Schriftgröße entsteht, versucht GClock, den Standard-Zeichensatz zu
benutzen, und wenn dann das Datum nicht in das Fenster paßt, wird es ganz
weggelassen.


Die aktuellen Einstellungen lassen sich mit dem Menüpunkt "Einstellungen speichern"
("Save Settings") abspeichern (in die Datei ENVARC:GClockPrefs) und werden dann
beim nächsten Programmstart benutzt. Mit dem Menüpunkt  "Einstellungen/auf zuletzt
gespeichertes"  bzw. "Settings/Last Saved"  kann die Uhr auf die zuletzt
gespeicherten Einstellungen zurückgesetzt werden.



@{" Änderungsliste " LINK "GClock History" 0}

@ENDNODE

@NODE TimeSignal
@SMARTWRAP
@{LINDENT 1}

@{b}TimeSignal@{ub}


Dieses Programm bietet Ihnen die Möglichkeit, ein akustisches
Standard-Zeitzeichen auszugeben oder auch eine eigene Variante selbst zu
gestalten.

TimeSignal ist auch (wie DCF77) ein Commodity und kann somit auf die übliche
Weise mittels Exchange gesteuert werden.


Die Betriebsart des Programms können Sie (auch wie bei DCF77) mittels
verschiedener Einträge in den @{" Merkmalen " LINK "TimeSignal - Tool Types" 0} (Tool Types) festlegen.


Ohne Einträge erzeugt TimeSignal ein Standard-Zeitzeichen zur vollen Stunde:

Vier kurze Töne (Dauer 100 ms, Frequenz 1 kHz) zum Beginn der Sekunden
56 bis 59 und einen langen Ton (Dauer 1 s, Frequenz 1 kHz) zur vollen Stunde.


Wenn Ihnen das zu konventionell ist ("Bin ich der Deutschlandfunk?"), dann
können Sie erstens das Zeitzeichen mit einem beliebigen Audio-Sample
unterlegen, dessen Wiedergabe zu einer frei wählbaren Sekunde gestartet wird.

Außerdem lassen sich auch Tonhöhe und Lautstärke der Zeitzeichen-Signaltöne
einstellen, um besondere Effekte zu erzielen.

Sollte Ihnen das immer noch nicht genügen, dann können Sie die Signale auch
durch eigene Audio-Samples ersetzen und somit Ihr Zeitzeichen beliebig
gestalten.


Als einigermaßen spektakuläre Variante sollten Sie einmal folgende
Einstellung ausprobieren:
@{LINDENT 3}


MINUTES=1

BACKGROUND=Background_Audio

VOLUME3=55

FREQUENCY2=1353

START_BACKGROUND_SEC=50

START_SEC=57

AUDIO_FILTER=OFF


Achten Sie bitte darauf, daß sich dabei die Datei "Background_Audio" in
derselben Schublade wie TimeSignal befindet; andernfalls müssen Sie den
vollständigen Pfad angeben

(etwa: BACKGROUND=Work:Audio/Background_Audio).


Und wenn Sie keine Funkuhr benutzen, dann muß auch noch

CHECK_DCF77=NO

eingetragen werden.

@{LINDENT 1}

Genaueres über die Arbeitsweise von TimeSignal können Sie im Abschnitt
@{" Eigenschaften " LINK "TimeSignal - Eigenschaften" 0} lesen.

@ENDNODE

@NODE "TimeSignal - Eigenschaften"
@SMARTWRAP
@{LINDENT 1}

@{b}TimeSignal  -  Eigenschaften des Programms@{ub}


TimeSignal benutzt zur Audio-Ausgabe die Datatypes-Library. Sinn dieses
Vorgehens ist es, das Programm möglichst zukunftssicher zu gestalten.

Momentan ergeben sich daraus allerdings einige Einschränkungen:

Erstens bedeutet es, daß TimeSignal erst ab Amiga OS 3 funktionsfähig ist.


Zweitens können die derzeitigen Audio-Datentypen Samples nur mono abspielen.
Sobald es eine entsprechende Erweiterung des Standards gibt, dürfte das
Programm ohne Änderung mit Stereo-Samples zurechtkommen.


Die 8SVX-Datatype des Amiga-OS 3.0 scheint auch noch einen Bug zu besitzen,
der dazu führt, daß sie das mitgelieferte Jingle
(@{" Background_Audio " SYSTEM "run >nil: /c/playsound /Utilities/Background_Audio "}) nicht
vollständig abspielen kann (das passiert auch, wenn Sie es hier anklicken).
Installieren Sie also auf Ihrem Computer die Workbench 3.1, um diesem Fehler
zu entgehen oder benutzen Sie eine der zahlreichen PD-Datentypen für Audio,
die sich im Aminet finden.


Vorteile der Benutzung von Datentypen ist, daß das Programm jedes beliebige
Datenformat verarbeiten kann, dessen Datentyp installiert ist.


@{U}Das Ausgeben des Zeitzeichens geschieht folgendermaßen:@{UU}


Sofort beim Programmstart lädt TimeSignal die in den Merkmalen angegebenen
Audio-Samples, sofern entsprechende Einträge existieren.
Wenn sie existieren und die Dateien fehlen (oder der Datentyp unbekannt ist),
wird eine Dialogbox mit einer entsprechenden Meldung ausgegeben.

Danach werden die Samples geschlossen und der angeforderte Speicher wieder
freigegeben.


Dann wartet TimeSignal auf die nächste passende Minute entsprechend der bei
@{" MINUTES " LINK "TimeSignal - MINUTES" 0} angegebenen Zahl.


Fünfzehn Sekunden vor der in
@{" START_BACKGROUND_SEC " LINK "TimeSignal - START_BACKGROUND_SEC" 0} angegebenen
Sekunde öffnet TimeSignal die Datatypes Library und lädt die angegebenen Audio-Samples.
Diese Zeit sollte ausreichen, um parkende Festplatten anlaufen zu lassen.

Falls AUDIO_FILTER=OFF eingetragen ist, wird jetzt der Filter abgeschaltet.


Zur in @{" START_BACKGROUND_SEC " LINK "TimeSignal - START_BACKGROUND_SEC" 0} angegebenen
Sekunde wird dann das Hintergrund-Sample abgespielt,
sofern bei @{" BACKGROUND " LINK "TimeSignal - BACKGROUND" 0} ein Dateiname
angegeben ist.


Dann beginnt die Ausgabe des Zeitzeichens zur in
@{" START_SEC " LINK "TimeSignal - START_SEC" 0} festgelegten Sekunde.
Dabei benutzt TimeSignal entweder das bei @{" BEEP1 " LINK "TimeSignal - BEEP" 0} angegebenen Audio-Sample oder
erzeugt einen Ton mit der Tonhöhe und Länge der Angaben
@{" FREQUENCY1 " LINK "TimeSignal - FREQUENCY" 0} und
@{" DURATION1 " LINK "TimeSignal - DURATION" 0}.


Zur vollen Minute schließlich ertönt das Sample @{" BEEP2 " LINK "TimeSignal - BEEP" 0} oder der Ton, der mit
@{" FREQUENCY2 " LINK "TimeSignal - FREQUENCY" 0} und
@{" DURATION2 " LINK "TimeSignal - DURATION" 0} eingestellt werden kann.


Mit dem Beginn der dritten Sekunde der nachfolgenden Minute werden alle
möglicherweise noch laufenden Audio-Ausgaben abgebrochen, der angeforderte
Speicher wieder freigegeben und gegebenenfalls der Audio-Filter wieder auf den
ursprünglichen Zustand geschaltet.


Wenn TimeSignal während der laufenden Audio-Ausgabe eine Änderung der Systemzeit
feststellt, dann bricht es die aktiven Vorgänge sofort ab und wartet auf die
nächste passende Minute. Um es professionell einzusetzen, sollte also unbedingt
CHECK_DCF77=YES eingestellt sein.

Außerdem sollte für einen professionellen Einsatz das Amiga OS 3.1 installiert
sein, da DCF77 nur ab diesem Betriebssystem die Zeit perfekt einstellen kann.


@ENDNODE

@NODE "TimeSignal - Tool Types"
@SMARTWRAP
@{LINDENT 1}


Folgende Merkmale lassen sich für TimeSignal angeben:


@{" MINUTES " LINK "TimeSignal - MINUTES" 0}              Abstand zwischen den Zeitzeichen

@{" BEEP1 " LINK "TimeSignal - BEEP" 0}                Sounddatei für erste Töne

@{" BEEP2 " LINK "TimeSignal - BEEP" 0}                Sounddatei für letzten Ton

@{" BACKGROUND " LINK "TimeSignal - BACKGROUND" 0}           Hintergrund-Sound

@{" VOLUME1 " LINK "TimeSignal - VOLUMES" 0}              Lautstärke für erste Töne

@{" VOLUME2 " LINK "TimeSignal - VOLUMES" 0}              Lautstärke für letzten Ton

@{" VOLUME3 " LINK "TimeSignal - VOLUMES" 0}              Lautstärke für Hintergrund

@{" AUDIO_FILTER " LINK "TimeSignal - AUDIO_FILTER" 0}         Audio-Filter-Abschaltung

@{" START_BACKGROUND_SEC " LINK "TimeSignal - START_BACKGROUND_SEC" 0} Beginn des Hintergrundes

@{" START_SEC " LINK "TimeSignal - START_SEC" 0}            Beginn der ersten Zeitzeichentöne

@{" ONE_TIME " LINK "TimeSignal - ONE_TIME" 0}             Zeitzeichen nur einmal ausgeben

@{" FREQUENCY1 " LINK "TimeSignal - FREQUENCY" 0}           Tonhöhe der ersten Töne

@{" FREQUENCY2 " LINK "TimeSignal - FREQUENCY" 0}           Tonhöhe des letzten Tons

@{" DURATION1 " LINK "TimeSignal - DURATION" 0}            Länge der ersten Töne

@{" DURATION2 " LINK "TimeSignal - DURATION" 0}            Länge des letzten Tons

@{" CHECK_DCF77 " LINK "TimeSignal - CHECK_DCF77" 0}          Überprüfung der Funkuhr

@{" TASK_PRIORITY " LINK "TimeSignal - TASK_PRIORITY" 0}        Task-Priorität

@ENDNODE

@NODE "TimeSignal - MINUTES"
@SMARTWRAP
@{LINDENT 1}

@{b}MINUTES@{ub}                     Standardeinstellung:  MINUTES=60


Das ist der Zeitabstand zwischen zwei Zeitzeichen in Minuten.


MINUTES=60 z.B. bedeutet, daß das Zeitzeichen jeweils zur vollen Stunde erzeugt wird,
MINUTES=15 hat ein Zeitzeichen aller Viertelstunden zur Folge und MINUTES=1 bewirkt
jede Minute eine akustische Belästigung.

@ENDNODE

@NODE "TimeSignal - BEEP"
@SMARTWRAP
@{LINDENT 1}

@{b}BEEP1@{ub}                       Standardeinstellung:  (kein Eintrag)

@{b}BEEP2@{ub}                       Standardeinstellung:  (kein Eintrag)


Bei BEEP1 und BEEP2 können Sie die Namen der Audio-Samples für die
Zeitzeichen-Töne eintragen.

BEEP1 sind die Sekundentöne ab
START_SEC und BEEP2 ist der Ton zur vollen Minute.

Die Sample-Daten für BEEP1 müssen kürzer als eine Sekunde sein.


Ohne Einträge bei BEEP1 und BEEP2 erzeugt TimeSignal die Töne intern.

@ENDNODE

@NODE "TimeSignal - BACKGROUND"
@SMARTWRAP
@{LINDENT 1}

@{b}BACKGROUND@{ub}                  Standardeinstellung:  (kein Eintrag)


Der Name des Audio-Samples für eine akustische Untermalung des Zeitzeichens, wie sie
derzeit bei vielen Sendern üblich ist.


Beim Aufzeichnen der Audio-Daten sollten Sie daran denken, daß das Abspielen zu einer
vollen Sekunde gestartet wird und Ihre Musik entsprechend gestalten.

@ENDNODE

@NODE "TimeSignal - VOLUMES"
@SMARTWRAP
@{LINDENT 1}

@{b}VOLUME1@{ub}                     Standardeinstellung:  VOLUME1=64

@{b}VOLUME2@{ub}                                           VOLUME2=64

@{b}VOLUME3@{ub}                                           VOLUME3=50


Die Lautstärkeangaben für die Zeitzeichentöne und die akustische Untermalung.

Die Werte müssen zwischen 0 (ganz leise) und 64 (höchste Lautstärke) liegen.

@ENDNODE

@NODE "TimeSignal - AUDIO_FILTER"
@SMARTWRAP
@{LINDENT 1}

@{b}AUDIO_FILTER@{ub}                Standardeinstellung:  AUDIO_FILTER=ON


Mit dem Eintrag AUDIO_FILTER=OFF können Sie TimeSignal veranlassen,
den Amiga-Audiofilter während des Abspielens abzuschalten.


Beachten Sie bitte, daß dies derzeit nur mittels eines direkten Zugriffs auf das
betreffende Register der Amiga-Hardware möglich ist. Bei einer späteren
Amiga-Generation mit geänderter Hardware könnte das zu Problemen führen, die Sie
dann durch Entfernen dieses Eintrags beheben müssen.

@ENDNODE

@NODE "TimeSignal - START_BACKGROUND_SEC"
@SMARTWRAP
@{LINDENT 1}

@{b}START_BACKGROUND_SEC@{ub}        Standardeinstellung:  START_BACKGROUND_SEC=50


Mit diesem Eintrag legen Sie die Sekunde fest, zu der die akustische Untermalung
des Zeitzeichens gestartet wird.


Die Zahl muß einen Wert von 19 bis 55 haben und kleiner
als @{" START_SEC " LINK "TimeSignal - START_SEC" 0} sein.

@ENDNODE

@NODE "TimeSignal - START_SEC"
@SMARTWRAP
@{LINDENT 1}

@{b}START_SEC@{ub}                   Standardeinstellung:  START_SEC=56


Mit diesem Eintrag legen Sie die Sekunde fest, zu der die Ausgabe
des Zeitzeichens gestartet wird.


Der Wert muß größer
als @{" START_BACKGROUND_SEC " LINK "TimeSignal - START_BACKGROUND_SEC" 0} sein.


@ENDNODE

@NODE "TimeSignal - ONE_TIME"
@SMARTWRAP
@{LINDENT 1}

@{b}ONE_TIME@{ub}                    Standardeinstellung:  ONE_TIME=NO


Mit der Einstellung NO läuft TimeSignal im Dauerbetrieb.


Mit der Einstellung YES gibt das Programm das Zeitzeichen nur einmalig aus
und beendet dann seine Tätigkeit.

@ENDNODE

@NODE "TimeSignal - FREQUENCY"
@SMARTWRAP
@{LINDENT 1}

@{b}FREQUENCY1@{ub}                  Standardeinstellung:  FREQUENCY1=1000

@{b}FREQUENCY2@{ub}                  Standardeinstellung:  FREQUENCY2=1000


Diese Einträge legen die Tonhöhen der intern erzeugten Signaltöne fest.
Es werden Sinustöne mit der in Hz angegebenen Frequenz generiert.

Die obere Grenzfrequenz variiert je nach der aktuellen
Bildwiederholfrequenz des Computers (aufgrund der DMA-Hardware).


Auf PAL-Systemen beträgt das Maximum 1440 Hz.


Wenn bei BEEP1 bzw. BEEP2 Audio-Dateien eingetragen sind, werden die
FREQUENCY1- bzw. FREQUENCY2-Angaben ignoriert.

@ENDNODE

@NODE "TimeSignal - DURATION"
@SMARTWRAP
@{LINDENT 1}

@{b}DURATION1@{ub}                   Standardeinstellung:  DURATION1=100

@{b}DURATION2@{ub}                   Standardeinstellung:  DURATION2=1000


Diese Einträge legen die Tondauer (in ms) der intern erzeugten Signaltöne fest.


DURATION1 darf maximal 999 betragen.


Wenn bei BEEP1 bzw. BEEP2 Audio-Dateien eingetragen sind, werden die
DURATION1- bzw. DURATION2-Angaben ignoriert.

@ENDNODE

@NODE "TimeSignal - CHECK_DCF77"
@SMARTWRAP
@{LINDENT 1}

@{b}CHECK_DCF77@{ub}                 Standardeinstellung:  CHECK_DCF77=YES


In der Einstellung YES gibt TimeSignal das Zeitzeichen nur dann aus, wenn
die Uhrzeit von DCF77 gestellt worden ist. Das Programm DCF77 muß dabei
natürlich in Betrieb sein.


In der Einstellung NO wird das Zeitzeichen immer ausgegeben.

@ENDNODE

@NODE "TimeSignal - TASK_PRIORITY"
@SMARTWRAP
@{LINDENT 1}

@{b}TASK_PRIORITY@{ub}               Standardeinstellung:  TASK_PRIORITY=1


Mit diesem Eintrag legen Sie die Task-Priorität von TimeSignal fest.

@ENDNODE


@NODE WaitForDCF77
@SMARTWRAP
@{LINDENT 1}

@{B}WaitForDCF77@{UB}


Das Programm WaitForDCF77 gibt Ihnen die Möglichkeit,
andere Programme abhängig vom erfolgreichen Empfang der
Zeit zu starten.


WaitForDCF77 wird in der Shell (in der Praxis sicherlich
in einem Script) ohne Argumente aufgerufen und wartet dann,
bis das Programm DCF77 die Systemzeit gestellt hat.
Dabei ist es auch zulässig, DCF77 erst nach WaitForDCF77
zu starten.


Wenn DCF77 nicht läuft, wartet WaitForDCF77 unbegrenzt.


@ENDNODE

@NODE WaitDCF77ifCrash
@SMARTWRAP
@{LINDENT 1}

@{B}WaitDCF77ifCrash@{UB}


@{U}Verwendungszweck@{UU}


Das Programm WaitDCF77ifCrash ist dann von Nutzen, wenn Sie Software
haben, die auf ein richtiges Datum angewiesen ist.

Bei Systemabstürzen kommt es gelegentlich dazu, daß die Register der
Hardwareuhr überschrieben werden, wodurch die Uhrzeit verändert wird.


WaitDCF77ifCrash speichert das Datum seines Aufrufs in der Datei
ENVARC:LastBootDate, und wenn es beim nächsten Aufruf feststellt, daß das
Systemdatum älter als das gespeicherte ist oder sich um mehr als ein
halbes Jahr geändert hat, dann wartet es auf den Funkuhrempfang.

Das funktioniert meistens wie gewünscht, da Systemabstürze, die die
Hardwareuhr überschreiben, fast immer ein gründlich verändertes Datum zur
Folge haben.

Natürlich wartet es auch dann, wenn Sie Ihren Amiga ein halbes Jahr nicht
benutzen (wozu brauchen Sie ihn dann überhaupt?), aber nach dieser Zeit
ist wahrscheinlich auch der Akkumulator der Hardware-Uhr entladen.



@{U}Benutzung@{UU}


WaitDCF77ifCrash ist ein Shell-Befehl.

Das Programm wird ohne Argumente in dem Skript aufgerufen, in welchem
später auch Ihre Anwendung gestartet wird, die das fehlerfreie Datum
braucht.



@{U}Beispiel@{UU}


Ein Programm namens "AmigaOrganizer", das sich in der Schublade
"Organizer" auf der Festplatte "Work" befindet, soll abhängig vom
richtigen Datum gestartet werden. Dazu ist folgendes zu tun:


- DCF77 nach WBStartup und WaitDCF77ifCrash nach C: kopieren


- Eine Textzeile in s:user-startup eintragen:


  run >nil: execute s:runorg


- Die Textdatei s:runorg schreiben:


  stack 12000	;Stackgröße je nach Anwendung (voreingestellt ist 4096)

  waitdcf77ifcrash

  cd work:organizer

  amigaorganizer


Die notwendige Größe des Stacks finden Sie entweder im Handbuch des
jeweiligen Programms, oder Sie schauen auf der Workbench mit dem
Menüpunkt Piktogramm/Informationen nach.



@{U}Anhalten des Bootvorgangs@{UU}


Wenn Sie Anwendungen warten lassen wollen, die Sie automatisch über
die Workbench starten, indem Sie sie in die Schublade WBStartup
kopiert haben, dann können Sie auch das Laden der Workbench vom
richtigen Datum abhängig machen, indem Sie DCF77 und WaitDCF77ifCrash
direkt in der User-Startup aufrufen. Dazu müssen Sie lediglich die
vier Textzeilen


;BEGIN DCF77

DCF77

WaitDCF77ifCrash

;END DCF77


in die Datei s:user-startup eintragen und die beiden Programme in
ein Verzeichnis kopieren, daß im Suchpfad liegt (z.B. SYS:Utilities).
Das Empfangsprogramm DCF77 @{B}muß@{UB} in diesem Fall natürlich in der
User-Startup aufgerufen werden und nicht etwa, indem Sie es nach
WBStartup kopiert haben, denn dann würde der Empfang natürlich nicht
gestartet, wenn WaitDCF77ifCrash wartet.


Sie sollten diese Art der Installation aber nur benutzen, wenn sich
die Anwendungen nicht wie im obigen Beispiel starten lassen, weil bei
dieser Art des Aufrufs von DCF77 keine Möglichkeit besteht, die
Eigenschaften des Programms zu steuern.

Außerdem gibt es noch eine mögliche Komplikation:

Mehrfrequenzmonitoren stören den DCF77-Empfänger beim Betrieb mit
Videofrequenzen wesentlich stärker als z.B. im Productivity-Modus.
Es sind also Empfängeranordnungen denkbar, bei denen der Empfang erst
dann läuft, wenn die Screenmode-Einstellungen vom Betriebssystem
aktiviert worden sind. Und wenn Sie nun mit dem Laden der Workbench
und damit auch dem Einstellen des Productivity-Modus auf den
DCF77-Empfang warten, könnte Ihr Amiga sehr lange in diesem Zustand
hängenbleiben.


Diese Installation kann auch mit UnInstallDCF77 wieder entfernt werden,
(falls Sie nicht die Zeilen mit BEGIN und END weggelassen haben, denn
die werden zum automatischen Löschen in der User-Startup gebraucht).


@ENDNODE

@NODE "Copyright" "Copyright"
@SMARTWRAP
@{LINDENT 1}

@{b}Copyright, Haftung@{ub}


Software und Dokumentation


Copyright © 1994-1996 OsaMatic System GmbH

                      Schillerstraße 68

                      D-02763 Zittau



Mit dem Kauf dieses Produktes erwirbt der Käufer das Nutzungsrecht an der Software.
Dieses Nutzungsrecht beschränkt sich auf den Einsatz auf einem einzigen Computer.


Der Käufer dieses Produktes ist berechtigt, von den gelieferten Datenträgern
Sicherungskopien anzufertigen, die Software auf den Massenspeicher eines Computers
zu kopieren und auf diesem Computer zu benutzen. Das Kopieren der Software zu
anderen Zwecken als dem Anfertigen von Sicherheitskopien ist unzulässig. Eine
Weitergabe der Software an Dritte, auch leihweise, ist unzulässig außer im Falle
des Weiterverkaufs, wobei alle vorhandenen Kopien vernichtet werden müssen.



Bei der Entwicklung der Software wurde mit allergrößter Sorgfalt vorgegangen.
Trotzdem sind Fehler nicht vollständig ausgeschlossen. OsaMatic übernimmt keine
Haftung für Schäden, die auf Fehlfunktionen von Programmen zurückzuführen sind.
@ENDNODE

@NODE "Registrierung" "Registrierung"
@{LINDENT 1}
@{B}Registrierung@{UB}

Wenn Sie an Updates auf zukünftige Programmversionen interessiert sind
und bei Fertigstellung einer wesentlich weiterentwickelten Programmversion
informiert werden möchten, dann senden Sie bitte die im
folgenden aufgelisteten Informationen an die unten genannte Adresse
(per Postkarte oder Fax).

 ___________________________________________________________________
|                                                                   |
| Software-Registrierung                                            |
|                                                                   |
| Produkt:     DCF77 Version 3.4                                    |
|                                                                   |
| Vorname Name                                                      |
| ggf. Firma                                                        |
| Straße Hausnummer                                                 |
| PLZ Ort                                                           |
|                                                                   |
| Computertyp, Betriebssystemversion                                |
|                                                                   |
| hauptsächlicher Einsatz des Programms (professionell, privat)     |
|___________________________________________________________________|


Verbesserungsvorschläge und Bugreports sind ebenfalls willkommen.
Bei Bugreports geben Sie bitte die genaue Rechnerkonfiguration und 
die Betriebssystemversion Ihres Amiga an.


 OsaMatic System GmbH
 Schillerstraße 68          Tel. 03583 / 57320
 D-02763 Zittau             Fax  03583 / 573223

@ENDNODE

@NODE "DCF77 History" "DCF77 History"
@{LINDENT 1}
@{U}Liste aller veröffentlichten Versionen von DCF77@{UU}



@{i}"Nichts ist langweiliger als ein Programm, das endlich fehlerfrei läuft."
 (Prof. Ungruen)@{ui}



26. 1.94  -  1.65
Erste funktionsfähige Commodity-Version für Empfänger mit
low-aktiven Sekundenimpulsen (Conrad Electronic).

31. 1.94  -  1.69
Automatisches Abspeichern der Zeit in die akkugestützte Uhr
hinzugefügt. Diverse Kleinigkeiten verbessert.

30. 6.94  -  1.70
Änderung für high-aktive Sekundenimpulse. Adaptionsfaktor
speziell an boeder-Empfänger angepaßt. Nicht für Conrad-Empfänger geeignet.

11. 7.94  -  1.71
Programm erkennt jetzt selbständig, ob es sich um einen
Empfänger mit low- oder high-aktiven Sekundenimpulsen handelt. Berechnung
des Adaptionsfaktors verbessert.

13. 7.94  -  1.72
Erhöhung der Fehlersicherheit, indem die Zeit vom Sender
DCF77 erst nach zweimalig identischem Empfang akzeptiert wird.

11. 9.94  -  1.74
Als Startwert für den Zeitvergleich in aufeinanderfolgenden
Minuten wird jetzt die Systemzeit benutzt. Eine SignalSemaphore wurde
eingeführt, die es anderen Programmen erlaubt, den Empfangsstatus von DCF77
zu erfahren. WaitForDCF77 als Hilfsprogramm und Programmierbeispiel
hinzugefügt.

17. 9.94  -  1.75
Diverse Kleinigkeiten verbessert. Neue Demoversion angefertigt.

------------------------------------------------------------ Version 2 -----

31.10.94  -  2.0
Auswertung der Zonenzeitbits hinzugefügt. Auswertung des
GMTOffsets der Locale Library hinzugefügt. Tool Types eingeführt (Offset für
Sekunden und Mikrosekunden, Locale, DST, UpdateLocale, UTC, Task-Priorität).

 9.11.94  -  2.02
Tool Types um Pause, One_Time und Quit_After_Trials ergänzt.

17.12.94  -  2.03
Interne Programmstruktur überarbeitet (jetzt werden alle
CX-Kommandos asynchron ausgewertet). WaitDCF77ifCrash als Hilfsprogramm und
Programmierbeispiel hinzugefügt.

28.12.94  -  2.07
Empfangsverhalten bei bestimmten Störungen geringfügig
verbessert. Am 7.2.95 WaitDCF77ifCrash auf Version 1.02 geändert (wartet
jetzt auch bei Datumssprüngen von über einem halben Jahr).
Am 19.2.95 das Installationsskript für WaitDCF77ifCrash hinzugefügt.
Am  4.4.95 das Installations- und das Desinstallationsskript für DCF77
hinzugefügt und die Bedienungsanleitung überarbeitet.

15. 4.95  -  2.08
Auf Amigas ohne Locale-Library wurde von Version 2.0 bis
2.07 die Zeit um zwei Stunden nachgehend eingestellt (die Ursache war ein
fehlendes Minuszeichen bei der Initialisierung einer Variablen). Und das hat
mir bisher niemand mitgeteilt - sind Workbench 2.04 und 2.05 wirklich schon
ausgestorben?

15. 5.95  -  2.11
Erste mehrsprachige Version (deutsch, englisch). Alle Texte intern.

22. 7.95  -  2.12
Auf Amigas mit CPU 68030 und Koprozessor stellt Version 2.11
das Datum um einen Tag vor. Die Ursache liegt in einem Fehler des Compilers
Maxon C++ V3.00, der für 2.11 erstmalig eingesetzt wurde. In DCF77 Version
2.12 wird der Fehler durch Verzicht auf bestimmte Typumwandlungen von
Variablen umgangen.

10. 9.95  -  2.13
Wenn DCF77 über Exchange inaktiv geschaltet wird, gibt es
jetzt den Gameport frei.

27.10.95  -  2.14
Tool Types um SAVE_UTC und SAVE_DST ergänzt.

 5.11.95  -  2.16
DCF77 erkennt jetzt nach maximal einer Minute eine durch ein
anderes Programm veränderte Systemzeit. Tool Types um MAX_TIME_DIFFERENCE
ergänzt.

19.11.95  -  2.17
Kleine Optimierungen.

30.11.95  -  2.18
Die Struktur zur Übergabe des Empfangsstatus an andere
Programme wurde um den Betriebszustand, die verbleibende Zeit bis zum
nächsten Stellen der Systemzeit und den letzten Fehler erweitert.

28.12.95  -  2.21
Rechenzeitverbrauch und Code-Größe durch einige
Optimierungen verringert. Der Empfangsstatus meldet jetzt ein gestörtes
Signal zuverlässiger. DCF77-Demo in DCF77-Diagnose umbenannt, damit der Name
Demo für die frei kopierbare Version des DCF77-Paketes benutzt werden kann.

29. 1.96  -  2.23
Das Signalfenster von DCF77-Diagnose bei Betrieb unter OS 2.x vergrößert.
Tool Types um ALLOWED_TIME_DIFFERENCE ergänzt.

------------------------------------------------------ Version 3 alpha -----

6. 4. 96  -  2.34
Dies ist eine Alpha-Version der geplanten Version 3 des Programms, die
freigegeben worden ist, um schon jetzt den Betrieb an der seriellen
Schnittstelle zu ermöglichen.
Neuerungen sind:
Umfangreiche Überarbeitung der Empfangsalgorithmen,
Wahlweise Gameport Timeout oder Timer Device als Zeitbasis,
Unterstützung der seriellen Schnittstelle (es fehlt noch die Möglichkeit,
die serielle Schnittstelle zu reservieren).
Das Zeitzeichenprogramm TimeSignal ist neu hinzugekommen.

4. 8. 96  -  2.37
Erste englische Bedienungsanleitung hinzugefügt; in diesem Zusammenhang einige
Dateinamen ins Englische übersetzt (Diagnose->Diagnosis, Reichweite->Range...)
und die Verzeichnisstruktur aufgeräumt.
Tool Types um ALLOCATE_RESOURCES ergänzt.
Die serielle Schnittstelle wird in der betreffenden Betriebsart jetzt
reserviert.
Einen Fehler beseitigt, der Version 2.34 in der Gameport-Betriebsart nach
dem ersten erfolgreichen Empfang für eine halbe Stunde lahmgelegt hat.

19. 8. 96 -  2.40
Automatisches Testen der Schnittstellen (SCAN_PORTS und SUPPRESS_SCAN_MESSAGE)
eingeführt.
Fehlerkorrektur: Die Versionen 2.34 und 2.37 haben in der Timer-Betriebsart
beim Beenden des Programms das angeforderte Timersignal nicht mehr abgeholt.

30. 8. 96 -  2.41
Noch einen Fehler beseitigt, der durch die letzten Änderungen entstanden ist:
Wurde v2.40 im inaktiven Zustand der Gameport-Betriebsart beendet, hat es
einen Absturz verursacht.

10. 9. 96 -  2.42
Unterstützung der restlichen Datenleitungen des Gameports 2 und von Pin 5 des
Gameports 1 implementiert.

16. 9. 96 -  2.43
Unterstützung des Parallelports implementiert.

------------------------------------------------------------ Version 3 -----

27.10.96  -  3.0
SAFETY_LEVEL und SCAN_RATE eingeführt.
Software-PLL für höchste Genauigkeit implementiert.

26.11.96  -  3.1
DCF77 Diagnosis verbessert, so daß die Textausgabe auch auf langsamen Amigas
schnell genug ist.
Das Verhalten bei der Auswertung von ALLOWED_TIME_DIFFERENCE korrigiert
(wenn hier ein Wert eingetragen war, ist die Zeit ab und zu trotz größerer
Abweichung nicht eingestellt worden).

14.12.96  -  3.2
Kleine Änderungen.

21.12.96  -  3.3
Zwei (ungefährliche) Enforcer-Hits beseitigt.
(Dank an Dirk Stöcker für den Hinweis!)

20.1.97   -  3.4
Kleine Änderungen.


@ENDNODE

@NODE "GClock History" "GClock History"
@{LINDENT 1}
@{U}Änderungsliste aller veröffentlichten Versionen von GClock:@{UU}


30. 1.94  -  beta 0.41
Erste akzeptable Version. Ohne Menüs, Zeiger nur als Linien.

 7. 2.94  -  1.0
Variable Zeigertypen (als Polygon) und Menüs eingeführt.

14. 2.94  -  1.08
Zeigertyp Standard 2 hinzugefügt.

26. 2.94  -  1.12
Abschaltbarer Fensterrahmen eingeführt. Datumsanzeige im Screentitel hinzugefügt.
Handhabung der IDCMP-Nachrichten jetzt asynchron.

 6. 3.94  -  1.13
Minutenlinien des Zifferblatts jetzt als Polygon gezeichnet (vorher Linien).

26. 3.94  -  1.14
Darstellung der Minutenlinien an Zeigertyp angepaßt. Drei Enforcer-Hits beim
Programmstart entfernt.

19. 7.94  -  1.17
Verhalten bei Speichermangel verbessert. Datum im Screentitel wird jetzt in der
im Locale-Voreinsteller eingestellten Sprache angezeigt.
Diverse Kleinigkeiten verbessert.

24. 7.94  -  1.19
Mehrmaliges Zeichnen des Hintergrundes bei Zeigerwechsel entfernt.

 9. 8.94  -  1.23
Rechenzeitverbrauch durch einige Optimierungen verringert.

22. 8.94  -  1.26
Darstellungsarten des Fensterrahmens erweitert (Overlap).
Anpassung an aktuellen Displaymodus verbessert. Begrenzung der Fenstergröße
entfernt und Speicherbedarf zur Laufzeit stark verringert (Arbeitsspeicher für
Grafikoperationen wird jetzt dynamisch angefordert).

17. 9.94  -  1.29
Im Screentitel und durch ein grafisches Symbol im Fenster der Uhr wird jetzt
zusätzlich angezeigt, ob das ggf. gleichzeitig laufende Programm DCF77
die Zeit bereits erfolgreich empfangen hat.

 8.10.94  -  1.31
Fensterabmessungen und -position werden nicht mehr absolut gespeichert,
sondern auf den aktuellen Displaymodus bezogen.

26.10.94  -  1.33
Kreisförmige Darstellung des Zifferblatts (Circular) und Menüpunkt 'Last Saved'
hinzugefügt.

20.11.94  -  1.34
Fließpunktarithmetik zur Koordinatenberechnung durch Ganzzahlarithmetik
ersetzt, damit schnellerer Bildaufbau auf langsamen Amigas.

14. 5.95  -  1.40
Erste mehrsprachige Version (deutsch, englisch).

 4. 1.96  -  1.47
Ein Wettlaufproblem mit dem (asynchronen) Zeichnen des Fensterrahmens bei der
überlappenden Darstellung beseitigt. Darstellungsqualität durch gepufferte
Anwendung der Grafikfunktionen verbessert. Dadurch wird auch der sich bei
allen vorherigen Versionen auswirkende Betriebssystemfehler (Grafikfehler
beim Zeichnen von Polygonen, die teilweise hinter einem anderen Fenster
liegen) umgangen. Das Abfrageintervall für den DCF77-Empfangsstatus von einer
Minute auf 10 Sekunden (bei gültiger Zeit) bzw. 1 Sekunde (während des ersten
Empfangs) verkürzt. Grafische Darstellung des DCF77-Empfangsstatus und
Datumsanzeige eingebaut.

20. 1.96  -  1.48
Fehlerkorrektur: In der vorherigen Version hat die Betriebsart ohne
Fensterrahmen den Rahmen nicht mehr gelöscht.

@ENDNODE

@NODE "TimeSignal History" "TimeSignal History"
@{LINDENT 1}
@{U}Änderungsliste aller veröffentlichten Versionen von TimeSignal:@{UU}


 9. 6.96  -  1.06
Erste veröffentlichte Version.

27. 8.96  -  1.07
Steuerung des Audio-Filters verbessert.

28. 9.96  -  1.08
Wenn DCF77 überprüft werden soll und die Zeit noch nicht gültig ist, dann
wird die Wartezeit, während der TimeSignal keine Rechenzeit verbraucht, auf
maximal 30 Sekunden verkürzt, um größere Änderungen der Systemzeit
mitzubekommen.

@ENDNODE

@NODE "abschließende Bemerkung" "abschließende Bemerkung"
@SMARTWRAP
@{LINDENT 1}






So, das wäre es erst einmal. Ich hoffe, daß Ihnen diese Bedienungsanleitung alle
Informationen vermitteln konnte, die Sie sich gewünscht haben.




Viel Erfolg!


Ralf Gruner

@ENDNODE

@NODE "Index" "Index"
@{LINDENT 1}
@{B}Index@{UB}

A
@{" ALLOCATE_RESOURCES " LINK "ALLOCATE_RESOURCES" 0}
@{" ALLOWED_TIME_DIFFERENCE " LINK "ALLOWED_TIME_DIFFERENCE" 0}
@{" Änderungsliste DCF77" LINK "DCF77 History" 0}
@{" Änderungsliste GClock" LINK "GClock History" 0}
@{" Änderungsliste TimeSignal" LINK "TimeSignal History" 0}
@{" AUDIO_FILTER " LINK "TimeSignal - AUDIO_FILTER" 0} 

B
@{" BACKGROUND " LINK "TimeSignal - BACKGROUND" 0}
@{" BEEP1 " LINK "TimeSignal - BEEP" 0}
@{" BEEP2 " LINK "TimeSignal - BEEP" 0}

C
@{" CHECK_DCF77 " LINK "TimeSignal - CHECK_DCF77" 0}
@{" CONTROL_GAMEPORT_HARDWARE " LINK "CONTROL_GAMEPORT_HARDWARE" 0}
@{" CONTROL_PARALLEL_HARDWARE " LINK "CONTROL_PARALLEL_HARDWARE" 0}
@{" CONTROL_SERIAL_HARDWARE " LINK "CONTROL_SERIAL_HARDWARE" 0}
@{" Copyright " LINK "Copyright" 0}

D
@{" DCF77-1.2 " LINK "/DCF77 (Kickstart 1.2)/DCF77-1.2-Anleitung/MAIN"}
@{" DCF77 Diagnosis " LINK "DCF77 Diagnosis"}
@{" Dongle " link "DCF77-Empfänger und Dongle" 0}
@{" DST " LINK "DST" 0}
@{" DURATION1 " LINK "TimeSignal - DURATION" 0}
@{" DURATION2 " LINK "TimeSignal - DURATION" 0}

E
@{" Empfänger anschließen " link "Anschluß von Empfängern" 0}
@{" Exchange " LINK "Bedienung" 0}

F
@{" Fehlersuche " LINK "Fehlersuche" 0}
@{" FREQUENCY1 " LINK "TimeSignal - FREQUENCY" 0}
@{" FREQUENCY2 " LINK "TimeSignal - FREQUENCY" 0}

G
@{" GClock " LINK "GClock"}
@{" GMT " LINK "UTC" 0}

H
@{" Hilfsprogramme " LINK "Hilfsprogramme" 0}
@{" History DCF77" LINK "DCF77 History" 0}
@{" History GClock" LINK "GClock History" 0}
@{" History TimeSignal" LINK "TimeSignal History" 0}

I
@{" Installation und Programmstart " LINK "Installation" 0}
@{" Installation rückgängig machen " link "Desinstallation" 0}

L
@{" Lieferumfang " LINK "Lieferumfang" 0}
@{" LOCALE " LINK "LOCALE" 0}

M
@{" MAX_TIME_DIFFERENCE " LINK "MAX_TIME_DIFFERENCE" 0}
@{" Merkmale (DCF77) " LINK "Betriebsart" 0}
@{" Merkmale (TimeSignal) " LINK "TimeSignal - Tool Types" 0}
@{" MINUTES " LINK "TimeSignal - MINUTES" 0}

O
@{" ONE_TIME " LINK "ONE_TIME" 0}
@{" OFFSET.HOURS " LINK "OFFSETS" 0}
@{" OFFSET.MINUTES " LINK "OFFSETS" 0}
@{" OFFSET.SECONDS " LINK "OFFSETS" 0}
@{" OFFSET.MICROSECONDS " LINK "OFFSETS" 0}
@{" ONE_TIME " LINK "TimeSignal - ONE_TIME" 0}

P
@{" PAUSE " LINK "PAUSE" 0}
@{" PIN " LINK "PIN" 0}
@{" PORT " LINK "PORT" 0} 
@{" PLL " LINK "Genauigkeit" 0}  (phase-locked loop)

Q
@{" QUIT_AFTER_TRIALS " LINK "QUIT_AFTER_TRIALS" 0}

S
@{" SAVE_DST " LINK "SAVE_DST_UTC" 0}
@{" SAVE_UTC " LINK "SAVE_DST_UTC" 0}
@{" SAFETY_LEVEL " LINK "SAFETY_LEVEL" 0}
@{" SCAN_PORTS " LINK "SCAN_PORTS" 0}
@{" SCAN_RATE " LINK "SCAN_RATE" 0}
@{" Softwareschnittstelle " LINK "/Developer/DCF77-Datenaustausch/MAIN"}
@{" START_BACKGROUND_SEC " LINK "TimeSignal - START_BACKGROUND_SEC" 0}
@{" START_SEC " LINK "TimeSignal - START_SEC" 0}
@{" SUPPRESS_SCAN_MESSAGE " LINK "SUPPRESS_SCAN_MESSAGE" 0}

T
@{" TASK_PRIORITY (DCF77) " LINK "TASK_PRIORITY" 0}
@{" TASK_PRIORITY (TimeSignal) " LINK "TimeSignal - TASK_PRIORITY" 0}
@{" TIMER " LINK "TIMER" 0}
@{" TimeSignal " LINK "TimeSignal"}
@{" Tool Types (DCF77) " LINK "Betriebsart" 0}
@{" Tool Types (TimeSignal) " LINK "TimeSignal - Tool Types" 0}

U
@{" UninstallDCF77 " link "Desinstallation" 0}
@{" UPDATE_LOCALE " LINK "UPDATE_LOCALE" 0}
@{" UTC " LINK "UTC" 0}
@{" Utilities " LINK "Hilfsprogramme" 0}

V
@{" VOLUME1 " LINK "TimeSignal - VOLUMES" 0}
@{" VOLUME2 " LINK "TimeSignal - VOLUMES" 0}
@{" VOLUME3 " LINK "TimeSignal - VOLUMES" 0}

W
@{" WaitDCF77ifCrash " LINK "WaitDCF77ifCrash"}
@{" WaitDCF77ifCrash.c " LINK "/Developer/WaitDCF77ifCrash.c/MAIN"}
@{" WaitForDCF77 " LINK "WaitForDCF77"}
@{" WaitForDCF77.c " LINK "/Developer/WaitForDCF77.c/MAIN"}


@ENDNODE
