*** Diese Seite ist noch im Aufbau. *** Dipl.-Ing. R. Brosig, Informatikzentrum Dresden Mikroprozessortechnik Heft 7/88 S.215-218
In zahlloser Folge sind in letzter Zeit Tastaturvarianten für den Mikrorechner Z1013 in der Literatur vorgestellt worden. Dies ist eine logische Folge, denn die originale Flachfolientastatur steht außerhalb jeder Diskussion. Man kann die vorgestellten Lösungen grob in vier Gruppen einteilen:
Alle vier Gruppen haben ihre speziellen Vor- und Nachteile. Es kann festgestellt werden, daß es keine ideale Lösung für alle Nutzer gibt, sondern, daß alle vier Gruppen ihren speziellen Nutzerkreis haben. Die erste Gruppe von Tastaturen wird z.B. besonders die Nutzer interessieren, die noch wenig mit der Computermaterie vertraut sind, da nur allgemeine elektronische Kenntnisse notwendig sind. Für fortgeschrittene Nutzer soll folgender Tastaturvorschlag gedacht sein, der sich in die vierte Gruppe einordnet, für die es bisher wenige Veröffentlichungen gab.
Es wird eine K 7659*) mit einer speziellen Hardwareanpassung verwendet, die an den gleichen Hardwareschnittstellen wie die Original-Tastatur betrieben wird. Dadurch gibt es wenig Probleme bei Software, die direkt auf die Originalmatrix zugreift. Die Tastaturabfrage erfolgt durch ein neues komfortables Programm, welches verständlicherweise länger als das originale ist und deshalb außerhalb des 2K-Monitors generiert wird (ab F800H). Um Softwarekompatibilität zu sichern, wurde am Anfang der originalen Tastaturroutine ein Sprung zum externen Tastaturprogramm eingetragen. Um diesen Sprung einzutragen, ist es erforderlich, den originalen Monitor zu ändern. Auf den durch den Wegfall der Originalroutine frei gewordenen Speicherplatz im Monitor wurden kleine Hilfsroutinen, wie die Ausgabe auf einen Port (O) und die Anzeige des Kommandoverteilers auf 00B0h (Z), gelegt. Weiterhin befindet sich dort eine NMI-Unterbrechungsroutine, wo, mit Hilfe einer NMI-Taste, ein Maschinenprogramm mit Registeranzeige abgebrochen werden kann, was sich bisher als eine außerordentliche Hilfe bei der Testung von Assemblerprogrammen erwiesen hat. Zur Änderung des Monitor-EPROMs muß nicht unbedingt ein Eingriff auf der originale Leiterkarte erfolgen, was evtl. Garantieansprüche löschen könnte. Es besteht die Möglichkeit, den Z1013 im Originalzustand zu belassen und den geänderten Monitor-EPROM von außen zuzuschalten (MEMDI-Steuerung). Einfacher ist es aber, den originalen Monitor-EPROM auszulöten und durch einen anderen EPROM mit Fassung zu ersetzen. Derzeitig wird für Monitor und Tastatur ein 2732 benutzt. Auf diesem EPROM befinden sich weiterhin das Headersave sowie ein Sprungverteiler für Peripherie-Schnittstellen.
Die zusätzliche Hardware beschränkt sich auf einen
1-aus-16-Decoder, die Statussteuerung und einen 8-auf-4-Coder. Zur Anzeige
von Shift-lock und Hardcopy werden zwei Anzeige-Flip-Flops verwendet.
Damit 12 Spalten abgefragt werden können, muss die 4-bit
Spalteninformation neu decodiert werden, da der originale Spaltendecoder
nur bis 10 decodiert. Dazu ist es erforderlich, daß die
4-bit-Spalteninformation vom Spaltenlatch A47 über die vier freien
Kontakte auf dem Lötkamm des Tastaturanschlusses geführt wird. Sollten
auch diese vier Drähte zu viel Änderung auf der Platine darstellen, so
kann der Spaltenlatch auch extern über den Systemstecker neu ausdecodiert
werden. Die verbleibenden vier Digits vom 1-aus-16-Decoder werden für die
Ansteuerung der Flip-Flops, der Statussteuerung und des Tastenbeeps
(generatorloser Piezoschwinger o.ä.) genutzt. Die Ausgänge des Decoders
steuern die Spaltenleitungen der Tastaturmatrix, die über Dioden
entkoppelt sind. Diese Entkopplung ist notwendig, um bei der Betätigung
von zwei Tasten (SHIFT, CTRL) keine Spalten kurzzuschließen. Die
Zeilenausgänge werden durch einen Coder auf einen negierten binären Code
gewandelt, um wieder die originalen 4-bit-Zeileneingangsleitungen zu
erhalten. Deshalb sind prinzipiell Direktzugriffe auf die Matrix möglich,
die allerdings nicht die gleiche Tastenbelegung wie die Original-Tastatur
aufweist (Korrespondenztabelle benutzen). An dieser Stelle soll auch
darauf hingewiesen werden, daß solche unnötigen Praktiken, direkt auf
die Matrix zuzugreifen, immer zu Softwareinkompatibilitäten führen und
deshalb zu vermeiden sind. Das verwendete Abfrageprinzip weist eine
Besonderheit auf, die in einer Statussteuerung liegt. Diese
Statussteuerung hat die Aufgabe, alle Spalten der Tastatur aktiv zu
schalten, um einerseits eine schnelle Tastaturabfrage zu realisieren (der
Rechner muß nicht ständig die Spaltenleitungen abfragen) und
andererseits die Interruptfähigkeit zu ermöglichen (wird momentan nicht
ausgenutzt). Die Abfrage der Tastatur bei unbetätigten Tasten wird durch
die Statussteuerung etwa 100 mal schneller als die originale. Dieser
Zeitvorteil hat aber nicht nur positive Seiten. Programme, die die
Abarbeitungszeit für bestimmte Zwecke ausnutzen, laufen dadurch zu
schnell (z.B. blinkender Cursor). Deshalb kann per Tastendruck für solche
Anwendungen eine zusätzliche Zeitschleife eingeschaltet werden. Die
Funktion der Statussteuerung wird mittels LED angezeigt, die damit die
Bereitschaft einer Dateneingabe über die Tastatur signalisiert. Die
schaltungstechnische Realisierung kann mit verschiedenen Mitteln erfolgen.
Die einfachste Möglichkeit besteht in der Decodierung mit einem 74154,
der Codierung mit 2 DL021 und einem DL074 für die Anzeige. Somit kann die
gesamte Hardware auf 4 IC's beschränkt bleiben. Um aber das arg
strapazierten Netzteil des Z1013 nicht noch mehr zu belasten, wurde eine
etwas aufwendigere CMOS-Schaltung entwickelt, die dazu noch die höhere
Sicherheit gegen unerwünschte Übergangswiderstände aufweist. Die Spalte
7 (SHIFT, CTRL) wird durch die Statussteuerung nicht aktiviert (Fehlen
einer Diode), damit beim alleinigen Drücken von SHIFT oder CTRL der
Tastaturstatus nicht verändert wird. Diese Spalte wird erst nach
Erkennung einer anderen Taste abgefragt, um die SHIFT-Ebene umzuschalten
bzw. eine Control-Maske (1FH) aufzulegen. Die geringe Anzahl zur
Verfügung stehender zusätzlicher Steuerleitungen macht es erforderlich,
für die Anzeige der Funktionen SHIFT-LOCK und Hardcopy zusätzliche
Flip-Flops mit einer gemeinsamen Resetleitung zu verwenden. Bei jeder
Neubelegung eines Flip-Flops werden deshalb durch den Rechner immer beide
Flip-Flops neu gesetzt. An der Resetleitung ist ebenfalls der Tastenklick
angeschlossen, wodurch die Flip-Flops auch nach der Ausgabe des Tones neu
gesetzt werden müssen. Der Tastenklick wird softwaremäßig erzeugt, und
ist durch Tastendruck ein- und ausschaltbar. Für die CMOS-Version wurde
eine Leiterplatte entwickelt und digitalisiert, die von der Größe her
dem Raum zwischen dem Haupttastenfeld und den rechten Funktionstasten
angepasst wurde. Damit muß die Leiterplatte nicht unterhalb der Tastatur
montiert werden, und es ergibt sich eine sehr flache moderne Bauform für
das Tastaturgehäuse. Das moderne Äußere wird auch durch das nur
10-adrige dünne Kabel von der Tastatur zum Rechner unterstützt, für das
10-adrige flexible Telefon-Leitung verwendet wurde.
Für die Tastaturabfrage wurde ein neues
Abfrageprogramm entwickelt, welches der verwendeten Hardware angepaßt
ist. Es hat mit Tabellen eine Länge von einem 3/4 K und kann deshalb
nicht den originalen Standort beziehen. Durch den auf der
Originalaufrufadresse (F130H) eingetragenen Sprung zum neuen Standort
(F800H) wird die Software-Kompatibilität zum Originalmonitor erreicht. Es
muß aber eingeschränkt werden, daß Programme, die in die originale
Tastaturroutine hineinspringen (eine laienhafte Unsitte), nicht mehr
fehlerfrei laufen. Bei der Realisierung des Programms wurde ein in jeder
Hinsicht offenes Prinzip verwendet. Das heißt, daß der Nutzer in der
Lage ist, sich die Tastatur nach eigenen Wünschen zusammenzustellen. Bis
auf zwei Tasten (SHIFT, CTRL) sind alle Tasten neu belegbar. Weiterhin
kann auch wahlweise ein String auf beliebige Tasten gelegt werden. Wenn
dafür keine besonderen Tasten verwendet werden sollen, können Strings
auch durch gemeinsames Drücken von SHIFT und CTRL sowie einer dritten
Zeichentaste erzeugt werden. Der Tastaturtreiber erzeugt dazu intern einen
Grafikcode (>80H), mit dem ein mit diesem Zeichen versehener String in
einem Stringfeld gesucht und ausgegeben wird. Sollte kein String mit
diesem Kennzeichen existieren, wird dieses interne Grafikzeichen
ausgegeben. Die Ausgabe von Grafikzeichen im Grafikmode wird dadurch nicht
beeinflusst. Für die einzelnen Felder (Stringfeld, Tastencodefeld,
Funktionstastenfeld und Funktionstastenadressfeld) gibt es ein
Pointerfeld, welches auf dem ehemaligen Tastencodefeld ab 003BH angelegt
wurde. Damit ist es dem Anwender möglich, sich durch das Verändern
dieser Pointer an beliebiger Stelle im RAM ein neues Feld aufzubauen.
Diese Möglichkeit hat besonders für das Stringfeld große Bedeutung, da
man dadurch in der Lage ist, Strings für verschiedene Anwendungen zu
laden (z.B. BASIC-Schlüsselwörter, Assemblermnemonik, Brieffloskeln
u.ä.). Durch die Möglichkeit, auch die anderen Felder neu
zusammenzustellen, kann auch dem Problem begegnet werden, daß z.B.
Programme verschiedene Tastencodes für gleiche Steuerfunktionen benutzen.
Das Pointerfeld wird durch den Monitor beim ersten Reset auf die
Standardwerte gestellt (nochmaliges Reset wird am C3H auf Adr. 0066H
erkannt), womit gesichert ist, daß bei jedem weiteren Reset ein evtl.
geändertes Pointerfeld erhalten bleibt. Das hat aber die Konsequenz, daß
ein Programmabsturz auch dieses Pointerfeld ungewollt zerstören kann und
der Rechner trotz Reset nicht mehr bedienbar ist. Dann hilft nur noch
Ausschalten des Rechners! Ändert man folgende vier Zellen, so kann
erreicht werden, dass die Neuinitialisierung bei jedem Reset erfolgt.
Man sollte dann aber auch darauf achten, daß aus
Programmen nicht mit Reset oder Sprung zu F000H herausgegangen wird,
sondern mit der Monitorrückkehrtaste (RST 38H). Ansonsten muß die
Pointerinitialisierung neu erfolgen. Für die einzelnen Modes der Tastatur
(Grafik, Shift-Lock, Hardcopy, Stringmode, Beep, Slow/Fast) existieren
Flags, die in der Systemzelle 0027H stehen (ehemaliger Schalter
Grafik/Alpha). Ein gesetztes Flag (1) bedeutet darin:
Funktionstasten (erzeugen keinen Code):
Tastenbelegungstabelle erste Shiftebene
2CH B8 ,
Das Pointerfeld befindet sich auf dem Platz des jetzt
nicht mehr benötigten Tastaturcodefeldes und wird vom Monitor
initialisiert. Das originale Tastaturcodefeld beginnt auf Adresse 0035H
und wird durch den Monitorsprung RST 38H unterbrochen. Die ersten drei
Zellen werden für Zählzellen des Druckertreibers genutzt und sind mit 0
initialisiert. Das Pointerfeld beginnt erst hinter dem RST 38H auf 003BH
mit folgendem Aufbau:
Das Stringfeld hat einen sehr einfachen und
codeeffektiven Aufbau. Der auszugebende String beginnt mit dem Namen des
Strings, welcher nur aus einem Grafikzeichen besteht. Es werden solange
Zeichen von diesem String ausgegeben, bis ein neues Grafikzeichen auftritt
oder das Ende des Stringfeldes - gekennzeichnet mit einer 0 - erreicht
ist. Damit ist auch klar, daß sich im String keine Grafikzeichen befinden
dürfen, da diese für die Adressierung der Strings reserviert sind. Die
Strings können eine beliebige Länge haben, und in beliebiger Reihenfolge
angeordnet sein.
Obwohl das direkte Zugreifen auf die Tastaturmatrix von einem Anwenderprogramm aus unnötig und nur in sehr seltenen Fällen gerechtfertigt ist, gibt es eine Vielzahl von Programmen (meist Spielprogramme), die diese "Spectrum-Manieren" anwenden. Um solche Programme ohne Änderung nutzen zu können, soll folgende Korrespondenztabelle dienen:
N ENT
C/B13
Eine der wichtigsten Änderungen ist das Eintragen des Aussprunges aus dem originalen Tastaturprogramm und der veränderten Initialisierung des ehemaligen Tastaturcodefelds. Alles andere könnte original bleiben. Es werden aber weitere Änderungen vorgenommen, die nicht die Softwarekompatibilität verringern. Solche Veränderungen sind:
Da der zusätzliche Speicher mit dem Tastaturprogramm noch nicht ausgelastet ist, wurden auf dem Rest des Speichers das Headersave, das Screencopyprogramm, die Joystickabfrage sowie der Sprungverteiler für die Systemerweiterung fest installiert. Für die Übernahme der Software ist es günstig, die kompletten 4K ab F000H zu übernehmen. Die umfassende Vorstellung des Sprungverteilers würde hier zu weit führen. Deshalb sollen nur die wichtigsten Sprünge beschrieben werden:
Die Sprünge DRINI, DRZEL, DRAKK und ZEIDR sind nicht in den oberen 4K realisiert und sind mit JMP 0E800H, 0E803H, 0E806H und E809H initialisiert, wo man einen Unterverteiler für den verwendeten Druckertreiber installieren kann.
Es wurde eine alternative Tastaturvariante beschrieben, die professionellen Ansprüchen gerecht wird und durch folgende Vorteile gekennzeichnet ist:
Dem gegenüber stehen die Nachteile:
Aufbereitung für das Internet Holger Krull |