hallo,bitte helfen:Schreiben Sie ein auf den MVME3600-Rechnern des Realzeitlabors lauffähiges Programm, das ein Zeichen Ihrer Wahl in der
linken, oberen Ecke des Bildschirms ausgibt. Mit den Pfeiltasten der Tastatur soll das Zeichen in jede Position auf dem Schirm
bewegt werden können, außer in die unterste Zeile, die für Statusinformationen reseviert sein soll:
0 xx -1 xx -2 xx -3 xx N dddd Z dd S dd
In den ersten vier Feldern (0, -1, -2, -3) sollen die letzten vier von der Tastatur gelesenen Scancodes als zweistellige Hexadezimalzahlen
ausgegeben werden und im Feld N die Anzahl der seit Aufruf des Programms gelesenen Scancodes als vierstellige
Dezimalzahl. Außerdem sollen ganz rechts die aktuelle Zeile und Spalte als zweistellige Dezimalzahlen ausgegeben werden.
Anleitung
Die Programmentwicklung lässt sich gut in verschiedene Abschnitte aufteilen, die jede für sich recht einfach auf Fehler überprüft
werden kann:
Programmieren Sie zunächst die Ausgabe irgendeines Zeichens auf dem Bildschirm! Zur Erinnerung: der Videospeicher
bendet sich bei 0xfd0b8000, jedes Zeichen wird mit zwei Bytes dargestellt. Mit dem Byte niedrigerer Adresse wird
das Zeichen ausgewählt (ASCII code), mit dem Byte höherer Adresse das Attribut des Zeichens (wie in den Laborübungen
besprochen). Die Zeichen werden fortlaufend, zeilenweise im Videospeicher abgelegt, also das erste Zeichen der ersten
Zeile bei 0xfd0b8000, das zweite Zeichen der ersten Zeile bei 0xfd0b8002 usw. Auf dem Bildschirm können 25
Zeilen mit je 80 Zeichen dargestellt werden.
Auf eine etwaige Tastatureingabe können Sie über zwei Bytes bei den Adressen 0xFE000060 (keyboard data) und
0xFE000064 (keyboard status and ontrol) reagieren. Das Bit niedrigster Signikanz (output buffer full) im keyboard
control Register ist gesetzt, wenn eine Taste gedrückt bzw. losgelassen wurde. Für jede Taste kann dann der entsprechende
Makecode (beim Drücken) bzw. Breakcode (beim Loslassen) aus dem keyboard data Register gelesen werden, wodurch
das output buffer full Bit gelöscht wird. Wird eine Taste längere Zeit gehalten, sendet der keyboard controller die entsprechenden
Makecodes mit einstellbarer Verzögerungszeit undWiederholfrequenz, bis sie losgelassen wird.
Die Makecodes für die Pfeiltasten lauten: '"' - 0x48, '#' - 0x50, ' ' - 0x4b, '!' - 0x4d.