Funkamateur 07 und 10/86 |
Das große Interesse am Amateurcomputer "AC1" läßt
darauf schließen, daß dieser Amateurcomputer bisher schon
von
vielen OMs gebaut wurde. Für den Einsatz beim Funkamateur ist u.a.
die Kenntnis der Uhrzeit für die Führung des
Funktagebuches eine wichtige Voraussetzung. Die Anzeige der aktuellen
Uhrzeit kann der "AC1" ohne zusätzlichen
Hardware-Aufwand mit einem kleinen Programm realisieren.
Bei der Programm-Entwicklung wurde davon ausgegangen, daß die
Uhrzeit ständig in der oberen rechten Ecke des
Bildschirmes angezeigt wird und von anderen Programmen nicht
beeinflußt wird. Weiterhin sollte das Programm
speicherplatzunabhängig (relocatibel) sein, um an beliebiger
Stelle eingeordnet werden zu können. Von der
im "AC1" vorhandenen Hardware sollte nur ein CTC-Kanal benutzt werden
und das Programm sollte nicht länger
als etwa 256 Bytes sein. Weiter zu berücksichtigen ist, daß
durch die Interrupt-Belastung die Rechenzeit des
Systems nur unwesentlich erhöht wird. Diese Forderungen sind
naturgemäß nur mit einigen Kompromissen zu erfüllen.
Bei der Erzeugung des Zähltaktes muß man von der
System-Taktfrequenz 2000 kHz ausgehen. Bei Verwendung nur eines
CTC-Kanals ergibt sich nach dem Vorteiler des CTC, der auf 256
eingestellt wird, ein Zwischentakt von 7812,5 Hz.
Da dieser Takt durch einen CTC-Kanal nur ganzzahlig geteilt werden
kann, ergibt sich daraus eine Zeitangabe,
die nur im 2-Sekunden-Takt weitergezählt werden kann. Mit einem
Teilerfaktor von 125 des CTC ergibt sich eine
Frequenz von 62,5 Hz.
Mit dieser Frequenz wird ein Interrupt-Programm ausgelöst, das das
Weiterzählen der Uhr und alle 2 Sekunden
die aktuelle Zeitanzeige realisiert. Für den praktischen Betrieb
bedeutet das, daß nach spätestens 2 Sekunden
die aktuelle Uhrzeit wieder auf der obersten Bildzeile eingetragen
wird, auch wenn diese inzwischen durch ein
anderes Programm gelöscht wurde.
Das in Tabelle 1 wiedergegebene
Programm wird mittels des M-Kommandos auf einen beliebigen
Speicherbereich
eingegeben. Wer auf das Mini-BASIC verzichtet, kann dieses auch im
EPROM-Bereich ab 800H unterbringen. Nicht
benutzt werden darf dabei der RAM-Bereich 188EH...1894H, da das
Uhrzeit-Programm diesen Bereich als
Arbeitszellen benutzt.
Nach der Programmeingabe wird mit Eingabe des Buchstaben U und CR
gestartet. Auf der 1.Bildzeile rechts
erscheint die Ausschrift
SETZE UHR: -
Ab der Kursorposition sind fortlaufend 4 Ziffern (Stunden und Minuten)
einzugeben. Mit Eingabe der letzten
Stelle läuft die Uhr an. Das Programm kehrt in die
Kommando-Verwaltung des Monitors zurück. Die Uhr arbeitet
jetzt als Hintergrund-Programm. Nach 2 Sekunden erscheint die aktuelle
Uhrzeit in der Form:
+ 09:26 UHR 02 SEC +
Wenn keine unzulässigen Programm-Manipulationen erfolgen,
läuft
die Uhr mit der Genauigkeit des Systemtaktes,
bis schließlich RESET betätigt wird.
Für die Zusammenarbeit mit anderen Programmen
ergeben sich einige Einschränkungen bzw. Grundsätze.:
- Während der Benutzung des Magnetbandes muß die Uhr
abgeschaltet werden, da die Magnetbandprogramme
(S, V, L) ihren Zeittakt mit einfachen Zählschleifen erzeugen.
Andernfalls kommt es zu Synchronisationsfehlern
beim Einlesen bzw. unbrauchbaren Aufnahmen.
- Der durch das Uhrzeit-Programm eingestellte Interrupt-Modus IM 2 darf
nicht verändert werden.
- Der Inhalt des I-Registers (18H) und der Interrupt-Vektor CTC (88H)
dürfen nicht verändert werden.
- Von den freien CTC-Kanälen (0,1,2) generierte Interrupts
müssen als Interrupt-Sprungtabelle den Bereich
1888H...188DH benutzen.
- Das System darf nicht über längere Zeit im Zustand DI
verharren. Bis zum Zustand EI bleibt die Uhr stehen,
die Anzeige fällt aus.
- Da der CTC-Kanal 3 benutzt wird, der innerhalb des CTC die niedrigste
Priorität besitzt, kann durch zusätzliche Interrupts
höherpriorisierter Kanäle ein zusätzlicher Zeitfehler
bei der Uhr entstehen.
- Aus den Zählzellen 1893H: Minuten, 1892H: Sekunden kann für
andere Programme die aktuelle Zeit übernommen werden.
Die Daten stehen dort halbbyteweise im BCD-Kode bereit.
Beim Uhrenprogramm des "AC1" (FUNKAMATEUR, Heft 7/1986, Seite 358/359)
muß es im Hex-Listing in der 12. Zeile v.o. und
in der 7. Spalte v.l. statt "0C" richtig "18" heißen (... 21 93
18 7E ...). Meist ist 0CxxH durch den BASIC-Interpreter
belegt.
Wer den Bildwiederholspeicher verdoppelt hat, muß in der 1. und
11. Zeile v.o. "21 D7 13" in "21 D7 17" ändern,
weil sonst die Uhr in der Bildschirmmitte geschrieben wird.
68 KByte |
Tabelle 1 |