3.2
Neudefinierung der Tastatur
Im
XL-Computer gibt es eine Tabelle, in der die einzelnen Tasten definiert werden. Das
Betriebssystem besitzt eine eigene Datentafel, welche die normale Belegung angibt.
Der Benutzer kann nun selbst eine solche Definitionstafel erstellen. Er mußdann
nur dem Betriebssystem mitteilen, wo sich letztere im Speicher befindet.
Eine
Anwendungsmöglichkeit für diese Definitionstabelle wäre das Ausprobieren
anderer, vielleicht besserer Tastenanordnungen, wie z.B. die DVORAK-Tastenbelegung.
Ein Beispiel hierfür befindet sich in Anhang A, so daßder Benutzer mit
dieser Möglichkeit experimentieren kann. (Im Laufe der Jahre wurde die OWERTY-Anordnung
der Tastatur als Standard angenommen, obwohl es Leute gibt, die der DVORAK-Belegung
den Vorzug geben. Der Leser kann nun eine eigene Entscheidung fällen.
INHALT
DER TASTATUR-DEFINITIONS-TABELLE
Diese
Tabelle gestattet die Erzeugung jedes beliebigen ATASCII-Codes oder einer internen
Funktion für nahezu jede Taste. Die Ausnahmen werden am Ende dieses Abschnittes
angegeben. Um die Tasten neu zu definieren, mußals erstes ein Speicherbereich
gefunden und festgelegt werden, in dem eine 192 Bytes groFe Tabelle abgelegt werden
kann. In dieser Tabelle werden die neuen Tastendefinitionen vom Benutzer gespeichert.
Danach wird dem Betriebssystem mitgeteilt, wo sich diese Tafel befindet, so daßsie
anstelle der normalen verwendet wird.
Die
Tafel besteht aus folgenden Teilen:
Das
letzte Byte dieser Tabelle liegt an der Adresse KEYTABLE-START + 191.
Der
Grund für die Tabellenaufteilung in 3 Gruppen zu je 64 Bytes liegt in der Hardware,
die insgesamt nur 64 Tastencodes erzeugen kann. Diese von 00-63 (=$00-$3F) nummerierten
Codes werden als direkter Index innerhalb der Tabellenteile benutzt. Welcher dieser
Tafelabschnitte benutzt wird, hängt von Betätigung der SHIFT- oder CTRL-Taste
ab.
Anmerkung:
Es gibt keinen Tafelteil für gleichzeitiges Drücken der SHIFT- und der
CTRL-Taste. Diese Kombination ist unzulässig und wird dementsprechend vom Betriebssystem
ignoriert.
Jeder
der drei 64 Bytes groFen Tabellenteile besitzt die nachfolgend angegebene Form:
Byte
0 enthält die Umwandlung für den Tastencode 00 mit CTRL-, SHIFT-Taste oder
ohne diese beiden. Letzteres hängt vom angewählten Tafelabschnitt ab.
Die
vom Benutzer in der Tabelle platzierten Codes erzeugen entweder einen ATASCII-Code
(für spätere Umsetzung in ein Zeichen oder weisen das System an, eine bestimmte
Funktion auszuführen. Speziell die Codes von $80 bis $92 werden besonders vom
System behandelt. Diese Umsetzung wird in nachfolgender Darstellung angegeben:
CODES
UND IHRE WIRKUNG AUF DAS SYSTEM NACH DER UMSETZUNG
CODE
EFFEKT (sofern vorhanden)
$00..$7F
Werden nur als ATASCII-Code benutzt.
$92..$FF
Werden nur als ATASCII-Code benutzt.
$80
Wird ignoriert; ungültige Tastenkombination.
$8l
Invertiert die Ausgabe auf dem Bildschirm.
$82
Umschaltung zwischen GroF-/Kleinschrift-Rastung.
$83
GroFbuchstaben-Festrastung.
$84
CTRL-Festrastung.
$85
End-of-File (=Dateiende).
$86
ATASCII-Code;
$87
ATASCII-Code.
$89
Ein-/Ausschalten des Tastatur-Klickgeräusches
$8A
Cursor eine Zeile hoch
$8B
Cursor eine Zeile runter
$8C
Cursor eine Spalte nach links
$8D
Cursor eine Spalte nach rechts
$8E
Cursor in obere linke Bildschirmecke
$8F
Cursor an untere linke Bildschirmecke
$90
Cursor an linken Rand
$91
Cursor an rechten Rand
Die
nachstehende Tabelle zeigt den zu einzelnen Codes gehörigen GroFbuchstaben.
Die physikalische Position der einzelnen Tasten innerhalb der Tafel legt den von
ihnen erzeugten Code fest. Um den entsprechenden Code zu erhalten, müssen vom
Leser die jeweiligen Werte der Spalten und Zeilen addiert werden. Das Ergebnis ist
der zum Betriebssystem gelangende Hex-Wert ($00=$3F).
TABELLE
DER TASTENDEFINITIONEN
Ein
Beispiel: Der GroFbuchstabe ìCî befindet sich in der Tabelle in Zeile
10 und Spalte 2. Die Hardware erzeugt also einen Hardware-Code mit dem Wert $10 +
$2 = $l2. Der ATASCII-Code dieses Zeichens wird in der Definitionstafel für
die Tasten an Stelle $12 gespeichert, wobei dieses für alle möglichen Eingabearten
des ìCî gilt (C-Taste allein, mit SHIFT oder mit CTRL gedrückt).
Der Benutzer kann nun das Durchführen einer Funktion bzw. die Ausgabe eines
bestimmten ATASCII-Codes veranlassen, indem der Inhalt der Definitionstafel an Stelle
$l2 geändert wird.
Nachdem
die neue Definitionstafel erstellt und im Speicher untergebracht wurde, mußder
Benutzer dem Betriebssystem mitteilen, wo diese sich befindet. Dies geschieht durch
Speichern der Adresse des Tabellenbeginns an den Stellen $79 und $7A. Das OS benutzt
dann die neue Tafel zur Umwandlung der Tasteneingaben.
Das
niederwertige Byte der Definitionstabellen-Adresse mußin die Speicherstelle
$79, das höherwertige Byte in Stelle $7A geschrieben werden. Diese beiden Speicherstellen
sind zusammen einer der verschiedenen Systemvektoren des Computers. Er wird beim
Einschalten des Gerätes und beim SYSTEM-RESET so zurückgesetzt, daßer
auf die Tabelle mit der Original-Definition zeigt.
NICHT
NEUDEFINIERBARE TASTEN UND TASTENKOMBINATIONEN
Die
folgenden Tasten bzw. Tastenkombinationen sind auf eine spezielle Weise verdrahtet
oder werden auf eine besondere Art vom Betriebssystem behandelt und können daher
nicht neu definiert werden.
Obwohl
ein hardwaremäFig erzeugter Code und ein entsprechender Freiraum in der Umsetzungstafel
existiert, ist es nicht möglich, diese Tasten neu zu definieren. Das Operating-System
ìfängtî den Hardware-Code dieser Eingabe direkt ab, damit eine
spezielle Funktion immer ausgeführt werden kann und nicht zum Umsetzungsmodus
gesprungen werden muF. Die folgenden Tasten sind von der Neudefinition ausgenommen:
BREAK
Diese
Funktion wird gesondert durch das Betriebssystem bearbeitet. Sie wird durch die Hardware
erkannt.
SHIFT
Diese
Taste ist ein Bestandteil der hardwaremäFigen Codierung aller Tastenbetätigungen.
CTRL
Für
diese Taste gilt das Gleiche, wie für die SHIFT-Taste.
OPTION,
SELECT, START
Diese
drei Tasten sind direkt mit den GTIA-Schaltkreisen verbunden und werden deshalb auch
direkt von diesen erkannt.
RESET
Ist
direkt mit der RESET-Leitung des 6502-Prozessors verbunden.
HELP
Diese
Funktion ist im Betriebssystem festgelegt. Die Bearbeitung der HELP-Funktion wird
an anderer Stelle diesem Manual behandelt.
CTRL-1
Diese
Taste stoppt und startet die Bildschirmausgabe.
Sie kontrolliert die Stop/Start-Funktion beim Listen (ìLISTî
in BASIC) und wird vom Betriebssystem
beim Decodieren der hardwaremäFigen
Tasten-Codes ìabgefangenî.