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