ähnlich [63536885a2b7cc2caba3e1fe8c762446]
===============================
= Systemuhr fuer Z 1013 =
= ext. 1s-Takt an PIO-PORT B4 =
= (c) by rehn-soft feb/88 =
===============================
Stellt man am nicht benutzten PIO-PORT B4 einen extern erzeugten
1s-Takt zur Verfuegung (Steckverbinder X2 , Anschluss A3) , so
kann man ohne Nutzung eines CTC-Schaltkreises eine Systemuhr
fuer den Z 1013 erzeugen. Der 1s-Takt sollte stromsparend mit
einem CMOS-Uhren-IC (zB. U 118 F) erzeugt werden. Ebenso laesst
sich die Taktgeberleiterplatte aus einem Quarzwecker verwenden.
Eine entsprechende Programmierung des PIO sogt dafuer, dass aus-
geloest vom 1s-Takt ein gerade laufendes Programm unterbrochen
und die aktuelle Uhrzeit auf dem Bildschirm oben rechts einge-
blendet wird. Danach wird das unterbrochene Programm fortge-
setzt. Bei dieser einfachen Software-Loesung muss fuer SAVE
und LOAD die Uhr durch RESET abgeschaltet werden.
Das gesamte Uhrprogramm besteht aus zwei Teilen:
- UHRD (Darstellung der akt. Uhrzeit)
- INIT (Stellen der Uhr, Initialisieren des PIO)
UHRD weisst keine Besonderheiten auf und soll nicht naeher dar-
gestellt werden. Es kann auf beliebigen Adressen stehen. Die
Startadresse dieses Programms wird fuer INIT benoetigt.
INIT besteht wiederum aus zwei Teilen. Zu Gunsten der PIO-
Programmierung wird hier das Stellen der Uhr nicht erlaeutert.
Das Programm traegt auf 0B0h fuer "@U" einen Sprung zum Stellen
der Uhr ein. Eventuell dort vorhandene Sprungadressen bleiben
erhalten.
Folgende RAM-Zellen werden benutzt:
- 0000: =0...Uhr aufgeblendet, #0...Uhr laeuft verdeckt
- 0008: Sekundenzaehler
- 0009: Minutenzaehler
- 000A: Stundenzaehler
- 0010: NWT der Startadresse von UHRD
_ 0011: HWT der Startadresse von UHRD
Die Interrupt-Programmierung des PIOs sieht etwa wie folgt aus:
1. PIO auf Bit-E/A , Bit 4 auf Eingabe
2. Startadresse von UHRD in 0010/0011 eintragen
3. Laden des Interrupt-Registers der CPU
4. Laden des Interrupt-Vektor-Registers des PIOs
5. Ausgabe des Interrupt-Steuerwortes an den PIO
6. Ausgabe des Interrupt-Maskenwortes an den PIO
7. Freigabe des Interrupts
Die vollstaendige Assembler-Quelle kann beim Autor eingesehen
werden.
INIT ab 3F00H:
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 0E 03 06 02 E7 01 E7
00 D6 30 ED 6F 10 F6 E7 0E 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 '3F57H':
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 E1 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 00 3E 20 32 1E EC 18 C3
Bei Verschiebung auf andere Adressen muss der Inhalt von >--<
auf * * und +--+ auf die Adresse von ' ' zeigen. Wird nur
ein 2s-Takt genutzt, so ist # # auf "02" zu aendern.
SCHWARZENBERG,11.02.88
U. REHN , D. BITTNER
3.6