=============================== = 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 C9 UHRD ab '3F57H': F5 E5 D5 21 08 00 7E C6 #01# 27 FE 60 38 01 AF 77 38 20 23 FE C6 01 27 FE 60 38 01 AF 77 38 13 2B 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 2A 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 1F 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