LED-Anzeige für QEMU
Arbeitsweise
- Editierung von einem im Internet verfügbaren Bootloader aus einem
Hobby-Disketten-C++-Betriebssystem
- Einführen eines am Bus hörenden und sprechenden Geräts in QEMU
- MASM-Code -> NASM-Code (mit der richtigen Adresse, um vom Bootloader geladen
zu werden und der Umschreibung der Parallelport-Aufrufe auf Buszugriffe und
Korrigieren vieler kleiner Dinge, die dazu nötig sind)
- Assemblieren des NASM-Codes.
- Starten der QEMU-Simulation mit dem neuen Bus-Device und dem assemblierten
Diskettenimage
Es sei noch darauf hingewiesen, dass der masm2nasm-Konverter zwar eine Teilmenge
der MASM-Syntax und insbesondere nur eine Teilmenge der MASM-Macro-Syntax
umwandeln kann, aber für den speziellen Fall des Universitätspraktikums
funktioniert.
Installation
- Hinweis: es sollten die üblichen Compiler und nasm und awk und sed und
unix2dos und iconv installiert sein, was meistens komfortabel über den
Paketmanager des Systems geht.
- Ein Verzeichnis erstellen (oder im home-Verzeichnis bleiben) und eine Konsole
bei diesem Verzeichnis starten.
- Folgendes eintippen:
wget jbechtel.de/site/qemu/LED-Matrix/install.sh; . install.sh
(dauert 5-15 Minuten)
cd einzelpunkt
make run
(Ist QEMU einmal heruntergeladen und installiert, kann man direkt in das
Verzeichnis compile/einzelpunkt gehen und mit make run
simulieren.)
Das dann laufende QEMU öffnet ein Fenster und zeigt eine simulierte LED-Matrix
an. Wenn man auf 'i' eintippt, dann wird ein Interrupt zu dem einzelpunkt-Code
geleitet und der Punkt verschwindet. 'q' beendet das Fenster, aber man muss noch
in der Konsole 'Ctrl-a x' eintippen, damit QEMU (nicht über den vielen
ausgegebenen Text wundern) beendet wird.
Was macht die Installation?
- Eine modifizierte Fassung von QEMU (qemu.tgz) herunterladen.
- Das Beispiel-MASM-Programm mitsamt einem einfachen MASM2NASM-Konverter
herunterladen. (einzelpunkt.tgz, kann längst nicht alle
MASM-Fähigkeiten abbilden und geht davon aus, das der Quelltext für ein
DOS-Programm und für diese LED-Matrix geschrieben wurde, und erzeugt daraus
einen bootfähigen Code.)
- QEMU kompilieren