Z1013-Tastatur mit Raffinessen

*** Diese Seite ist noch im Aufbau. ***  

Dipl.-Ing. R. Brosig, Informatikzentrum Dresden

Mikroprozessortechnik Heft 7/88 S.215-218

1. Vorbetrachtung

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:

1.  Verbesserung der Bedienbarkeit durch bessere Schaltelemente
2.  Abfragen einer größeren Matrix (z.B.K7659 -> 8*12) und Umsetzen in die originale 4*8 Matrix (z.B. Prozessorversion von robotron Riesa)
3.  Verzicht auf eine Matrixschnittstelle und Ersatz durch eine parallele oder serielle ASCII-Schnittstelle
4.  Änderung des Monitor-Tastaturprogramms, um eine komfortablere Abfrage mit einer veränderten Matrix zu realisieren

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.

2. Lösungsprinzip der Tastaturvariante

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.

3. Hardware

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.

4. Software

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.

F02AH

02H

 -->

F2h

F02BH 

F2H

 -->

F1h

F02DH

43H

 -->

33h

F030H

0AH

 -->

1Ah

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:

Bit 0 - lange Repeatverzögerung durchlaufen
    1 - Stringmode on
    2 - Grafikmode on
    3 - Hardcopy on
    4 - Shift-Lock (gilt nur für Buchstaben)
    5 - Tastenklick on
    6 - Slow
    7 - Taste war betätigt

Diese Flags werden durch den Tastaturtreiber gesetzt bzw. rückgesetzt. Indem man diese Flags anderweitig setzt oder rücksetzt, kann die Betriebsart der Tastatur von außen manipuliert werden. Bei den Funktionstasten fallen fünf Tasten besonders auf. Mit der Taste F01 lässt sich aus einem beliebigen Anwenderprogramm heraus zum Monitor (RST 38H) zurückkehren, insofern die Tastatur noch abgefragt wird. Dabei wird auch gleichzeitig eine Reinitialisierung des Zusatz-Kommandoverteilers auf B0H durchgeführt, so daß die standardmäßig eingetragenen Kommandos (@L, @S, @D, @I) wieder verfügbar werden. Die Tasten F06, F07, F08 dienen für Direktsprünge aus der Tastaturroutine heraus zu festen Adressen (0100H, 0200H, 0300H), da dort die meisten Programme zu starten sind. Der Stack wird dazu vor der Ausführung des Sprungs neu initialisiert. Eine weitere wichtige Taste ist die Screen-Copy-Taste (F09). Mit ihr ist es möglich, eine Bildschirmkopie auf dem Drucker zu erzeugen (Druckereinbindung über Sprungverteiler DRAKK), ohne das laufende Programm zu unterbrechen. Dabei ist zu beachten, daß während der Bildschirmkopie der Stack des laufenden Programms genutzt wird (Stackbelastung je nach Druckertreiber). Die Tastenentprellung erfolgt positiv und negativ, d.h., damit eine Taste als betätigt erkannt wird, muß mindestens 15 ms (2 MHz) lang ein prellfreies Signal anliegen (positive Entprellung). Das gleiche gilt übertragen für das Loslassen der Taste (negative Entprellung). Dadurch kommt es nicht vor, daß selbst bei sehr schlechten Kontakten eine Fehlfunktion auftritt. Wird eine Taste länger als 0.5 s (2 MHz) betätigt, wird die Repeatfunktion (Echofunktion) bei Zeichentasten aktiviert. Der Normalaustritt aus der Tastaturroutine erfolgt kompatibel zur Originalroutine mit dem Zeichen im Akku und in Zelle 4. Eine "blinde" Tastaturabfrage erfolgt, indem vor dem Aufruf der Routine die Zelle 4 auf 0 gesetzt wird.

4.1. Standard-Tastenbelegung

Funktionstasten (erzeugen keinen Code):
Pos. Code
F01 RST 38H
F06 JMP 100H
F07 JMP 200H
F08 JMP 300H
F09 SCREEN-COPY
F53 GRAFIK ON/OFF
E53  HARDCOPY ON/OFF
D53 SLOW/FAST
C53 BEEP ON/OFF
D00 SHIFT-LOCK ON/OFF
B11 SHIFT (+B99)
C00 CTRL


Steuerzeichentasten (derzeitige Belegung)
Pos. 1.Code 2.Code 1.Funktion  2.Fkt.(m.Shift) 1.CTRL  2.CTRL
A00 0AH 0AH Cursor runter Cursor runter J J
A01 0BH 0BH Cursor hoch Cursor hoch K K
A10 08H 08H Cursor links Cursor links H H
A11 09H 09H Cursor rechts Cursor rechts I I
F14 03H 03H BREAK        BREAK             C C
F02 1BH 1BH ESCAPE ESCAPE    
B13 0DH 0DH ENTER ENTER M M
F05 06H 1EH TAB-DUMMY NL              F  
D95 05H 1CH CRSR ANF.EDIT. Fettdruck-DUMMY E  
B95 01H 1DH CRSR END.EDIT. Norm.druck-DUMMY A  
E14 14H 13H   LIST-D.(HC-BASIC) T S
D13 7FH 02H DEL-MTX  DEL-EDITOR 5.1 B  
F10 15H 0FH RUN-D.(HC-BASIC)   U O
F11 19H 18H C.ANF.-HC-BASIC C.END.-HC-BASIC  Y X
F12 12H 11H INSERT HC-BASIC   R Q
F13 10H 1FH DEL HC-BASIC P  
E95 1CH 1CH Fettdr.DUMMY Fettdr.DUMMY      
F95 1DH 1DH Norm.dr.DUMMY Norm.dr.DUMMY    


Diese Steuerzeichen stehen mit in der Tastenbelegungstabelle und können somit anderen Erfordernissen angepasst werden.

Tastenbelegungstabelle erste Shiftebene

Code Pos. Zeichen
31H E1 1
51H D1 Q
41H C1 A
59H B1 Y
32H E2 2
57H D2 W
53H C2 S
58H B2 X
33H E3 3
45H D3 E
44H C3 D
43H B3 C
34H E4 4
52H D4 R
46H C4 F
56H B4 V
 35H E5 5
54H D5 T
47H C5 G
42H B5 B
36H E6 6
5AH D6 Z
48H C6 H
4EH A6 N
37H E7 7
55H D7 U
4AH C7 J
4DH B7 M
38H  E8  8
49H D8 I
4BH  C8  K

 2CH B8 ,
 39H E9 9
 4FH D9 O
 4CH C9 L
 2EH B9 .
 30H E10 0
 50H D10 P
 5CH C10 \ (Ö)
 2DH B10 -
 7EH E11 ~ (ß)
 5DH D11 ] (Ü)
 5BH C11 [ (Ä)
 3CH E12 <
 2BH D12 +
 23H C12 #
 5EH E00 ^ (CTRL-ZEICHEN)
 40H B0 @ (kommerzielles A)
 3EH E13 >
 0DH B13 ENTER CTRL-M
 0BH A1 Cursor hoch
 8H A10 <--- (Cursor links) CTRL-H
 20H A5 Leertaste (Space)
 0 D0 Shift-CAPS-Tast. ON/OFF
 0AH A0 Cursor runter CTRL-J
 9H A11 ---> (Cursor rechts)
 0 B99,B11 SHIFT
 0 C0 CTRL-TASTE
 7FH D13 DEL (rotes C) DEL
 14H E14 ^T (rotes L)
 0 F01 Monitorrueckkehr
 1BH F02 ESCAPE
 7BH F03 {
 7DH F04 {
 0 F06 JMP 100H
 0 F07 JMP 200H
 0 F08 JMP 300H
 0 F09 CALL Screen-Copy (BS-Druck)
 15H F10 ^U (RUN-BASIC)
 19H F11 ^Y
 12H F12 ^R (INSERT-BASIC)
 10H F13 ^P (DEL-BASIC)
 3H F14 ^C = BREAK-Taste
 6H F05 ^F (TAB-Editor)
 0 F53 GRAFIK ON/OFF
 0 E53 HARDCOPY ON/OFF
 0 D53 SLOW/FAST
 0 C53 BEEP ON/OFF 
 1CH E95 ^\ (schwarz-rot)
 1DH F95 ^] (rot-schwarz) 
 5H D,C95 ^E (Wippe +)
 1H B95 ^A (Wippe -)

Zweite Shiftebene
  
 21H E1 !
 71H D1 q
 61H C1 a
 79H B1 y
 22H E2 "
 77H D2 w
 73H C2 s
 78H B2 x
 40H E3 @
 65H D3 e
 64H C3 d
 63H B3 c
 24H E4 $
 72H D4 r
 66H C4 f
 76H B4 v
 25H E5 %
 74H D5 t
 67H C5 g
 62H B5 b
 26H E6 &
 7AH D6 z
 68H C6 h
 6EH B6 n
 2FH E7 /
 75H D7 u
 6AH C7 j
 6DH B7 m
 28H E8 (
 69H D8 i
 6BH C8 k
 3BH B8 ;
 29H E9 )
 6FH D9 o
 6CH C9 l
 3AH B9 :
 3DH E10 =
 70H D10 p
 7CH C10 | (ö)
 5FH B10 _
 3FH E11 ?
 7DH D11 } (ü)
 7BH C11 { (ä)
 5BH E12 [
 2AH D12 *
 27H C12 '
 7CH E0 |
 5CH B0 \
 5DH E13 ]
 0DH C,B13 ENTERCR
 0BH A01 Cursor hoch
 8H A10 <---
 20H A05 Leertaste (Space)
 0 D00 Sift-CAPS-Tast. ON/OFF
 0AH A00 Cursor runter
 9H A11 --->
 0 B99,B11 SHIFT
 0 C00 CTRL-TASTE
 2H D13 DEL (rotes C)
 13H E14 ^T (rotes L)
 0 F01 Monitor-Rücksprung
 1BH F02 ESCAPE 
 60H F03 neg. Hochkomma
 7EH F04     ~
 0 F06 JMP 100H
 0 F07 JMP 200H
 0 F08 JMP 300H
 0 F09 Screen-Copy (BS-Druck)
 0FH F10 ^O
 18H F11 ^X (Cursor an Zeilenende)
 11H F12 ^Q
 1FH F13
 03 F14 ^C (BREAK-Taste)
 1EH F05 NL (SIF1000)
 0 F53 GRAFIK ON/OFF
 0 E53 HARDCOPY ON/OFF 
 0 D53 SLOW/FAST
 0 C53 BEEP ON/OFF
 1CH E95 (schw.-rot)
 1DH F95 (rot-schw.)
 19H D,C95 ^Y (Wippe +)
 18H B95 ^X (Wippe -)

Den Standort der Tastenbelegungstabelle kann man dem Tastenbelegungsfeldpointer (auf 3BH) entnehmen, der auf die Tastenbelegungstabelle im ROM zeigt (standardmäßig). 

 

4.2. Aufbau des Pointerfeldes

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:

003BH 

-

Tastenbelegungsfeldpointer 

003DH

-

Stringfeldpointer

003FH

-

Pointer auf nächstes auszugebenes Stringzeichen

0041H

-

Länge Funktionstastenpositionsfeld

0043H

-

Funktionstastenpositionsfeldpointer

0045H

-

Funktionstastenadressfeldpointer

 

4.3. Aufbau des Stringfeldes

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.

Sringfeldaufbau:

1.  Grafk-Z. 1.String
2.  erstes Stringz.
    .
    .
    .
n.  letztes Stringz.
n+1 Grfk.Z. 2. String
n+2 erstes Zeichen 2. String
    .
    .
    .
    0     ;Ende des Feldes

Günstig ist es, sich auf Kassette einige Felder vorzubereiten und diese mit einer kleinen Umladeroutine zu versehen, welche das Eintragen des Stringfeldpointers entsprechend des Standortes vornimmt. Somit ist das jeweilige Stringfeld nach einem Autostart sofort nutzbar. Die für die Adressierung der Strings benötigten Grafikzeichen können in der Tastenbelegungstabelle stehen, welche bei Betätigung der entsprechenden Taste wirksam werden, worauf der dazugehörige String ausgegeben wird. Eine einfachere Möglichkeit besteht in der gleichzeitigen Betätigung von SHIFT und CTRL sowie einer Zeichentaste, worauf folgende interne Grafikzeichen erzeugt werden:

SHIFT+CTRL+Zeichentaste
A 81H
B 82H
C 83H
D 84H
E 85H
F 88H
G 87H
H 8BH
I 89H
J 8AH
K 9CH
L 8CH
M 8DH
N 8BH ;DOPPELBEL. ZU H
O 8FH
P 90H
Q 91H
R 92H
S 86H
T 94H
U 95H
V 88H ;DOPPELBEL. ZU F
W 97H
X 86H ;DOPPELBEL. ZU S
Y 99H
Z 9AH
[ 9BH
\ 9EH
] 9DH
0 90H ;DOPPELBEL. ZU P
1 91H ; - " -        Q
2 92H ; - " -        R
3 93H
4 94H ; - " -        T
5 95H ; - " -        U
6 96H
7 97H ; - " -        W
8 98H
9 99H ; - " -        Y

Die Unregelmäßigkeiten zu den korrespondierenden CTRL-Zeichen entstehen beim gleichzeitigen Drücken von SHIFT und CTRL durch das Kurzschließen der Matrixzeile 7 und 8, da diese hardwaremäßig nicht entkoppelt sind. Im EPROM wurde ein Standardstringfeld mit den am häufigsten vorkommenden Basic-Schlüsselwörtern eingerichtet.

4.4. Direktzugriffe auf die Matrix

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:

orig.

neu

Pos.

@

1

E01

A

3

E03

B

5

E05

C

7

E07

D

9

E09

E

B

E11

F

>

E13

G

 

 

H

Q

D01

I

E

D03

J

T

D05

K U D07
O D09
M Ü D11

  N       ENT     C/B13
  O 
  P        Y      B01
  Q        C      B03
  R        B      B05
  S        M      B07
  T        .      B09
  U        <      E12
  V        <-     A10
  W  
 S1        X      B02
 S2        V      B04
 S3        N      B06
 S4        ,      B08
 <-        -      B10
SPACE      @      B00
 ->        ->     A11
ENT       CTRL    C00

Drei Tasten können nicht konvertiert werden, da diese Positionen bei der K 7659 nicht besetzt sind. Die Korrespondenztabelle kann auch dazu benutzt werden, um die Hardware mit dem originalen Tastaturprogramm zu testen.

4.5. Änderungen am Monitorprogramm

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:

-

NMI-Unterbrechung mit Registeranzeige (Init.66H bei Reset)

-

Hardcopyfunktion des Bildschirmtreibers

-

Beschreiben eines IO-Ports vom Monitor aus ("O" ehemals "H")

-

Auflistung der im Zusatzkommandoverteiler stehenden Kommandos ("Z" ehemals "A")

-

Initialisierung des Zusatzkommandoverteilers mit Standardwerten (@L-->Headersave load, @S-->Headersave save, @D-->Druckerreset, @I--> Druckerinitialisierung)

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:

FFF7H 

JMP STAT

übergibt Tastaturstatus im Akku
        A=0     - keine Taste gedrückt
        A=FFH - Taste gedr. (außer SHIFT o. CTRL)

FFF4H 

JMP SARUF

ruft SAVE-Routine des Headersave Parameterübergabe entspr. Beschreibung Headersave

FFF1H

JMP LORUF

Parameterübergabe entspr. Beschreibung Headersave

FFEBH 

JMP DRDEL

setzt den logischen Druckertreiber zurück (Zählzellen für Zeile- und Spaltenposition werden zu 0)

FFE8H 

JMP DRAKK

übergibt den Akkuinhalt an den logischen Druckertreiber

FFE5H 

JMP BSDR

druckt den Inhalt des BWS bis zur Cursorposition und kehrt in das aufrufende Programm zurück

FFDFH 

JMP DRZEL

wie DRAKK, nur daß das Zeichen in Zelle 1BH übergeben wird (vorgesehen, um im Basic mit POKE Zelle und CALL 0FFDFH zu drucken)

FFCDH 

JMP DRINI

Initialisierung des logischen Druckertreibers

FFCAH

JMP ZEIDR

übergibt ein Zeichen im Akku an physischen Druckertreiber

FFBBH 

JMP GETST

Abfrage der Joysticks und Übergabe des Ergebnisses in BC (B-links,C-rechts) mit folgender Bit-Bedeutung (1)
        Bit 0 - links
            1 - rechts
            2 - runter
            3 - hoch
            4 - Aktionstaste
        Z-Flag=1, wenn keine Betätigung vorliegt
        CY-Flag=1, wenn Spielhebel nicht angeschlossen sind

FFB8H 

JMP SOUND

Ausgabe einer vollen Periode auf die Tonbandbuchse, sowie auf Bit 7 vom Systemport. Übergabe der Periodendauer in C mit T=n*33µs+20µs (2MHz)

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.

5. Zusammenfassung

Es wurde eine alternative Tastaturvariante beschrieben, die professionellen Ansprüchen gerecht wird und durch folgende Vorteile gekennzeichnet ist:

-

geringer leistungsarmer Hardwareaufwand

-

zwischen Tastatur und Rechner nur 10-adriges Kabel erforderlich

-

Anzeige der Tastaturmodes durch LED's

-

schaltbarer Tastenklick

- schnelle und sichere Abfrage Interruptfähigkeit
-

nur noch zwei SHIFT-Ebenen

- hohe Softwarekompatibilität
- freie Belegbarkeit der Tasten
- frei programmierbare Stringausgabe mit Quittung
- Repeatfunktion auf allen Zeichentasten
- einfache Monitorrückkehr durch RST 38H-Taste
- direkter UP-Aufruf Screencopy aus der Tastaturroutine heraus
- Direktsprünge zu festen Adressen aus der Tastaturroutine heraus
- es können gegenüber der alten Routine alle Steuerzeichen erzeugt werden
- Abfrage der vollen 8*12 Matrix
- einfache Erweiterung der Tastatur auf 96 Tasten, indem die nicht besetzten Positionen aufgefüllt werden

Dem gegenüber stehen die Nachteile:

- es wird zusätzlicher Adressraum des Hauptspeichers benutzt
- es muss eine Änderung des originalen Monitorprogramms erfolgen
- nur bedingte Kompatibilität bei Direktzugriffen auf die Matrix und bei Sprüngen in die originale Routine hinein


Betrachtet man Vor- und Nachteile, so kann festgestellt werden, daß es sich lohnt, die Nachteile in Kauf zu nehmen, zumal eine Änderung des Monitors nur einmal erfolgen muß.  In jedem  Fall stellt diese Tastatur eine echte Alternative zu der Prozessortastatur von robotron Riesa dar, die in jedem Fall einen höheren Hardwareaufwand erfordert und eine geringere Leistungsfähigkeit besitzt.
-----------------------------------------------

*) ZUSATZ: Es gibt diesen Monitor auch für die Tastatur der elektronischen Schreibmaschine 'S3006', der K7652. Bei der Bestückung der Leiterplatte ist nur darauf zu achten, daß Spalte 10 und 12 nicht belegt, und daß bei der K7659 und K7652 Spalten und Zeilen (A u. B) umgekehrt sind.


Aufbereitung für das Internet Holger Krull
Stand: 26. Juli 2008