IT-Systeme: Sommer 2009
Vorlesung:
Dienstag, 8:15-9:45, Raum R1.006
Praktika:
Dienstag, 11:45-13:15, Raum R 2.009
Donnerstag, 10:00-11:30, Raum R 3.020
Evaluation:
Die
Ergebnisse der Evaluation dieser Veranstaltung durch die Studierenden.
Klausur:
Eine
Probeklausur IT-Systeme II und
Probeklausur IT-Systeme I ist hier zu finden.
Software:
Neu: Für die Datei
mother.exe steht ein bug-fix update zur Vefügung. Es
gab verschiedentlich (besonders unter Vista) Probleme mit devices, bei denen
die Verbindung zum motherboard bei hohem Datanfluss auf dem Bus abbrach, was
eine Fehlermeldung auslöste. Die neue Version sollte dieses Problem beheben.
Das Zip archiv (siehe unten) enthält ebenfalls die neue Version.
Praktikumsaufgaben:
Die Aufgabenstellung erfolgt gemeinsam mit Frau Prof. Dr. Anlauff.
Die ersten beiden Testate im Sommersemester ist die Fertigstellung der
Praktikumsaufgaben aus dem letzten Wintersemester (siehe
Aufgaben WS08/09).
Für die weiteren Testate nutzen wir in diesem Semester einen
erweiterten MMIX Simulator.
Die nötigen Windows executables sind in folgender zip Datei
GOL.zip zu finden.
Die Quelldateien sind auf
sourceforge verfügbar.
Dort ist auch die
Hompage
für das hier verwendete Virtuelle Motherboard zu finden.
Dort gibt es auch ein
WiKi,
das für Diskussion und Antworten zu diesem Simulator verwendet wird.
Die Aufgaben für die Testate sind wie folgt:
- Portierung des "Game of Life" auf einen MMIX Computer
mit Framebuffer Graphik.
Nutzen Sie den Betriebssytem Aufruf TRAP 0,GPutPixel,0 um
die verschiedenen Personen des Partyspiels durch farbige
Punkte auf dem Graphikdisplay darzustellen.
Das VRAM enthält für jedes Pixel genau ein Tetra
und zwar 64 Tetras für jede der insgesamt 48 Zeilen.
Mit dem Betriebssystem-Aufruf TRAP 0,GPutPixel,0 (mit GputPixel IS #10 )
kann ein Punkt auf dem Grafikdisplay dargestellt werden.
Dabei muss das höherwertige Tetra von $255 die Adresse des
Punktes relativ zum Nullpunkt (links oben) des VRAM enthalten,
das niederwertige Tetra den Farbwert in der RGB-Darstellung.
Portieren Sie ihr vorhandenes Game of Life Programm auf den
neuen Rechner. Vorsicht, dieser Rechner hat kein Terminal
mehr für Textausgabe und kein Keyboard für Eingaben.
Anstelle eines langen Strings, den Sie mit FPuts ausgeben
müssen Sie nun für jede lebendige Zelle ein farbiges Pixel
ausgeben, für die toten Zellen ein schwarzes Pixel.
Für die Warteschleife können Sie den Aufruf TRAP 0,TWait,0
(mit TWait IS #11) verwenden. Dieser Trap wartet bis entweder
der grüne Button gedrückt wird oder der Timer abläuft (Rückgabewert in $255
ist 1) oder bis der schwarze Button gedrückt wird (Rückgabewert 0).
Abgabe: 30.5.2009
- Implementieren Sie den TRAP 0,TWait,0 und die zugehörigen Interrupt Handler
Sie erhalten auch die Datei bios.mms.
Diese Datei enthält bereits fast das gesamte BIOS aber noch
nicht die Interrupt Treiber für Buttons und Timer. Ebenso fehlt
der Handler für TRAP 0,TWait,0.
Diese Teile müssen Sie selbst implementieren.
Mittels mmixal wird dabei die Datei bios.mms in
bios.mmo übersetzt, aus bios.mmo macht dann das
Programm mmoboot.exe ein bios.img.
Ihr eigenes Bios sollte mindestens dieselbe Funktionalität haben wie
der vorgegebene bios.img.
D.h. der TRAP 0,TWait,0 wartet bis eines der folgenden Ereignisse
auftritt:
- Der grüne Button wird gedrückt. Rückgabewert 1.
- Der Timer läuft ab. Rückgabewert 1.
- Der schwarze Button wird gedrückt. Rückgabewert 0.
Die Interrupthandler für den Down- und Up-Interrupt handler
des roten Buttons starten den Timer mit 1000ms als Intervall
und beenden den Timer wieder.
Abgabe: 1.7.2009
Abzugeben ist jeweils ein Ausdruck des MMIX Programms mit den Namen
der Autoren (maximal zwei).
Dokumentation:
Die Spezifikation von TRAP 0,GPutPixel,0 ist wie folgt:
- Der Wert von GPutPixel ist 16 (Hexadezimal #10)
- Parameter werden im Register $255 übergeben.
- Die unteren 24 bit von $255 spezifizieren einen RGB wert.
Zum Beispiel ist #FF0000 = rot, #00FF00 = grün, #0000FF = blau,
#000000 = schwarz, #FFFFFF = weiß und #808080 = mittelgrau.
- Die oberen 32 Bit von $255 spezifizieren den Offset im Framebuffer
an dem der farbwert in den unteren 32 Bit gespeichert wird.
Man beachte, dass im Framebuffer jedes TETRA einem Pixel entspricht.
Der Wert 0 entspricht also dem ersten Pixel rechts oben, der Wert 4
dem Pixel genau rechts daneben.Dann kommt das Pixel mit Offset 8.
- Der Aufruf von GPutPixel speichert den wert in den unteren 32 bit
an der Stelle Basisaddresse des Framebuffers + Wert der oberen 32 Bit.
Der gespeicherte Farbwert wird sofort auf dem Schirm sichtbar.
- Der Rückgabewert in Register $255 ist unspezifiziert.
Die Spezifikation von TRAP 0,TWait,0 ist wie folgt:
- Der Wert von TWait ist 17 (Hexadezimal #11)
- Parameter werden keine übergeben.
- Der Aufruf kehrt erst zurück wenn eines der folgenden
Ereignisse auftritt. Der Rückgabewert ist in Register $255.
- Der grüne Button wird gedrückt. Rückgabewert 1.
- Der Timer läuft ab. Rückgabewert 1.
- Der schwarze Button wird gedrückt. Rückgabewert 0.
Eine Beschreibung aller MMIX Befehle findet sich
in der orginal Beschreibung von D.E.Knuth
mmix-doc.pdf oder im
MMIX Buch.
Orginal MMIX Software (Linux): mmix und mmixal
Orginal MMIX Software (Win32): mmix.exe und mmixal.exe