Skip to main content.

Navigation:

Ausgabefunktionen und Tastatursteuerung

Ziel

Aufgabe

Testausgaben können die Fehlersuche vereinfachen und bieten eine gute Gelegenheit, sich in eine vorgegebene Entwicklungsumgebung einzuarbeiten. Aus diesem Grund soll unser Übungsbetriebssystem oo-StuBS als erstes solche Ausgabefunktionen erhalten. Die zu implementierenden Ausgabefunktionen sollen ähnlich wie die IO-Streams der C++ Bibliothek verwendet werden können und mit Hilfe der Klassen IO_Port (wird von uns vorgegeben), CGA_Screen, Stringbuffer, O_Stream und CGA_Stream umgesetzt werden. Damit die Ausgabefunktionen auch überall in oo-StuBS verwendet werden können, soll ein globales CGA_Stream Objekt kout erzeugt werden. Um darüber hinaus auch interaktive Anwendungsprogramme zu erlauben, sollt ihr zusätzlich noch die Klasse Keyboard_Controller vervollständigen, die neben Key in der Vorgabe enthalten ist.

Die Funktionsfähigkeit der genannten Klassen soll mit Hilfe eines aussagefähigen Testprogramms gezeigt werden. Zu diesem Zweck soll im Hauptprogramm main() von oo-StuBS das Objekt kout für verschieden formatierte Ausgaben genutzt werden. Für den Test der Tastatureingabe ist ein Keyboard_Controller Objekt zu instanziieren. In einer Schleife können dann Zeichen von der Tastatur abgefragt und mittels kout ausgegeben werden.

Hinweis: In den späteren Aufgaben soll Anwendungs- und Testcode in der Klasse Application (aus der Vorgabe) und nicht in main() implementiert werden. Wer möchte kann dies natürlich auch schon bei der ersten Aufgabe so handhaben.

Implementierung

Die erste Aufgabe besteht im Wesentlichen aus zwei Teilen Ausgabe und Eingabe, wobei der Test der Eingabe ohne eine Ausgabe nicht möglich ist. Die Teilaufgabe Ausgabe kann zudem in drei voneinander unabhängige Teile gegliedert werden, die sehr gut einzeln gelöst und getestet werden können. Daher empfehlen wir euch die folgende Bearbeitungsreihenfolge:

Ausgabe
  1. Umsetzung der Klasse CGA_Screen und Test in einer kleinen Anwendung.
  2. Umsetzung der Klassen Stringbuffer und O_Stream.
  3. Umsetzung der Klasse CGA_Stream und Validierung mit einem kleinen Testprogramm.
Eingabe
  1. Vervollständigung der Klasse Keyboard_Controller und Umsetzung der entgültigen Testanwendung.

Hinweis: Achtet auf eine saubere Verwaltung aller von euch allozierten Puffer. Achtet außerdem darauf, dass Funktionen und Variablen, die modullokal gültig sind, als static gekennzeichnet werden sollten.

Vorgabe

Neben der ersten Vorgabe benötigt ihr für die Lösung der Aufgabe auch die Entwicklungsumgebung, die einige Tools, Assemblerdateien und ein Makefile enthält, mit deren Hilfe ihr euer Betriebssystem übersetzen, testen und auf eine Bootdiskette schreiben könnt.

Hilfestellung