practic 4/88, S. 181-182

Für den Computerfreund

U. Rehn, D. Bittner

Systemuhr für Z 1013 ohne CTC

Eine interne Uhr, die verdeckt oder offen in einer Ecke des Bildschirmes mitläuft, ist für viele Arbeiten am Computer von Nutzen. Es gibt mehrere Möglichkeiten, dies zu realisieren. Eine ist mit dem Einsatz eines Counter/Timer Circuit (CTC, z. B. U 857) verbunden. Für den Bastler meist einfacher zu realisieren ist die Nutzung eines externen Sekundentaktes von einer Quarzuhr oder einer kleinen Zusatzschaltung.

Der externe Sekundentakt wird am Steckverbinder X2, Anschluß A3 angeschlossen. Man kann z. B. die Taktgeberleiterplatte aus einem alten Quarzwecker, eine Armbanduhr mit defekter LCD-Anzeige oder eine selbst aufgebaute Schaltung, nach Möglichkeit mit einem stromsparenden CMOS-UhrenSchaltkreis nutzen. Mit dem nachfolgenden, kleinen Maschinenprogramm wird über die PIO, vom Sekundentakt ausgelöst, ein laufendes Programm unterbrochen und die aktuelle Uhrzeit auf dem Bildschirmeben rechts eingeblendet. Danach wird das Programm fortgesetzt. Bei dieser einfachen Software-Lösung wird durch Save bzw. Load die laufende Zählung der PIO verlangsamt, so daß anschließend die Uhr nachgeht. Deshalb muß sie nach jedem Save/Load neu gestellt werden. Das Uhrprogramm besteht aus zwei Teilen:

Es kann auf beliebigen Adressen stehen. Die Startadresse von „uhrd„ muß allerdings in den Teil „init“ eingetragen werden. Der Teil „init“ besteht ebenfalls aus zwei Teilen: Uhr stellen und Initialisieren. Beim vorliegenden Programm wird auf der Adresse 0B0 für „AU“ ein Sprung zum Stellen der Uhr eingetragen. Eventuell dort vorhandene Sprungadressen bleiben erhalten.

Folgende RAM-Zellen werden benutzt:
00 = 0…Uhr aufgeblendet + 0…Uhr läuft verdeckt
08 Sekundenzähler
09 Minutenzähler
0A Stundenzähler
10 NWT der Startadresse von uhrd
11 HWT der Startadresse von uhrd

Die Interrupt-Programmierung der PIO sieht wie folgt aus:

  1. PIO auf BIT-E/A, BIT 4 auf Eingabe
  2. Startadresse von uhrd in Adresse 10/11 eintragen
  3. Laden des Interrupt-Registers der CPU
  4. Laden des Interrupt-VektorRegisters der PIO
  5. Ausgabe des Interrupt-Steuerwortes an PIO
  6. Ausgabe des Interrupt-Maskenwortes an PIO
  7. Freigabe Interrupt

Bei Verschiebung auf andere Adressen muß der Inhalt von 3F11 und 3F12 die neue Adresse von jetzt 3F16 beinhalten. In jetzt 3F41 muß der NWT und in jetzt 3F42 der HWT der neuen Startadresse von uhrd stehen. (jetzt 3F57).

Wird ein 2-Sekunden-Takt eingespeist, so ist der Inhalt von 3F5F von 01 auf 02 zu ändern.

U. Rehn, D. Bittner

init ab 3F00
21 DC 00 11 DF 00 01 2E
00 ED B8 3E 55 32 B0 00
21 16 3F 22 B1 00 E7 02
61 6B 74 75 65 6C 6C 65
20 5A 65 69 74 BA 21 0A
00 OE 03 06 02 E7 01 E7
00 D6 30 ED 6F 10 F6 E7
OE 2B 0D 20 EE F3 ED 5E
21 57 3F 22 10 00 AF ED
47 3E 10 D3 03 3E 97 D3
03 3E EF D3 03 FB FF

uhrd ab 3F57
                     F5
E5 D5 21 08 00 7E C6 01
27 FE 60 38 01 AF 77 38
20 23 7E C6 01 27 FE 60
38 01 AF 77 38 13 23 7E
C6 01 27 FE 24 38 01 AF
77 38 06 D1 El F1 FB ED
4D 2A 2B 00 E5 ED 5B 1F
00 3A 00 00 B7 20 1A 21
16 EC 22 2B 00 21 0A 00
7E E7 06 E7 02 BA 2B 7E
E7 06 E7 02 BA 2B 7E E7
06 E1 ED 53 1F 00 22 2B
06 3E 20 32 1E EC 18 C3