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