Was geschieht eigentlich, wenn eine Taste betätigt wird, die dann auf dem Bildschirm dargestellt wird?
- Beim Betätigen einer Taste schickt der Tastatur-Controller die Nummer der betätigten Taste sowie deren Status zur CPU.
- Hier werden nun diese beiden Informationen als Index in eine Zeichentabelle verwendet und der entsprechende Wert ermittelt.
- Dieser Wert wird seinerseits als Index in die Zeichenmatrix verwendet.
- Es wird nun der Platz auf dem Bildschirm ermittelt und die acht Bytes aus der Zeichenmatrix an diese Stelle kopiert.
|
Möglichkeiten zum Eingriff.
- Der Tastatur-Code lässt sich mit einer XBIOS-Funktion ermitteln (
KM KT GET - 00DAh ).
- Die Umsetzungstabellen sind abhängig von der OS-Version.
- Die Zeichenmatrix hat eine feste Adresse (
B800h ).
- Die Bildschirmadresse lässt sich über das ROLLER-RAM ermitteln (Aus
B600h ).
|
Praktische Beispiele2.
Auslesen der Tastatur.
Ich hatte mir die Aufgabe gestellt, bei einem Editor, den ich schreiben wollte, eine Abfrage der Tastatur auf XBIOS-Ebene vorzunehmen.
Hätte ich eine Funktionstaste (z.B. STOP, AUSBL) betätigt, so wäre eine entsprechende Service-Routine aufgerufen worden.
Im anderen Fall sollte aus der Taste das aktuelle ASCII-Zeichen ermittelt werden.
Hier findet sich ein Z80-Testprogramm, das bei Betätigung einer Taste eine Menge Infos ausgibt.
Speichern der Tastaturbelegung.
Ein Programm, das die komplette Belegung der Tastatur in eine Datei schreibt.
Das Programm versucht, durch die Version des Betriebssystems die Adresse für die Zeichentabelle zu ermitteln.
Hier findet sich das Programm.
Einblicke in das Roller-RAM.
Der Bildschirm des Joyce ist bekanntlich optimal für eine Textausgabe ausgelegt.
Die einzelnen Zeilen werden im sog. Roller-RAM verwaltet.
Zur Berechnung der realen Video-Adressen habe ich zwei unterschiedliche Methoden gefunden.
Hier findet sich das Programm, das zeigt, dass beide Methoden richtig sind.
Zeichen aus Matrix ermitteln.
Es kommt vor, dass man wissen möchte, welches Zeichen an einer bestimmten Stelle im Video-Speicher abgelegt ist.
Der Joyce speichert die Zeichen als Matrix, so dass ein Programm zum Erkennen dieser Matrix benötigt wird.
Hier findet sich das Programm, das aus der Matrix das reine ASCII-Zeichen (' ' bis '~' ) ermittelt, wobei auch die Attribute (invers, unterstrichen) berücksichtigt werden.
|
|