Funkamateur 10/87

 

Eine Weckuhr für den "AC1"

Ing. J. HANNEMANN

Die nachfolgend beschriebene Uhr mit Zeitschalteinrichtung hat sich bei mir seit über einem Jahr gut bewährt. Sie ist mitunter eine mahnende Hilfe für lange Computernächte. Bei der Programmentwicklung wurde, ähnlich [1], auf folgende Details Wert gelegt:
- CTC-Betrieb mit Interrupt;
- ständige Anzeige der Uhrzeit;
- relocatible Programmgestaltung;
- einfache Stellmöglichkeit;
- minimale Hardwareänderung;
- Zeitschalteinrichtung mit beliebig vielen Zeiten;
- Start von Load, Save und Verify bei laufender Uhr.
Die Uhr beansprucht die CTC-Kanäle 2 und 3 des "AC1". Dadurch ergibt sich eine kleine Hardwareergänzung. Die Pins ZC/TO 2 und CLK 3 müssen miteinander verbunden werden. Das geschieht am einfachsten am Steckverbinder zur Tastatur. Dort werden die Anschlüsse 87 und 88 gebrückt.
Das Programm belegt 324 Byte im RAM und 22 Arbeitszellen, die sich unmittelbar an die Systemvariablen des Monitors anschließen. Ist die Uhr einmal auf Band, kann sie an jede beliebige Stelle im RAM (z.B. mit Offset) geladen werden oder man schafft sie mit dem Transferbefehl dorthin. Beim Verschieben der Uhr mit dem T-Befehl in einen höhergelegenen RAM-Bereich ist jedoch darauf zu achten, daß das alte Uhrenprogramm gelöscht wird, weil es sonst zu Fehlfunktionen kommen kann. Die Uhr wird mit dem Kennbuchstaben "U" und der aktuellen Uhrzeit gestartet. Bei Bedarf ist ein anderer Kennbuchstabe in die Rahmensequenz einzutragen. Load, Save und Verify werden mit den Kleinbuchstaben l, s und v bei laufender Uhr gestartet. Die Interruptanforderung der CTC wird dann unterbunden und die Uhr hält an. Nach der Kassettenarbeit kann die Uhr dann in bekannter Weise neu gestartet werden. Die Korrektur der Zeit kann ebenfalls bei laufender Uhr erfolgen ("U" mit neuer Zeitangabe). Zur Genauigkeit und zur Zusammenarbeit mit anderen Programmen gilt wesentlich das in [1] Gesagte. Die wichtigsten Hinweise sollen hier noch einmal kurz zusammengefaßt werden:
- der Interrupt-Mode IM 2, das I-Register der ZVE und der Interrupt-Vektor der CTC (88H) dürfen nicht verändert werden;
- bei Interruptanforderungen der Kanäle 0 und 1 sind nachfolgende Adressen in der Sprungtabelle zu benutzen (1888H für Kanal 0 und 188AH für Kanal 1);
- wenn in Programmen der DI-Befehl längere Zeit (> 1 s) nicht aufgehoben wird, kommt es zu Gangungenauigkeiten.

Die Zeitschalteinrichtung

Ein Programmteil der ISR vergleicht nach jedem Zählvorgang die aktuelle Uhrzeit mit der voreingestellten Zeit. Sind beide gleich, springt der Prozessor nicht mehr in das unterbrochene Programm zurück, sondern zur Adresse 1896H. Dort muß entweder ein Weckprogramm oder ein Sprung zu einem anderen Programm stehen. Das Weckprogramm kann individuell gestaltet werden. So kann man z.B. vor der eigentlichen Weckroutine den Zeitschaltpuffer mit einer neuen Weckzeit laden. Auf diese Weise sind beliebig viele Zeiten vorprogrammierbar. Die Zeitschalteinrichtung kann auch unwirksam gemacht werden.

Handhabung der Uhr

Einstellen der Uhrzeit:
U 15 35 30
Sie erscheint in der rechten oberen Ecke (2. Zeile) in dieser Form:
15:35:30
Einstellen der Weckzeit:
W 17 15 45
Die Anzeige der Weckzeit erfolgt nicht, kann aber problemlos nachgerüstet werden.
Zeitschalteinrichtung deaktivieren:
W A
Anstelle "A" kann auch jeder andere Buchstabe eingetragen werden, Nullen bei den Zeitangaben müssen nicht geschrieben werden.

Speicherbelegung

Das Hauptprogramm belegt 324 Byte im RAM an beliebiger Stelle. Die Arbeitszellen liegen von 1880H bis 1895H und sind wie folgt aufgeteilt:
1880H bis 1885H - Uhrzeitpuffer;
1886H bis 1887H - Hilfszellen;
1888H bis 188FH - Sprungtabelle;
1890H bis 1895H - Schaltzeitpuffer;
1896H - Beginn Weckroutine.
Die Zeiten sind bereits im ASCII-Kode abgelegt und beginnen bei 1880H mit den Sekunden-Einer.

Mögliche Änderungen

  "AC1"-Monitor Uhradresse
LOAD 0364H 1909H
SAVE 02BAH 191FH
VERIFY 0359H 1914H
GETCO1 07FDH 193DH u. 1989H

Literatur

[1] Namyslo, W.; Digitaluhr für den "AC1",
FUNKAMATEUR 35 (1986), H.7, S.358

167 KByte
Programm

Funkamateur 01/88

 

Korrektur

Heft 10/1987, Seite 510
Eine Weckuhr für den "AC1"

Durch ein Versehen des Autors ist ein noch nicht korrigiertes Hex-Listing abgedruckt worden. Der Zeitschaltpuffer überlappt sich mit den Sprungadressen der Kanäle 0 und 1 der CTC in der INT-Tabelle, was zu Fehlfunktionen bei INT-Betrieb dieser Kanäle und gleichzeitiger Benutzung der Zeitschalteinrichtung führen kann. Folgende Bytes sind daher zu ändern:

Adresse falsch richtig
192B 8B 95
19EB 85 8F

Bei Übersendung einer Magnetbandkassette plus Rückporto ist der Autor bereit, das Programm, eine ausführliche Beschreibung und den Quelltext zuzusenden (J. Hannemann, Berlin.).