000
11.01.2012, 08:12 Uhr
AE
Default Group and Edit
|
Die Tastatur am MC80.3x
Im Zusammenhang mit der Wiederinbetriebnahme von MC80.3x-Rechnern in Merseburg habe ich mich wieder mit diesem Komplex befaßt. Da in der Zwischenzeit alle EPROM-Inhalte zu den CRC-Summen aus der im Forumbeitrag "MC80.3x SW in EPROMs" [005] aufgeführten Tabelle bei mir vorhanden sind, konnte ich diese analysieren:
Zunächst möchte ich die dort getroffene Aussage zu den einzelnen EPROM-Varianten richtigstellen. Zu jedem Typ .30, .31 und .33 gehört genau eine Ausstattung mit Anschlußsteuerung und Kassettenmagnetband-Laufwerk (so wie im aktualisierten Kapitel "MC80" von Robotrontechnik.de angegeben). - Die EPROMs auf der Adresse 0000H unterscheiden sich nur in einem Bit. (Man beachte den Unterschied im CRC: 14EBH zu 4506H !) - Die EPROMs auf der Adresse 0800H sind in allen Varianten gleich. - Die EPROMs auf der Adresse 1000H und 1800H enthalten alle Programmteile zur Arbeit mit dem Kassettenmagnetband-Laufwerk und sind deshalb zur jeweiligen Kombination Ansteuerungsleiterkarte/Laufwerk zugehörig. - Die EPROMs auf der Adresse 2000H sind in allen Varianten gleich. - Die EPROMs auf der Adresse 2400H unterscheiden sich im Auslieferungszustand nur in der Bildschirmausschrift nach INIT. Da in den heute noch vorhanden Rechnern aber meist vom Nutzer programmierte EPROMs folgen, ist wegen der Einbeziehung in die Programmkettung der EPROM auf der Adresse 2400H modifiziert.
Nun zum ominösen Bit im EPROM 0000H. Dieses Bit befindet sich in der Initialisierung der "Tastatur"-SIO und steht für zwei unterschiedliche Datenübertragungsraten zwischen Tastatur und Rechner. Und richtig, meine Nachforschungen zeigten, es gibt zwei Tastaturen für den Anschluß an den MC80.30 und -.31. Äußerlich sind diese nicht zu unterscheiden. Die Leiterkarten tragen die Bezeichnung 50300-3030.01 ÄZ1 bzw. ÄZ3.
In der Tastatur arbeitet ein Einchipmikrorechner U881 mit Bitmuster 004 oder U883. Diese sind hier in der MC80.3x-Tastatur gleichwertig. Nach der Spannungszuschaltung (RESET ohne Spannungserhöhung) werden die Ports 0 und 1 für die Nutzung externen Speichers initialisiert und dann das Programm auf der externen Adresse 080CH angesprungen. Die CRC-Summen der Tastatur-EPROMs U2716 sind ÄZ1 - 0F688H und ÄZ3 - 0BEC0H. Als Adresslatch dient eine CMOS-IS U4034. Bei der gefundenen Variante ÄZ1 ist ein 1,23 MHz-Quarz direkt an den U881 angeschlossen. Beim ÄZ3 hat ein K1520-Systemquarz (9,832 MHz) einen eigenen Oszillator (DL004); über einen Frequenzteiler (DL093) wird der Takt in den U881 eingespeist.
Interessant ist die Schaltungslösung für die Matrix aus hochwertigen TSH-Tastern: Da für den externen Programm-EPROM bereits 12 I/O-Pins gebunden sind und Port 3 für z.B. die serielle Schnittstelle genutzt wird, erfolgt die Aktivierung einer der 12 Matrixzeilen während eines externen Speicherschreib-Befehls über die gemultiplexten 12 Daten-/Adressleitungen des EPROMs (, wobei nur jeweils ein Adressbit aktiv ist). Die 8 Tasten der Zeile werden dabei über Byte-Eingabe mit handshake in Port 2 eingelesen. Die vier oberen Bits von Port 1 steuern über einen Treiber (DL038) die drei LEDs und den "Pieper". Die grüne Bereit-LED (oben rechts der Tastaturmitte) leuchtet also nicht einfach bei anliegender Betriebsspannung sondern wird vom Einchipmikrorechner eingeschaltet und dies zusätzlich mit einen "PIEP" signalisiert (1. Ton). Ein 7805 erzeugt aus der vom Rechnergrundgerät bereitgestellten Spannung (12V) die in der Tastatur benötigten 5V.
Der Prozessor U881 ist über Transistorstufen mit den IFSS-Leitungen verbunden. Da die Verbindung zum MC80.3x-Rechner nur vieradrig (plus Schirm) ausgeführt ist, dienen die Stromversorgungsadern gleichzeitig auch als Rückleiter für die Stromschleifen. Die Belegung der 10-poligen EFS-Buchse an der Tastaturleitung ist: b1 - GND, a2 - +12V, b2 - SD+, b4 - ED-; a1, a3, a4, a5 und b5 - Schirm. Als Übertragungsformat wurden 7 Bit plus ungerades Paritätsbit gewählt. Die Bitrate beträgt für ÄZ3 9600 Bit/s. Da bei der gewählten niedrigen Oszillatorfrequenz von 1,23 Mhz durch veränderte Programmierung nicht die im EPROM 0000H mit CRC 4506H des MC80.30 bzw. -31 gefundene Bitrate 7680 Bit/s erzeugt werden kann, ist zu vermuten, daß es Tastaturen (ÄZ1) mit einem Quarz von 1,00 MHz geben sollte. Für jeden Tastendruck sendet die Tastur an den Rechner zwei Worte a 7 Bit. Zunächst wird ein Statuswort dann der Tastencode (ASCII für darstellbare Zeichen) übertragen.
Im Rechnergrundgerät sind die IFSS-Leitungen vom EFS-Stecker an der linken, unteren Ecke der Vorderseite vieradrig über den Koppelbus auf die ASP-Leiterkarte geführt. Das bedeutet, ohne gesteckte ASP erfolgt keine Spannungsbereitstellung für die Tastatur! Im gesamten Stromversorgungskreis der Tastatur befindet sich keine Sicherung; erst die Elektronik des Schaltnetzteiles wirkt strombegrenzend. Bei einem Kurzschluß in der Tastatur wird also wahrscheinlich ein Leiterzug bzw. ein Verbindungsdrähtchen als Sicherung wirken.
Der Kanal A der ASP-SIO ist über Optokopplerstufen angeschlossen. Die Takterzeugung für Senden und Empfang (zu/von der Tastatur) erfolgt im Kanal 0 des ASP-CTC. Zwischen dem Ausgang des CTC-Kanals 0 und den Takteingängen des SIO-Kanals A sind ein Treibergatter (DL008) und ein 1:2-Taktteiler (DL074) angeordnet. Die Zähleingänge der CTC-Kanäle 0, 1 und 2 sind auch über einen 1:2-Taktteiler (DL074) mit dem Systemtakt des K1520-Busses verbunden.
Die Initialisierung der zur Tastaturbedienung erforderlichen Kanäle des ASP-CTC bzw. der ASP-SIO erfolgt als eine der ersten Betriebssystemaktivitäten nach NETZ EIN oder RESET (d.h. Programmlauf über die Adresse 0000H,) durch ein Programmodul mit dem Kennbyte 03 auf Adresse 0B13H. Dieses Programmstück ruft den Konsolen-IY-Treiber mit der Funktion 00 auf Adresse 0351H auf. Die eigentliche Initialisierungsroutine beginnt dann ab Adresse 03D3H. Der ASP-CTC-Kanal 0 wird initialisiert als Zähler (des 1/2 K1520-Systemtaktes), Interrupt wird verboten, die Zählkonstante ist 4 (EPROM 14EBH) bzw. 5 (EPROM 4506H). Der ASP-CTC-Kanal 3 wird initialisiert als Zeitgeber mit Vorteiler 16 und Zählkonstante 1; der Interruptvektor wird gesetzt aber kein Interrupt zugelassen. Der ASP-SIO-Kanal A wird zurückgesetzt, der Interruptvektor gesetzt, das Übertragungsformat auf 7 Bit plus ungerade Parität programmiert, Sender und Empfänger freigegeben und als letztes nur der Empfängerinterrupt bei jedem empfangenen Wort freigegeben.
Jedes von der ASP-SIO empfangene Zeichen der Tastatur startet so die Interrupt-Serviceroutine ab Adresse 044BH. Diese speichert ein Statuswort auf Adresse 0FB7CH und den Tastencode auf Adresse 0FB45H. Wurde ein Tastencode empfangen wird zusätzlich der Interrupt für ASP-CTC-Kanal 3 freigegeben. Dann wird die Interrupt-Serviceroutine der SIO beendet. Ein von der SIO angezeigter Empfängerfehler wird nicht ausgewertet.
Der ASP-CTC-Kanal 3 startet sofort (Zählkonstante = 1) nach Interruptfreigabe seine Interrupt-Serviceroutine bei Adresse 046FH. Als erstes wird der Interrupt für ASP-CTC-Kanal 3 wieder gesperrt. Dann beginnt die Auswertung des Statuswortes. Zu jedem möglichen Statuswort gehört ein zugeordnetes Bit im Steuerbyte auf Adresse 0FB7FH. Ein gesetztes Bit bewirkt, daß der zugehörige Tastencode durch 1BH [ESC] ersetzt wird. Damit kann z.B. ein ganzer Tastaturbereich ausgeblendet werden. Die Interrupt-Serviceroutine unterscheidet vier Statusworte: - 1CH (Statuswort)/Bit 2=0 (0FB7FH) kennzeichnet einen Tastendruck im "großen" Tastenfeld. Ein rückgesetztes Bit 4 bewirkt für die Buchstaben-Tasten eine Vertauschung von Groß- und Kleinschreibung. - 1DH /Bit 0=0 kennzeichnet einen Tastendruck im rechten numerischen Tastenfeld. - 1EH /Bit 1=0 kennzeichnet einen Druck auf eine Funktionstaste. Hier wird geprüft, ob ab der dem Tastencode zugeordneten Adresse ein Sprungbefehl eingetragen ist (Siehe auch [Systembeschreibung Betriebssystem EGOS 30.1 Teil 1]. Wenn ja, dann wird dieser ausgeführt ansonsten wird der Tastencode in 0C3H geändert. In nachstehender Tabelle sind für jede Funktionstaste die in der Systembeschreibung gewählte Bezeichnung, der von der Tastatur gesendete Tastencode und die Adressen für die zugeordneten Sprungbefehle (aus dem EPROM 14EBH - beginnend oben links) angegeben: 06H - 01H - 0FEE2H ; 05H - 02H - 0FEDFH 04H - 04H - 0FEDCH ; 03H - 08H - 0FED9H 02H - 10H - 0FED6H ; 01H - 20H - 0FED3H 00H - 40H - 0FED0H ; 07H - 00H - 0FEE5H Nach dem INIT-Kommando ist der entsprechende RAM-Bereich FECDH..0FEE7H mit 0FFH beschrieben, d.h. alle Funktonstasten liefern 0C3H. - 1FH /Bit 3=0 kennzeichnet daß vor einem Tastendruck auf dem "großen" Tastenfeld bereits die rote [CTRL]-Taste betätigt und gehalten wurde. Hier wird, anders als in der Systembeschreibung angegeben, Bit 7 des Tastencodes gesetzt. - Ein rückgesetztes Bit 7 (0FB7FH) erzeugt für jeden Tastendruck einen "PIEP". Nach RESET hat das Steuerbyte (0FB7FH) den Wert 90H, d.h. alle Tastenfelder und die "Kontroll"-Funktion sind freigegeben, die Buchstaben-Tasten liefern Großschreibung und es gibt keinen Tasten-"PIEP". Der modifizierte Tastencode wird auf den Adressen 0FB62H und 0FB7DH gespeichert. Danach wird bei rückgesetzten Bit 7 des internen Steuerbytes auf 0FB42H die Interrupt-Serviceroutine beendet.
Auf der nächst höheren Programmierebene wird mittels der Betriebssystem-Routine TST auf Adresse 00BCDH die Tastatur abgefragt. Das eigentliche Programmstück steht ab Adresse 0761H. Hier wird geprüft ob auf der Adresse 0FB7DH ein Tastencode eingetragen ist, wenn ja wird auf diese Adresse 0FFH geschrieben und der Tastencode im Register A (Cy=1, Z=0) übergeben; sonst enthält das Register A 00H (Cy=0, Z=1). Der in der Systembeschreibung angegebene repetierende Tastendruck wird nicht unterschieden. Mit der Routine TST lassen sich weder die Funktionstasten voneinander noch die numerischen von den gleich beschrifteten Tasten des "großen" Tastenfeldes unterscheiden.
Ergänzend sollen hier noch die Tastencodes der Nicht-Zeichentasten angeführt werden: Pfeil nach oben - 0BH CL(ear) - 7FH Pfeil nach unten - 0AH ENTER - 11H Pfeil nach links - 08H OFF - 13H Pfeil nach rechts - 0CH CR/LF - 0DH Tabulator - 09H Die unbeschriftete Taste des numerischen Feldes liefert SPACE - 20H.
Eine Kommando-Ausgabe des Rechnergrundgeräts an die Tastatur zum RESET oder zur Statusmeldung wurde nicht gefunden - schade. Am Ende der Initialisierung des MC80.3x, wenn in der Grundschleife des Betriebssystems eine Kommandoeingabe erwartet wird, wird ein "PIEP"-Befehl an die Tastatur gesendet (2. Ton nach dem Einschalten). Dieser Beitrag wurde am 11.07.2014 um 19:43 Uhr von AE editiert. |