Es geht weiter...
Das Tutorial "Build your OS" kam gerade zur rechten Zeit.
Beim studieren der Quelltexte fiel es mir wie Schuppen aus den Haaren.
Da Rainer gerade am BIOS schraubt, macht es für mich momentan keinen Sinn, das auch zu tun. Daher habe ich mich der Bildansteuerung angenommen. Es ist immer noch oberstes Ziel, eine Geräteunabhängige Ansteuerung zu implementieren.
Daher sehe ich eine Zwischenschicht zwischen BIOS bzw. Applikation und Low-Level-Treiber vor, die den Zugriff auf die einzelnen Bildschirme (VGA, TV, LCD...) vereinheitlicht.
Das ganze lässt sich dann als gerätespezifischer Treiber in das BIOS einbinden, ohne dass Änderungen am BIOS selbst erforderlich werden, wenn man das Ausgabegerät ändert.
Um zu sehen, ob dies prinzipiell funktioniert, habe ich mal einen Prototypen gebaut (Datei screen-vga-treiber.spin).
Er basiert auf den Quellen aus dem Tutorial, wobei ich die Print-Befehle sowie Cursorsteuerung aus den Demo-Sourcen in den Treiber ausgelagert habe. Die Applikation (z.B. Matrix-Bildschirmschoner) wird entsprechend viel übersichtlicher.
Die Cursorsteuerung habe ich etwas gepatcht, so dass die Koordinaten beim Setzen und Abfragen des Cursors übereinstimmen, jeweils beginnend bei Null.
Neu ist, dass vor dem Setzen des Cursors das darunter liegende Zeichen gespeichert wird. Beim Bewegen oder Ausschalten des Cursors wird es wieder hergestellt, so dass kein Bildinhalt zerstört wird.
Der Cursor in der ursprünglichen Version hinterließ jeweils nur Leerzeichen.
Zur Demonstration ist das Matrix-Programm in einer angepassten Version enthalten sowie ein Programm, mit dem man auf den Bildschirm schreiben kann und das die Cursorposition anzeigt. Bei letzterem funtionieren die Cursortasten sowie Home, End, PgUp und PgDown.
Beiliegen die aktuellen Sourcen sowie die Programme
b-matrix.bin und
b-type.bin
Letztere lassen sich mit
"bload b-matrix.bin" oder
"bload b-type.bin" direkt von SD starten.
Viel Spaß beim Testen,
oooooog
