 Ja, schönen guten Morgen. Wir werden jetzt etwas starten mit einer leichten Verzögerung, wie immer liegt es an der Technik, selbstverständlich. Aber ich denke, wir können dann jetzt losgehen. Ja, ich darf Sie herzlich begrüßen zu unserem zweiten Vortrag heute. Es geht heute um die Erlebnisse, die man haben kann, wenn man ein Atari 8-Bit Spiel anfängt zu programmieren im Jahre 2014 und wie man grundsätzlich das machen könnte, wenn man ein solches Vorhaben durchführen möchte. Ich habe mir ein bisschen was für Sie überlegt. Es geht darum, ein Spiel zu machen für einen 8-Bit Computer namens Atari 800XL. Und zum Schluss kommt dann halt eine Deskette raus oder auch ein Spielmodul, dass man direkt in dieses Gerät hineinstecken kann und direkt los spielen kann. Das werde ich heute mit Ihnen machen. Ich werde Ihnen vorstellen, was heute eigentlich geht. Wir werden uns dieses Spiel, die muss Quest angucken. Wir werden schauen, was es für Werkzeuge gibt und was man aber achten muss. Das dreht sich nämlich alles um die Zeit bzw. um die Geschwindigkeit von bestimmten Abläufen und bestimmten Routinen. Wir gucken uns kurz den Hauptprozesse vom Atari an, die Unterbrechungen, also die Interrupts, die man dann verwenden kann, um flüssige Abläufe zu erzeugen. Wir gucken uns an, wie die Grafik am Atari organisiert ist, wie man Musik macht und wie man letztendlich eine Spielwelt definiert. Und zum Schluss stelle ich noch ein paar Quellen vor, wo man Hilfe bekommen kann, wenn man ein solches Vorhaben durchführen möchte. Und bei Fragen, Diskussionen gerne zum Schluss. Wenn Sie zwischendurch Fragen haben, bitte einfach reinrufen, weil wenn die Fragen auftreten, können wir uns am besten gleich an der Stelle auch klären, wo Sie auftreten. Also keine Scheu haben, einfach Hand hoch oder reinrufen, ich die Hand nicht bemerke. Und dann klären wir das. Gut, Ausgangspunkt ist ein Spiel namens Diemus Quest. Das habe ich mal 1993 schon einmal programmiert mit dem damaligen Commodore Amiga 16-Bit-Computer. Das sind die oberen beiden Bilder. Das ist professionell veröffentlicht worden über die Firma Böder. Und dieses Spiel wollte ich jetzt vor zwei Jahren einmal rückportieren auf den wesentlich schwächeren Atari 8.XL-Computer. Also normalerweise macht man ja den umgekehrten Weg. Man macht normalerweise ein sogenanntes Remake. Das heißt, man nimmt sich ein altes Material und führt es in die neuere Zeit. Das kennen wir von Hollywood. Wenn irgendwann ein Film in den 70er, 80er, 90er gut war, dann wird da noch mal gemacht. Das wäre ein Remake. Und wir haben uns den umgekehrten Weg gemacht. Wir haben ein Ausgangsmaterial, das war jetzt zufälligerweise auch einigermaßen alt und haben es auf eine schwächere Plattform umgesetzt. So, jetzt habe ich mich vor zwei Jahren, als ich damit gestartet bin, auf viele Fragen vorbereitet. So was wie, warum machst du das? Was bringt dir das? Hast du keine Arbeit mehr? Hast du viel Zeit? Die Frage hatte ich eine tolle Antwort. Ich habe mir überlegt, ob diese Fragen wurden mir nicht gestellt. Stattdessen hört ich immer so ein Oh, zeig mal. Und wenn ich den Leuten das gezeigt habe, dann habe ich fast immer ein Leuchten in den Augen gesehen. Weil fast jeder hatte damals so ein Homecomputer, ob das jetzt Nathari war oder ein Amiga war oder ein C460, völlig egal. Aber die Leute haben sich dann gerne daran erinnert. Oh, das ist ja toll. Und auf meiner Reise, bei der Programmierung, habe ich auch einige schöne Sachen erlebt, der werden wir gleich noch drauf kommen. So, das Original hatte ich eben schon erwähnt. 93 von der Hildesheimer Softwareschmiede Infernal Bytes. Das waren neben vier Studienkollegen, auch meine Personen. Und es gab damals auch Umsetzung von dem Spiel auf das PC, das lief unter DOS, und für das Philips CDI-Spielgerät. So, das ist nur eine Frage zur Weitgesprung. So, darum geht es. Das ist das Spiel für die Nathari-Version. Ich würde Ihnen hier einmal jetzt kurz einmal demonstrieren, damit Sie sehen, um was es geht. Es geht darum, Sie haben einen kleinen Grundfosch, und dieser Fosch hat von seinen König die Aufgabe bekommen, die Süßigkeiten einzusammeln, um damit er dann die liebreibsende Präzesse in Dori heiraten darf. Und die Aufgabe ist relativ kassisch. Die Rente der Fosch-Rum, man sammelt die Zeit ein. Man sieht zu, dass man sich von den Monstern nicht erwischen lässt. Aber wir haben unendliche Leben, es ist ein riesiges Spiel. Man sieht es hier, ich komme in bestimmte Areale nicht. Nein, weil ich brauche eine Schlüssel. Ich brauche eine Schlüssel, die in Farb kutiert. Ich brauche eine Rühne hier, brauche eine Rühnschlüssel. Für eine rote Tür brauche ich eine roten Schlüssel. Und so weiter. Es gibt verschiedene Stereonimente. Was man da alles machen kann, das werden wir dann nachher noch etwas genauer sehen. So, das ist die Zielplattform. Darauf sollte das Spiel jetzt laufen. Auf einem handelsüblichen Atari 8.XL Computer. Er läuft auch auf allen anderen Atari 8-Bit-Geräten. Also alles, was zwischen 1979 und ungefähr 1990 produziert worden ist von Atari 8-Bit, da läuft das Spiel drauf. So, gucken wir uns kurz an, wie der Atari Grafik machen kann. Der Atari 8-Bit-Computer war ja im Großen und Ganzen zur selben Zeit auf dem Markt wie der Commodore 64, der wahrscheinlich etwas besser bekannt ist. Und der Atari 8-Bit ist ein Nachfolger von der Spielekonsole Atari VCS. Das heißt, sie hat viel von den Mechanismen geerbt. Das heißt, wir haben ein sogenanntes Playfield, das ist der Hintergrund. Und da haben wir in der üblichen Darstellung 160 Punkte in der Waagerechten, also von links nach rechts. Und wir haben 200 Bildpunkte in der Waagerechten. Das heißt, wir haben ein Senkrecht von oben nach unten. Und das Ganze können wir bei Atari darstellen mit fünf verschiedenen Farben, ohne Tricks, fünf verschiedene Farben pro gesamten Bildschirm. Mit ein bisschen Tricks, fünf verschiedene Farben pro einzelner Zeile, die man sehen kann. Und wenn man noch ein bisschen mehr Tricks, dann kriegt man auch mehr als fünf Farben pro Zeile hin. Aber damit muss man auskommen. Ich habe also einen Grund genommen, fünf Farben zur Verfügung. Der drüben hinaus kann der Atari noch von diesem Playfield, etwas unabhängiges, generieren. Das sind die sogenannten Player Missiles. Auf anderen Systemen Sprites genannt. Bei Atari waren die ja zuerst 1979, deswegen gab es den Begriff Sprites noch nicht. Wir haben es Player Missiles genannt, weil das die Aufgabe dieser Hardware-Schaltung beschrieben hat. Das heißt, ich habe vier Spieler, die sind einfarbig für vier Spielfiguren. Und die Aufdose ist ein bisschen ungewöhnlich. Die Aufdose ist acht Pixel breit und so hoch wie der Bildschirm hoch ist. Also theoretisch 256, davon sind nicht alle Pixel am oberen Rand oder am unteren Rand zu sehen. Ich kann, wenn ich mehr Farben für meine Spielfigur habe, möchte ich als eine. Dann kann ich zwei von diesem Playerin zusammenschalten und bekomme dann drei Farben, nämlich die Farbe von einem einen Player, die Farbe von einem anderen Player und eine Mischfarbe, wenn die beiden sich überlappen. Und das ist eine berechnete Mischfarbe von den beiden. Die kann ich also dann nicht frei wählen. Ich kann die beiden Farben von den beiden individuellen Playern wählen, aber ich kann nicht die Mischfarbe wählen. So, zusätzlich habe ich noch vier Geschossen, also vier Missiles, die jantische Auflösung von zwei Pixeln Bildschirm hoch. Da kann man jetzt nicht so viel mit anfangen, aber ist halt für ein Geschoss gedacht. Geschoss braucht nicht viele Pixel. So, das ist die Atari Farberlette. Wir reden vom Jahr 1979 und wir haben 128 verschiedene Farben. Das ist für die damalige Verhältnisse, ist das wahnsinnig viel. Man bedenkt, dass der Commodore Zivin 60 vier Jahre später nur 16 Farben hatte. Da sind 128 schon eine ganze Menge. Und wir sehen, dass die Farben sagen, wir mal komisch angeordnet sind. Heute ist es hier üblich, Farben zu mischen. Nicht mit einem Rotanteil, grünanteil oder blauanteil. So wurde das mit dem Amiga dann beispielsweise auch gemacht. Bei Atari hat man damals einen anderen Weg genommen. Ich habe so genannte benahmte Farben, also 16 Stück von oben, reinmäßig in der Udgesicht, aber oben schwarz. Dann habe ich ein orange-gelb, so was ähnliches wie Rot, ein paar Blautöne, ein paar grün-Töne und so einen Ocker-Ton. Und jede Farbe habe ich in verschiedenen Helligkeitsabstufungen. Und zwar Acht-Helligkeitsabstufungen. Das heißt 16 Farben, mal Acht-Helligkeitsabstufungen, macht 128 Farben. Und die Tatsache, dass wir hier 16 Felder sind, ist einfach daran, immer zwei Felder haben die gleiche Farbe. Das heißt, die zwei sind identisch, die zwei sind identisch, die zwei sind identisch. Weil Atari damals so überliefert, dass die Legende gesagt hat, die könnte man dann eh nicht auseinanderhalten. Deswegen brauchen wir den Fitnessaufwand, um dieses einen Bit dann auch noch farbzugudieren, nicht treiben. Etwas späteren Modellen konnte man die dann in bestimmten Modi auch auswählen. Aber damals nicht. Jetzt schlicht man jetzt erstmal grundsätzlich ein Bild auf dem Monitor. Der gängige Weg ist, das Aussehen der Buchstaben zu verändern. Ich habe hier auf dem Bildschirm 4 Buchstaben, A, B, C, D. So wie der Atari sie definiert hat, so wie man sie auf dem Bildschirm bekommt, wenn man das Gerät einschaltet. Hier ist die Auflösung pro Buchstabe 8 Pixel mal 8 Pixel in einer Farbe. Ich habe hier ein gutes Wählen, der es mir erlaubt 4 Farben zu verwenden. Dafür büß ich dann aber Auflösungspunkte ein. Das heißt, ich habe dann für einen Zeichen nur noch 4 Punkte in der Wahl gerechten. Ich bleibe bei den 8 in der Senkrecht, aber ich habe nur noch 4. Dafür kann ich jedem dieser Punkte eine von 4 Farbregistern zuweisen. In unserem Beispiel haben wir dann um die Spielwelt Elemente hier zu schaffen, die wir haben zusammengenommen. Damit wir dann eine Auflösung hatten von 16 Punkten mal 8 Punkten. Und damit kann man dann das Aussehen dieser Sachen definieren. Also hier ist der Kästchen hier unten sind 4 Buchstaben, quasi einmal um definiert sind. Ich werde den nachher noch zeigen, wie das geht. So, und so könnte das dann aussehen, wenn der Film Matrix gesehen hat. So könnte das 1979 ausgesehen haben. Wir haben ein Bildschirm vor der Buchstaben zahlen und zeichnen. So würde es aussehen, wenn wir den Standard Atari-Font verwenden. Und so sieht es dann aus, wenn wir die Fonds um definieren. So, dass wir also aus den ganz normalen Texte auf dem Bildschirm steht, dann eine Spielwelt generieren können. So, als nächstes schauen wir uns an, wie wir das Fernsehenbild überhaupt aufbauen. Da muss ich jetzt einmal etwas zurückgreifen, wie so ein Fernsehbildschirm überhaupt aufgebaut wird. Wir haben ja im Paarbereich ein sogenanntes Zeilensprungverfahren bei der Bildschirmdarstellung. Das heißt, unser Bildschirm ist unterteilt in 625 Zeilen und davon werden 50 mal pro Sekunde jede zweite dieser Zeil auf den Bildschirm gebracht. Das heißt, in der ersten 25 Sekunde werden die Zeilen 1 Lücke, 3 Lücke, 5 Lücke auf den Bildschirm gebracht. Und in der nächsten Durchlauf werden die Zeilen 2, 4, 6 und so weiter auf den Monitor gebracht. Das Ganze gibt wir dann in 25 alternierenden Halbbildern pro Sekunde. Das heißt, wir haben 50 mal ein neues Bild auf dem Bildschirm, aber da das immer nur die Hälfte ist, haben wir 25 mal ein Bild auf dem Bildschirm. Das ist jetzt so einigermaßen schnell, dass man es in der Regel nicht sieht. Aber bei der Programmierung müssen wir das wissen, weil wir werden uns sehr stark in diesem sogenannten Rasterstrahl ausrichten müssen. Und der Rasterstrahl, der läuft von links oben beginnend über den Fernsehbildschirm, bringt die Phosphor-Schicht zum Leuchten unterschiedlichen Farben, unterschiedlichen Helligkeiten, kommt irgendwann am rechten Seite des Fernsehers an, läuft einmal zurück auf den linke Seite, wird wieder eingeschaltet, fängt wieder an die Phosphor-Schicht, bunt zu machen, kommt am rechten Rand an, wird wieder abgeschaltet oder wieder zurück, bis er rechts unten angekommen ist und dann wird er wieder abgeschaltet und läuft quer diagonal, wieder nach links oben. Die Zeit, die er braucht von rechts nach links, ist relativ kurz. Die Zeit, die er braucht von unten nach oben, ist relativ lang. Dieser gesamte Durchdach spielt sie natürlich innerhalb von einer 25 Sekunde ab. Aber für ein Computer ist das eine relativ lange Zeit. Das bedeutet, wenn wir uns mal die theoretische Fläche angucken, die der Rasterstrahlung laufen könnte, das wäre jetzt hier abgetragen, dann sehen wir das nur ein Teil davon, wie das eigentlich die Computerbild verwendet wird. Das ist das, was wir auf dem Bild schon sehen. Wenn wir den Fernseher vernünftig eingestellt haben, dann ist das auch ziemlich deckungsgleich mit den Kanten des physikalischen Fernsehgerätes. Aber wenn jetzt der Rasterstrahl kommt und zeichnet eine solche Zeile, dann bricht er ja hier ab und kommt hier in der nächsten Zeile wieder rein. Und die Zeit, die verstreicht, die der Rasterstrahl braucht von hier, wieder nach links zu kommen. Das nennt man Wirtike Blank, also die horizontale Austastlücke. In dieser Zeit wird vom Rasterstrahl kein Bild generiert. Genauso wenn wir hier unten sind, die Zeit, die wir brauchen, oben zu laufen, das ist der Wirtike Blank, also die vertikale Austastlücke. Auch in dieser Zeit, die relativ lang ist, wird kein Bild generiert. Aber in der Zeit läuft unser Computer und die CPU trotzdem weiter. Das ist deswegen wichtig, weil ich habe ja gesagt, wir können beim Atari eigentlich nur fünf Farben pro Bildschirm darstellen. Wir möchten aber mehr haben. Und das würde bedeuten, dieser Hintergrund, der hier so ein bisschen verlaufen ist mit verschiedenen Farben, ist eigentlich immer die gleiche Farbe. Das gleiche Farbregister, was verwendet wird, eins von den Fünfen. Aber an diesen Stellen hier wird das Farbregister mit einer anderen Farbe befüllt. Das heißt, es gibt irgendein Punkt, da kommt die CPU und sagt, Liebes Farbregister, dass du den Wert hast für den Hintergrund, wo der Rasterstrahl die Farbevormation herauszieht, um jetzt den Punkt auf den Monitor farbig zu machen, du bekommst es einen neuen Wert. Du enthältst eine neue Farbe. Das heißt, die CPU muss das irgendwann erneut hineinschreiben in dieses Register. Wenn ich das irgendwann mache, dann kann das sein, dass der Umbruch irgendwo auf dem Monitor ist. Das heißt, es würde flackern. Das heißt, man versucht, diese Umstellung zu machen, wenn der Rasterstrahl gerade nicht gezeichnet wird. Sprich außerhalb des sichtbaren Breises. Deswegen muss man als Programmierer wissen, wo ist der Rasterstrahl, um einen Moment abzupassen, wo der Rasterstrahl gerade kein Bild malt, um dann die Farbregister zu verändern. Gut, das soll erstmal reichner als Theorie. Gucken wir es mal die verwendete CPU an. Wir haben im Atari 8-Bit eine 8-Bit Mikroprozessor-CPU von der Firma MOS. Die heißt 6502. recht bekannt, gibt es auch in anderen Geräten. Der C460 hatte eine fast identische CPU drin. Und das hier ist das Schaubild, das symbolische Schaubild, wie die CPU funktioniert. Die CPU ist erschreckend simpel. Sieht zwar kompliziert aus, aber es ist eigentlich sehr, sehr simpel. Ich habe ein sogenanntes Register, da kann ich an die Zahl reinschreiben. 8-Bit reicht von 0 bis 255. Mit dieser Zahl kann ich dann irgendwas machen. Aldiand subtrahieren. Die verarbeitende Einheit, die ich mit dieser Zahl irgendwas macht, die heißt ALU, arithmetisch logische Einheit, so admitted logic unit. Und hier passiert das Rechnen und der Akkumulator nimmt diese Zahl auf. Das ist ein Register, das heißt Akkumulator, weil man dort etwas aggregiert und zusammenfasst. Das heißt, ich habe ein Register, das kann etwas berechnen. Das Ergebnis ist immer eine Zahl zwischen 0 und 255. Und ich habe zwar weitere Register, x und y genannt. Damit kann ich ein bisschen Zahlen hin- und herschieben. Kann ich also als Variable sozusagen begreifen, sich von höheren Programmiersprachen darauf blicken. Ansonsten ist es einfach nur eine Schachtel, wo ich eine Zahl reinpacken kann. Die Schachtel nenne ich x und y und a für Akkumulator. Um die CPU zu vervollständigen, es gibt ein sogenanntes Prozess für ein Statusregister. Da gibt es ein paar sogenannte Flex-Zustandsflaggen. Da merkt sich die CPU, ob bei der Verarbeitung hier bestimmte Verfahren aufgetreten sind beziehungsweise bestimmte Ereignisse aufgetreten sind. Wenn ich zum Beispiel zwei Zahlen subtrahiere, dann kann es sein, dass das Ergebnis 0 ist oder es kann sein, dass das Ergebnis irgendeine andere Zahl ist. Es gibt nur mal mal ein Beispiel rauszugreifen, eine sogenannte Zero-Flagge, ein Zero-Fleck. Das nimmt einen Wert an. Der letzte Operation Null war. Das klingt nicht so spannend, aber man braucht zu was, um Vergleiche anstellen zu können und irgendwelche Bedingungen zu testen. Ich gehe da gar nicht mehr tief, es gibt verschiedene Ereignisse, die hier im Statusregister festgehalten werden, die man später abfragen kann. Wir haben einen Stack-Pointer. Das ist ein Zeiger auf einem Speicherbereich, wenn ich mit meinen Stapeln nicht auskomme und möchte die mal irgendwo kurz hinspeichern, weil ich irgendwas anders machen möchte. Dann kann ich die auf einen sogenannten Stapel liegen. Man kann sich vorstellen, wie so ein Kartenstapel liegt miteinander, die Karte, die ich als letztes draufgepackt habe, sich als erstes wieder runter. Stack. Das werden wir auch dann brauchen, insbesondere, wenn man sich die Interab anguckt. Aber da komme ich gleich drauf. Das ist ein Beraterbereich im Speicher. Der ist nicht in der CDU, hier ist nur der Zeiger drin, wo ich Werte mal kurz zwischenlagern kann. Dann habe ich noch ein Programm-Counter, also ein Programmzeiger. Der enthält die 16-Bit-Zahl von dem nächsten Befehl, der als nächstes abgearbeitet wird im Arbeitsspeicher im Ramm. Die ganzen Register sind angebunden an den Adressbus. 16-Bit, das heißt, ich habe im Ramm 535 bytes, besser bekannt als 64-Kilo-Bytes. Und ich habe oben ein Datenbus, 8-Bit breit. Da liegt die Zahl drauf, die in den Speicher hineingeschrieben werden soll oder aus dem Speicher herausgeholt werden soll. Gucken wir uns mal ein paar einzelne Befehle an. Wir werden jetzt nicht alle durchnehmen, das wäre jetzt ein bisschen zu viel. Wer da Interesse hat, es gibt morgen, glaube ich, einen Vortrag ein Befehl beim 6502 Programm ist grundsätzlich erstmal ein ganz normales byte. Also sprich, eine Zahl von 0 bis 255. Ein sogenannte Opcode. Und diese Befehle gibt es in drei Varianten. Es gibt Befehle, die haben nur ein einziges byte und es gibt Befehle, die haben ein byte und ein Argument als nächstes byte und es gibt Befehle, die haben ein byte und zwei bytes, die darauf werden, als Argument. Ein Beispiel für ein Einbyte Befehl wäre der Befehl RTS. Zahl Hexadezimal 60. Das ist ein Befehl, der nur aus einem byte besteht. Der Zahl Hexadezimal 60. Da weiß die CPU, jetzt soll ich von einer Routine, die vorher angesprungen wurde, einfach zurückspringen. Da brauche ich keinen Argument, das einfach nur die letzte Routine zurücknehmen und zurückspringen. Und da INX hat den Wert Hex i8. INX heißt einfach nur der Inhalt, der mal im Register X steht. Soll um 1 erhöht werden. Das heißt, die Zahl, die drinnen steht, ist jetzt um 1 erhöht. Weil die Zahl vorher 255, ist die Zahl danach 0. Und das Überlauffleck wird gesetzt. Dann haben wir Lade- und Speicherbefehl. Ganz oben LDA Doppelkreuz $FF LDA steht für Load Akkumulator. Das heißt, ich soll einen Wert mir nehmen und ihn in das Akkumulator Register packen. Und welcher Wert das ist, der steht direkt dahinter. Steht da als erstes ein Doppelkreuz, heißt das, jetzt kommt ein direkter Wert. Also die Zahl, die da wirklich steht, die wird genommen und den Akkumulator gepackt, ins Register A. In diesem Fall $FF, das wäre die Zahl 255, die befindet sich der Nachregister A. Am nächsten Beispiel steht LDA $ ohne das Kreuz davor und dann $C000. Dadurch, dass das Doppelkreuz fehlt, heißt das, das ist kein direkter Wert, sondern was jetzt kommt, ist eine Speicheradresse am Arbeitsspeicher. Das heißt, in diesem Fall erledigt das eine Byte, dass wir an der Adresse $C000 im Ramm finden. Wo lädt dieses, in dieser Speicherstelle in den Arbeit, in das Register A. Da gehe ich jetzt nicht weiter ein, aber das ist ungefähr das sind so die Befehle, mit denen man sich dann in seiner Assembler-Programmierung herumschlägt. So. Wie kommt man jetzt wirklich ins Programmieren? Es gäbe die Möglichkeit natürlich, sich den Atari zu nehmen und auf einer auf diesem Gerät laufenden Assembler sein Programm zu schreiben. Hat den Charme, dass es so ist wie früher. Hat den Nachteil, dass es sehr langsam ist und dass man sich den begrenzten Arbeitsspeicher 64 Kilobytes mit dem Quellcode, mit dem kompilierten Programm und mit dem Assembler selber, mit dem Übersetzungsprogramm noch teilen muss. Wir haben jetzt heute die Möglichkeit, so das Kostassembling zu machen. Mit Werkzeugen, die sogar kostenfrei sind. Es gibt hier eine Entwicklungsumgebung die heißt Eclipse. Und damit kann man verschiedene Programme für PC, für Mac schreiben. Und da gibt es ein sogenanntes Plug-in eine Komponente, die da hinein installiert wird. Die nennt sich Wutzen und mit dieser Komponente kann man für Retro-Computer Programme schreiben. Also für Atari, für NES, für C64, für verschiedene Retro-Geräte. Das heißt, ich habe hier unter Windows oder MacOS, habe ich die Möglichkeit mit meinem schönen großen Bildschirm, mit meiner Maus mit Copy und Einfügen Programme zu schreiben. Sehr bequem. Und das würde ich mir gleich mal machen wollen. Ein kleines Beispiel. Ein Hello-Welt-Programm, was ausnahmsweise mal kein Text Hello-Welt ausgibt. Sondern diesen guten Bildschirm hier produziert. Und da gucken wir uns das mal an und ich mache da mal einfach mal eine Demo zu. So, ich starte jetzt mal eine Entwicklungsumgebung Eclipse und suche mir das Demo-Programm raus, was wir gerade hatten. Ich zeig Ihnen mal, was rauskommt. Das ist das Ergebnis von diesen paar Zeilen, die wir da gesehen haben. Nämlich ein Bildschirm voller Farbverläufe. Ich würde Ihnen jetzt noch kurz zeigen, wie das zustande kommt. Das Programm ist ja einigermaßen übersichtlich, wie wir sehen. Das ist das, was als Mensch besser verstehen kann. Das eigentliche Programm ist das, was da in Schwarz und in Blau wird ein bisschen Rot ist. Die erste Zeile, Org Hex 2000 heißt einfach Origin. Das heißt, hier wird mitgeteilt, wo im Rammspeicher soll dieses Programm abgelegt werden. Da haben wir ein Rammspeicher, der geht von 0, von beiden Nummer 0, bis beiden Nummer 65535. Und davon nehmen wir jetzt das Byte, das ist ein Hex-Dizimaler Schreibweise, das Byte 2000 ist. Also irgendwo so in der fast nicht in der Mitte des Speichers, aber irgendwo mitten im Speicher. Das nächste Wasser steht, ist StartDoppelpunkt, das ist ein Label. Das heißt, für Menschen merkbarer Name, für eine Computer ist das eher uninteressant, der Computer braucht Rammadressen. Aber für uns als Menschen ist das immer gut merkbar. StartDoppelpunkt liegt in diesem Fall also bei Hex 2000 im Speicher. So, das der erste Befehl ist LDA Doppelkreuz 0 Das hatten wir eben schon mal kurz angerissen. Ich lade mir den Wert 0, die direkte Zahl 0 in den Akkumulator. Das heißt, in meinem Register A steht jetzt die Zahl 0. Der nächste Befehl SDA Hex 022f Schreib diese Zahl, die ich im Akkuregister habe in den Arbeitsspeicher an die Stelle 022f. Und wenn ich das tue, bewirke ich beim Atari Computer, dass alles abgeschaltet wird, was mit dem A-Zugruf zu tun hat. Das würde jetzt nicht bei anderen Computern funktionieren, weil dort die Speicherstelle 022f eine ganz andere Bedeutung hat. Beim Atari ist das halt ein Befehl, vielleicht kennen einige von Ihnen noch die POC Befehle, die man so unter Basic abgesetzt hat, dass wir quasi die Entsprechung davon. Nächstes Befehlzeile enthält das LabelOOP und ich hole mir wieder eine Zahl in meinen Akkuregister LDA $D40B und hier wird jetzt nicht die Zahl D40B in meinen Akku geladen, sondern der Inhalt, der in der Speicherstelle D40B steht und dort hält der Atari für uns bereit, die Informationen wo der Raster Strahl sich befindet, in welcher Zeile, d.h. da stehen Werte drin, ich vereinfache jetzt mal zwischen 0 und 255, d.h. ich weiß dann also in welcher Zeile wird auf dem Bildschirm gerade gezeichnet, die Zeile, Nummer, das was in den Register steht. Und dann nehme ich mir diese Zahl, die ich im A-Register habe und speichere sie in die Speicherstelle D40A, damit wird die 6502 CPU schlafen gelegt. D.h. egal wo ich mich jetzt gerade befinde wo der Raster Strahl gerade ist die CPU wird jetzt angehalten und es wird gewartet bis der Raster Strahl den rechten Bildschirm Rand erreicht hat. Danach wird die CPU wieder eingeschaltet. D.h. mit dem Befehl SDA $D40A kann ich sicher sein dass der nächste Befehl ausgeführt wird wenn der Raster Strahl gerade am rechten Rand ist. Die nächste Zeile ist die entscheidende SDA $D01A das D01A ist das Farbregister wo die Hintergrundsfarbe drin steht. D.h. hier schreibe ich jetzt die Nummer der ausgegebenen Bildschirmzeile als Farbnummer in das Farbregister rein. Da ich ja und dann jump loop spring ich wieder zu dem Label Loop d.h. ich mache wieder ich bin am rechten Rand ich hole mir die Informationen in welcher Zeile bin ich jetzt leg mich bis zum Ende der Bildschirmzeile schlafen und schreibe diesen Wert ins Farbregister rein das wiederhole ich immer wieder immer wieder d.h. die Hardware-Kurponente die dafür da ist mit dem Bildschirm zu beschreiben was in Hardware gegossen ist also in die Rammspeicherstelle D01A holt sich die Information welche Farbe da drin ist und färbt die nächsten Pixel dieser Farbe auf dem Monitor ein deswegen sehen wir wir haben mal das Ergebnis angucken genau das der Programmkurt wird ausgeführt holt sich die Information wo ist die Rasterzeile springt wartet bis zum rechten Rand setzt das Farbregister und für den nächsten Durchlauf hat der Hintergrund dann eine andere Farbe technisch gesehen ist das alles quasi die Hintergrundsfarbe also mit demselben Farbregister bitte schön bitte einmal nochmal das ist jetzt der Auflösung unseres Monitors geschuldet wenn man auf dem Laptop hier schauen würde dann sieht man das was wir auf dem Monitor sehen nur ein kleiner Teilerschnitt ist aber ansonsten haben sie recht ja so dazu fragen also das war jetzt ein ganz einfaches Beispiel wo man 2 Sachen sieht ja bitte Entschuldigung lasso bei dem die Frage war ob der Wert hier nicht bei D01A Reinschreibe von Bedeutung ist ist er beim Atari in der Tat nicht es geht einfach darum wenn ein Schreibzugriff auf diese eine spezielle Speicherstelle stattfindet dann wird der CPU angehalten es macht überhaupt keinen Unterschied welchen Wert ich reinschreibe Gut, weitere Fragen? Bin schön Also die Frage war ob das irgendwie effizienter geht weil die CPU ja quasi 100% ihre Arbeitsleistung aufbringt um dieses Ergebnis in den Bildschirm zu schreiben also A, die außer gestimmt in diesem Beispiel verbrauchte CPU 100% ihre Arbeitsleistung um das bisschen Farbe auf den Bildschirm zu bringen und ja, es geht effizienter natürlich Sie haben es ja im Spiel eben gesehen viele Farben und es gab trotzdem noch viel Bewegung, viel Animationen und Ton also ja, es geht effizienter Das war jetzt einfach nur ein Beispiel, weil das typische Hallo-Welt-Programm um jetzt einen Text auf den Bildschirm auszugeben ist ein Assembler deutlich umlängen größer das wollte ich Ihnen das sparen Das war jetzt einfach nur ein kleines Beispiel damit Sie einmal sehen können wie so Befehle aufgebaut sind und wie das dann ungefähr aussehen könnte So, dann gucken wir jetzt ein Beispiel an wie man jetzt letztendlich mit diesen Informationen die Spielwelt erzeugt und zwar hatte ich ja vorhin schon kurz gesagt dass man grob gesagt die Buchstaben umdefiniert und dazu gibt es verschiedene Hilfsprogramme, die meisten davon laufen direkt auf den Atari da ich mein Entwicklung aber nicht auf den Atari mache sondern auf dem Windows-System habe ich mir einen eigenen Titel geschrieben und das ist dieser hier ja, die Auflösung ist nicht ganz oben steht nichts Wichtiges mehr können wir ignorieren Man sieht jetzt hier in diesem Bereich von ganz links bis ganz rechts abgetragen die unterschiedlichen Buchstaben die wir haben die alle schon umdefiniert sind mit unserer Spielwelt und mein Editor nimmt sich immer 4 Buchstaben und lässt die dann bemalen das heißt ich habe hier oben 5 Fabrikister die ich auswählen kann einmal die 4 schwarz, blau, grau, gelb und einmal eine ominöse fünfte Farbe die gleiche Bedeutung bekommt so, ich kann mir also mir ein Fabrikister wählen und kann dann damit einzelne Punkte setzen wie ich das gerne hätte und kann damit ein Element meines Spieles zeichnen wenn ich jetzt mehrere davon zeichne unterschiedlichen Darstellungen kann ich damit auch eine kleine Animation erreichen das heißt ich zeichne einfach 3 verschiedene Bilder wo die Grafik gleich unterschiedlich sind und zeig die hintereinander einfach auf dem Bild, wie ein Daumenkino so das dazu und wenn man jetzt genügend von diesem Buchstaben umdefiniert hat dann kann man die sich nehmen und kann daraus jetzt eine Spielwelt erschaffen, das hier ist meine Spielwelt die ist 8 von diesem Atari-Bild schon breit und ich kann jetzt einfach mal anfangen und nehme mir den Dimo stell den irgendwo hin und sage ok, das Abenteuer startet hier und das Ziel letzten Endes ist zu einer Farbe zu kommen dann sage ich mal, das Abenteuer endet hier so wenn ich das jetzt spielen würde wäre das relativ einfach, der Frosch geht zur Farbe die Level ist gelöst das hält sich jetzt vom Spaßfaktor auch in relativ engen Grenzen das heißt man sollte sich überlegen ob man das vielleicht ein bisschen sagen wir mal komplexer gestalten könnte das könnten wir zum Beispiel sagen ich nehme mir hier eine Mauer und sperre die Fahne einfach ab jetzt komme ich nicht zur Fahne hin weil da eine Mauer ist jetzt muss ich mir also überlegen wie kann ich diese Mauer überwinden da gebe es mehrere Möglichkeiten ich könnte zum Beispiel ein Stück dieser Mauer etwas brötlich gestalten das sieht man hier und dann könnte ich dem Frosch vielleicht noch ein paar Steine mit auf den Weg geben damit er dieser Mauer einreißen kann so, das gucken wir uns jetzt einfach mal an ich spiele das jetzt mal geht sofort mal ein Emulator, mal ein Latar-Emulator hoch und dann kann ich jetzt diesen Level wirklich auch gleich test spielen man sieht die Mauer, ich sehe die Fahne aber ich komme hin Nehmen wir den Stein die zweite mit die Mauer eingerissen und kann zur Fahne gehen so, auch das ist jetzt noch relativ übersichtlich und deswegen gibt es natürlich auch viel mehr Spielelemente man könnte es natürlich ein Spielverderber sein und sagen ok das ist ja schon mal ganz nett aber wir machen noch eine zweite Mauer versetzen jetzt mal die Fahne sagen so ganz nebenbei dass er vielleicht nochmal ein paar Süßigkeiten einsammeln soll weil das ja seine eigentliche Aufgabe ist und werden wir mal brutal platzieren mal eine Bombe und ein Zünder irgendwo so, jetzt ist der Level ein bisschen komplexer zur Fahne gelangen reichen, wir sehen hier unten abgetragen viele Spielelemente mit denen man diese Spielwelt aufbauen kann wir haben also Türen in verschiedenen Farben wir haben Schlüssel, die dazu passen müssen in der Farbe wir haben Wasserfelder und wir haben selbstverständlich einen Frosch, den ich schwimmen kann deswegen muss der Frosch sich erst einen Rettungsring besorgen bevor er über Wasser gehen kann wir sehen also biologisch völlig korrektes Vorbild wir haben die Möglichkeit ein steilendes Wasser zu schubsen um Brücken zu bauen wir haben Teleporter, die uns in unterschiedliche Areale bringen wir haben zum Beispiel Richtungsfeile wenn der Frosch da drüber läuft dann muss er in die Richtung gehen, die dieser Pfeil zeigt wir haben Schalter die bestimmte Areale umschalten können also vielleicht einen Weg freischalten und viele Spielelemente mehr wir haben Eisflächen, wo man Spikes haben muss wo er leert auflaufen kann und ähnliches so diese ganzen Spielelemente kann man in unterschiedlichen Kombinationen nehmen sich überlegen und die dann oben in der Spielwelt platzieren und kann ihr dann immer gleich Testspielen wer da dann Interesse haben würde den lade ich sehr gerne ein zum Workshop der heute Nachmittag stattfindet ab 14 Uhr 2. Stock im Signalabor der hätte die Möglichkeit einen solchen Level selber zu gestalten und können dann auch mitnehmen und dann auf den Immulator dann auch spielen also wenn Mark 14 Uhr heute 2. Stock Fahrstuhl ins Signalabor dazu fragen ok die Mauer muss weg genau so das haben wir gemacht als nächstes Thema Musik da wird es für mich besonders spannend weil auf meiner Reise bei der Programmierung dieses Spiels ist mir beim Thema Musik besonders viel passiert und auch das ist etwas was ich vorher nicht erwartet hätte als ich angefangen habe dieses Spiel zu programmieren fangen wir aber erstmal mit der technischen Musik an die Musik wird generiert mit einem sogenannten Raster Trecker Program ein Programm das in die Mod Kategorie fällt wenn das jemand etwas sagt muss man gerade nochmal gucken wo das hier rum da dann sieht man hier der Atari ist fähig 4 Instrumente gleichzeitig zu spielen über einen Umfang von 3,5 Oktaven und jede Spalte symbolisiert ein Instrument ich wähle mir aus welche Note gespielt werden soll welches Instrument spielen soll und bestimmte Effekte die ich noch auswählen kann das Ganze wird hintereinander abgespielt und klingt dann so das was wir heute schon mal gehört haben das ist die Musik die ein Musiker sie dann am Wildschirm, in diesem Fall auch am PC entwerfen kann wir nehmen einfach den Noten und die Instrumentauswahl dort einträgt in die Tabelle und das Ganze so lange macht das ist einigermaßen vernünftig die Instrumente kann man sich selber definieren ich jetzt ein Schlagzeug haben möchte oder eine Geige oder eine Gitarre immer sowas ähnlich ist also so das baut man sein Programm dann einfach ein als Abspielroutine und ist dann auch schon glücklich das ist also relativ einfach so kommen wir zum Alegdotenteil als ich angefangen habe dieses Spiel zu programmieren bin ich auf einem Konzert gewesen von einem Musiker den ich sehr schätze Joachim Witt und auf seinem Konzert gab es eine Vorgruppe die heißt leicht Matrose und diese Vorgruppe ist mir deswegen aufgefallen weil in dem damals aktuellen Video habe ich es nicht dabei schade lief der Gitarist mit einem Atari Bildschirm rum mit einem Atari T-Shirt rum und da sowas habe ich immer ein Reflex wie ich das bei Facebook sehe da schreibe ich drunter geiles T-Shirt so es kam es dass ich an diesem Konzert von Joachim Witt war die Vorgruppe leicht Matrose war auch da ich hatte natürlich ein Atari T-Shirt an und der Gitarist kam auf mich zu und sagte ich habe mich drunter geschrieben ja und da kam mir das Gespräch und dann haben wir festgestellt dass er auch Atari Fan ist aber die 16-Bit-Ataris und ich war halt ein 8-Bit-Atari Fan und dann haben wir uns einmal zum Spielen verabredet dass ich ihm mal zeige was er als 8-Bit verpasst hat bei Atari und wir trafen uns in seinem Studio und haben einen Nachmittag verbracht um Atari 8-Bit zu zocken das muss man dazusagen Hilton Tyson ist Musikproduzent mit eigenem Studio man sieht jetzt mal hier zum Beispiel das Mischpult im Vergleich zu meinem kleinen Atari und er war da so glücklich den Nachmittag dass er gesagt hatte Mensch ich hätte damals auch ein C64 ich musste mal wieder aus dem Keller holen ich müsste mal ein aktuelles Musikstück auf so ein 8-Bit-Gerät umsetzen ich bin total begeistert ich hatte einen Zufall ich programmiere gerade ein Spiel und ich habe noch keine Musik und er sagt du hast doch keine Musik ich mach die Musik was brauchst du? du brauchst ein Titellied du brauchst eine Intromusik du brauchst Jingles das mach ich dir und er macht es dann hat er gesagt und dann nehmen wir doch den Sänger von Leichmatrose den Verdondern war dazu dass er noch ein Musikstück ausmacht mit richtigen Instrumenten ich habe hier und habe gesagt das ist der Plan heute stehe ich hier und sage wir haben es gemacht also ich habe mir jetzt wirklich ein Lied von den beiden netten Menschen Hilton Tyson, Andrea Stitz die für mein kleines Atari-Spiel unengeldlich ein Musikstück programmiert und besungen haben ich bin da total begeistert und sage an dieser Stelle nochmal Danke dafür weil mich das einfach total umhaut so dann weil ich ja dieses Spiel 1993 schon mal für den Amiga gemacht habe und jetzt ein D-Maker davon mache auf einer schwächeren Plattform habe ich mir den Kopf gesetzt dass der Atari etwas macht was der Amiga damals ohne Probleme hätte machen können aber nicht getan hat nämlich digitalisierte Sprache abzuspielen und wie der Zufall das er will habe ich durch glückliche Fügungen prominente Sprecher bekommen für mein Spiel das heißt der Hauptcharakter Dimo wird gesprochen von Hannes Malekki das ist der Sänger der Bandwelle Erdbalk den König Grünfuß wird gesprochen von Joachim Witt wer ihn nicht kennt der Goldene Reiter und die Flut die Königliche Fee wird gesprochen von der Sängerin Diana Werner von der Gruppe Herzinfarkt und die Prinzessin Dori von Linda Mölebeck von der Bandwürses da habe ich etwas gelernt was ich seitdem zu meinem Lebensspruch erhoben habe nämlich man muss einfach mal fragen und ich habe einfach mal gefragt und ich habe ein ja, mache ich dir was einfach bekommen das finde ich großartig also ich mir überlege dass ich seit 30 Jahren die Musik finde ich auch im Witt und er jetzt ein Teil meines kleinen Spieles ist finde ich das einfach wahnsinnig unbegreiflich schön jetzt muss ich ihn auf Werbung machen der Joachim Witt ist ab nächster Woche auf Tour rein zufällig ich werde dafür nicht bezahlt aber wer ihn sehen möchte Berlin, 2010 hier am C-Club und in einigen anderen Städten Leichtmatrose ist auch in Hamburg Berlin und leibt sich dabei wer kommen mag sollte das tun weil es lohnt sich wirklich so, Ausblick vielleicht die Stimmen nochmal zeigen und das Lied abspülen wie soll es weitergehen mit Demos Quest wir werden nächstes Jahr von der Original-Version kein D-Make machen, sondern diesmal ein Remake das heißt, wir werden es umsetzen auf die aktuelle Plattform, Windows, MacOS und die Mobiltelefone und es wird ein weiteres D-Make geben durchgeführt von Ernst Neubeck der auch schon gut dabei ist mit Face-Out und ähnlichem Spiel auch davon wird es eine Commodore C64 Umsetzung geben auch nächstes Jahr falls noch jemand Interesse hat dieses Spiel auf andere Rhetorplattformen umzusetzen das würde ich ausdrücklich begrüßen und würde jede mögliche Hilfestellung dafür geben also wenn jetzt jemand kommt und sagt, ich habe ein Spektrum ich habe ein Schneider, ich habe irgendwas anderes Exotisches und ich möchte das gerne umsetzen sehr, sehr gerne würde mich freuen und dann würde ich einmal mal kurz ein Beispiel von der Sprache geben wollen und zwar der Atari kann digitalisierte Sprache abspielen aber natürlich nicht in so einer wahnsinnig guten Qualität weil wir reden davon, dass wir eine Sample-Auflösung von 4 mit haben nicht 8 oder 32 oder 44 auf CDs sondern 4 und das ganze klingt dann so, das Beispiel das ich jetzt abspielen werde kommt dann von einem echten Atari das war jetzt meine Stimme und sie war einfach nur ins Blaue in so einem eingebautes Mikrofon vom Monitor gesprochen also nicht professionell im Studio aufgenommen nicht nachbearbeitet, sondern einfach nur so abgespielt so, wir sehen es hier dass was hier grafisch ausgegeben wird ist wir fängt die Routine an färbt erstmal den Bildschirm rot damit man wissen wo man ist bestimmt den Lautsprecher mit den Informationen von dieser Sprache und schaltet dahinter gut wieder auf schwarz man sieht also, dass die Audioerzeugung hier ungefähr ein Dissittel in der Sprache hier ungefähr ein Dissittel meiner Rasterzeile klaut das heißt diese digitale Sprache abzuspielen kostet Prozessorzeit muss das nur jede zweite oder dritte Zeile anstoßen, es reicht aber von dieser Zeile fehlt mir Prozessorzeit aber es muss kontinuierlich gemacht werden also es reicht nicht aus pro Bildschirmdurchlauf den Tonwert zu verändern sondern ich muss das wirklich ja, so ungefähr 6000 mal pro Sekunde machen also im Schnitt ungefähr jede zweite oder jede dritte Rasterzeile muss sich die Lautstärke vom Lautsprecher ändern damit ich einen Wellenmuster habe was letztendlich da tun wird so, jetzt könnte ich nochmal ein Beispiel geben wie der Ton dann bei professionellen Sprechern klingen soll das ist jetzt natürlich kein Beispiel sondern das muss erst in den Atari rein aber ich habe die Texte erst vor einer Woche bekommen mal ein Beispiel raus das hier ist das Skript, was ich den Sprechern geschickt hatte und in dem Skript sprechen es mehrere Personen ich habe die Audio-Dateien als Beispiel aber nur von einer Person hintereinander das heißt ich spiele es gleich mal den Text vom König ab fängt da oben an, wir kommen Dimo was ist dein Begehr und die Texte, die der Dimo spricht gleich abspülen, aber nicht direkt hintereinander im Wechsel, weil die Musik erst noch schneiden ist das habe ich noch nicht gemacht Willkommen bei Dimos Quest Willkommen Dimo was ist dein Begehr Du scheinst mir nicht gerade der golden Reiter für meine Tochter zu sein, oder? aber ich gebe dir eine Chance in meinem Königreich liegen überall verteilt unzählige Süßigkeiten bringen sie mir alle und du bekommst meine Tochter zur Frau jetzt geh So, das geht natürlich noch ein bisschen weiter und Alternativ könnte man auch mal eine Probe zeigen von der Sprachkunst von Hannes Malekki, dem Singer von Welle Erdbeim Oh Mann was für ein langweiliger Tag ich wünschte ich Ich wie könnte ich die Prinzessin heiraten? Ich weiß nicht ich glaube Mein König ich bitte um die Hand eurer Tochter Dori und so weiter das was wir jetzt hier sehen ist der Storyboard so soll es dann ungefähr aussehen die Grafen die wir damals in der Amiga-Fassung verwendet hatten damals ohne die Sprache obwohl das damals technisch kein Problem gewesen wäre, aber wir sind nicht auf die Glorachidee gekommen und mein Ziel ist das jetzt diese Intersequenz mit der digitalisierten Sprache auf dem Matari dann auf zum Laufen zu kriegen und so wie das aussieht wird das gelingen das einzige Pulli was wir haben ist die digitalisierte Sprache das passt dann nicht mehr auf eine fünfe Viertel-Zoll-Diskette sondern wir müssen dann ausweichen auf ein Spielmodul wo wir dann immerhin ein Megabyte-Speicher haben das ist das da legen wir dann die digitalisierte Sprache ab und der Atari holte sich aus dem Modul raus und gibt die dann mit seinen Atari-Fähigkeiten wieder wird also nicht durchgeschleift ist auch kein mp3 was da irgendwie vom Modul generiert wird sondern die Bytes werden wirklich vom Atari dann auch in Sprache umgewandelt da zu fragen so was Letztes und ich möchte die schließen würde ich einmal kurz in das Lied reinhören in den Titelsong der produziert wurde von der Band Leichtmatrose und im Elektrofil-Studium bänden wir einmal den Text ein von dem Lied wird es dann auch im Video noch geben begleiten zum Spiel und das Lied wird es dann natürlich auch in die Remake-Fassung schaffen ja dann in voller Qualität und ja da muss ich einfach sagen danke an die Beteiligten die es mir ermöglicht haben mein kleines Spiel so derart zu bereichern ich bin da sehr glücklich drüber sehr dankbar dafür und ich kann eigentlich nur jeden ermutigen vielleicht einen ähnlichen Schütze wagen sich dann ein Lieblings-Retro-Plattform auszuerkroren und dann einfach mal ein Spiel zu schreiben es könnten viele Sachen passieren auf dem Weg und ich kann Sie dazu nur ermutigen es gibt auf dieser Veranstaltung mehrere Kurse wo Sie dann noch weiter reinschnuppern können wie gesagt im 14 Uhr könnten Sie zu diesem Spiel einen eigenen Level beisteuern der es dann auch auf dem Modul-Wersun schaffen würde wenn Sie es denn möchten dann wären Sie Teil dieses Spiels mit einem Level und alternativ wird morgen Nachmittag ein Workshop stattfinden wo man die Atari-Spielkursale 2600 programmieren kann ein sehr interessanter Beitrag habe ich letztes Jahr auch schon mal Anteil genommen kann ich auch nur wärmstens empfehlen so haben Sie noch Fragen dann bedanke ich mich für Ihre Aufmerksamkeit danke fürs hier sein und vielleicht sieht man sich bei einer anderen Gelegenheit mal wieder Dankeschön