O. Matthäi
In vielen 8-Bit-Rechnern ist noch keine Echtzeituhr implementiert. Wir stellen eine vor, die außerdem
Kernstück neben den »Pfennig-IC« 74LS00 und 8205 ist der RTC 62421. Er wird für etwa 10,- DM gehandelt und beinhaltet eine komplette Echtzeituhr (Quarzgenerator, Uhrzeitspeicher mit Sekunden, Minuten, Stunden, Tag, Monat, Jahr, Woche und drei Kontrollregistern. Die insgesamt 16 I/O-Register können gelesen und beschrieben werden.
Der Betrieb der Baugruppe ist an allen 8-Bit-Rechnern möglich. Die hier vorgestellten Anschlüsse und das Maschinenprogramm entsprechen jedoch dem Z1013. Demzufolge wählte ich die I/O-Adressen 70H-7FH Es sind noch folgende Adressen möglich 10H-1FH, 30H-3FH, BoH-BFH, DoH-DFH. Eine Kollision mit anderen Adressen (z.B. der RAM-Floppy-Karte) müssen Sie vermeiden!
Nach dem unkritischen Aufbau stecken Sie das Modul ohne RTC an den Rechnerbus und starten das BASIC-Programm. Nun muß die I/O-LED leuchten. Danach (Betriebsspannung abschalten!) kann der RTC in seine Fassung. Nach erneutem Start des BASIC-Programms können Sie die unten links zu sehende Uhrzeit einstellen und haben, solange Sie das BASIC-Programm laufen lassen, die aktuelle Zeit.
Ein Maschinenprogramm ist besser und universeller einsetzbar. Die hier vorgestellte Version ist nicht optimiert. Sie besteht aus den Teilen INITRTC zur Initialisierung und RTC zur Zeitdarstellung in der rechten oberen Ecke (Bildschirmadresse EC17H-EC1FH). Während der Initialisierung müssen Sie die aktuelle Zeit in der Reihenfolge der Abfrage eingeben. Diese ist vom Schaltkreis vorgegeben und darf nicht verändert werden. Unter dem Betriebssystem SCP2RFxxx kann man diesen Teil z.B. durch BOOT aufrufen.
Das Programm RTC ruft TSTS im Pollingbetrieb auf. Die aktuelle Zeit wird also immer dann angezeigt, wenn bei Bildschirmein- oder -ausgaben, beim Drucken usw. die Tastatur abgefragt wird (INKEY). Also 1…50 mal in der Sekunde.
1 OUT(125),1: Out(127),15 2 CLS: PRINT" TIME ?": PRINT: INPUT"H*10";HZ: INPUT"H*1";HE 3 INPUT"M*10";MZ: INPUT"M*1";ME 10 OUT(112),0: OUT(113),0: OUT(114),ME: OUT(115),MZ: 20 OUT(116),HE: OUT(117),HZ: 30 OUT(125),0 40 OUT(126),4 50 OUT(127),0 60 CLS 70 A=INP(112): B=INP(113) 80 C=INP(114): D=INP(115) 90 E=INP(116): F=INP(117) 100 PRINT AT(30,6);D: PRINT AT(30,8);C PRINT AT(30,12);B: PRINT AT(30,14);A 110 PRINT AT(30,0);F: PRINT AT(30,2)E 120 GOTO 70
700 F5 C5 3E 01 D3 7D 3E 00 387 708 D3 7F E7 02 54 49 4D 45 36A 710 20 3F FF E7 01 D3 75 E7 475 718 01 D3 74 E7 01 D3 73 E7 45D 720 01 D3 72 3E 00 D3 70 D3 39A 728 71 D3 7D 3E 04 D3 7E 3E 392 730 00 D3 7F C1 F1 C9 00 00 3CD
800 C5 D5 E5 0E 70 ED 78 0E 470 808 71 ED 40 0E 72 ED 50 0E 369 810 73 ED 58 0E 74 ED 60 0E 395 818 75 ED 68 C6 30 32 1F EC 3FD 820 78 C6 30 32 1E EC 7A C6 3EA 828 30 32 1C EC 7B C6 30 32 30D 830 1B EC 7C C6 30 32 19 EC 3B0 838 7D C6 30 32 18 EC E1 D1 45B 840 C1 C9 00 00 00 00 00 00 18B
Offset | Name | D3 | D2 | D1 | D0 | Zählweite |
---|---|---|---|---|---|---|
+0 | SECEINER | S8 | S4 | S2 | S1 | 0..9 |
+1 | SECZEHNER | * | S40 | S20 | S10 | 0..5 |
+2 | MINIEINER | M8 | M4 | M2 | M1 | 0..9 |
+3 | MINIZEHNER | * | M40 | M20 | M10 | 0..5 |
+4 | STDEINER | H8 | H4 | H2 | H1 | 0..9 |
+5 | STDZEHNER | * | AM/PM | H20 | H10 | 0..2/0..1 |
+6 | DEINER | D8 | D4 | D2 | D1 | 0..9 |
+7 | DZEHNER | * | * | D20 | D10 | 0..3 |
+8 | MEINER | M8 | M4 | M2 | M1 | 0..9 |
+9 | MZEHNER | * | * | * | M10 | 0..1 |
+A | YEINER | Y8 | Y4 | Y2 | Y1 | 0..9 |
+B | YZEHNER | Y80 | Y40 | Y20 | Y10 | 0..9 |
+C | WEEKDAY | * | W4 | W2 | W1 | 0..6 |
+D | Kontrollregister D | |||||
+E | Kontrollregister E | |||||
+F | Kontrollregister F |