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:
- uhrd: Uhrzeit-Darstellung
- init: Initialisieren der PIO, Stellen der Uhr
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:
- PIO auf BIT-E/A, BIT 4 auf Eingabe
- Startadresse von uhrd in Adresse 10/11 eintragen
- Laden des Interrupt-Registers der CPU
- Laden des Interrupt-VektorRegisters der PIO
- Ausgabe des Interrupt-Steuerwortes an PIO
- Ausgabe des Interrupt-Maskenwortes an PIO
- 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