Autor: vstr@gmx.de

  • Nettoglück oder: Wenn Du Pech hast, fällt Dir der Stein vom Herzen direkt auf den Fuß

    Nettoglück oder: Wenn Du Pech hast, fällt Dir der Stein vom Herzen direkt auf den Fuß

    Es gab hier in letzter Zeit wenig Klappradcontent, was daran liegt, dass ich in letzter Zeit sehr wenig mit dem Klapprad unterwegs war aus diversen praktischen Gründen. Das wird sich bald wieder ändern, spätestens, wenn ich Ende des Jahres mit dem Klapprad durchs Auenland fahre – aber dazu komme ich gleich, und ich will ja nicht meinen eigenen Blogbeitrag spoilern.

    20170705_191130~01-01

    (Okay, das Foto hat absolut nichts mit dem Text zu tun. Und es zeigt den Vorraum eines Restaurant-Klos. Und ist nicht besonders interessant oder gut komponiert oder technisch brilliant. Aber ich fands schön und irgendwo muss ich ja damit hin, herrjeh!)

    (mehr …)

  • Heiliger-Vater-Content (Vater sein dagegen … 3)

    Heiliger-Vater-Content (Vater sein dagegen … 3)

    Hurra, heute darf ich wieder über das Vatersein berichten. Ich habe mir vorgenommen, höchstens in jedem zweiten Beitrag darüber zu schreiben und zwischendurch fleißig andere schöne Themen wie Schokolade, Fotografie oder Atombomben zu behandeln. Aber jetzt wieder: Kinder- oder genauer gesagt: Vater-Content. Quasi Heiliger-Vater-Content, weil es um ein himmlische Thema geht, genauer gesagt um die Frage, wie es sich im Himmel eigentlich lebt und wie das Paradies organisiert ist.

    P1180201

    (mehr …)

  • Analog

    Analog

    Ich bin mit allem ein bisschen spät dran. Erster Kuss mit zwanzig, Abitur mit 23, erster Poetry Slam mit 34 (was ziemlich genau dem Zweifachen des üblichen Einstiegsalters entsprechen dürfte), erstes Kind mit 45. Die Fahrerlaubnis beginne ich in den nächsten Wochen und das Schreiben meines ersten Bestsellers ist aktuell auf 2024 terminiert.
    Jetzt bin ich mal wieder auf einen Trend aufgesprungen, der inzwischen so durch ist, dass eigentlich schon fast wieder das nächste Revival ansteht.

    05 0a minox 0006

    Ich habe mir einen Fotoapparat gekauft. Na gut, drei Fotoapparate. (mehr …)

  • Vater sein dagegen … 2

    Vater sein dagegen … 2

    In der Hitparade der jüngsten Väter aller Zeiten belege ich keinen der vorderen Plätze. Man kann wohl davon ausgehen, dass die Glocke der Gaußschen Normalverteilung der Lebensalter von Männern zum Zeitpunkt ihrer ersten Vaterschaft dort, wo mein Name an der X-Achse steht, schon etwas abgeflacht ist.

    IMG_0029
    (mehr …)

  • Karamell-Meersalz oder: Schade um die Schweiz!

    Karamell-Meersalz oder: Schade um die Schweiz!

    Plötzlich ist alles Karamell-Meersalz. Wo du hinguckst: Karamell-Meersalz. Wo du reinbeißt: Karamell-Meersalz. Karamell-Meersalz-Eis, Karamell-Meersalz-Joghurt, -Milchkaffee, -Kuchen, -Massageöl, -Brotaufstrich, -Bonbons, -Wurst, -Gurken; bei Netflix läuft die zweite Staffel von „Caramel Sea Salt Is The New Vanilla“ und in den neuen Bundesländern ist Karamell-Meersalz inzwischen der häufigste Babyvorname.

    20170614_131527

    (Symbolbild Karamell-Meersalzification)

    (mehr …)

  • … Vater sein dagegen sehr

    … Vater sein dagegen sehr

    Ach, Quatsch! Vater sein ist super einfach. So einfach wie humpeln, wenn man sich den Fuß verstaucht hat. Das Kind kommt zur Welt und, peng, fertig ist der Lack bzw. Vater. Man vervatert sowieso per Defition, aber man füllt die Rolle auch sofort und automatisch aus wie ein zu enges Superheldenkostüm …

    dde4b2da206c0bca2fed364519f7a768resNetFinal_final1

    Das war mir vorher nicht klar. (mehr …)

  • Destroyer of worlds

    Destroyer of worlds

    „Now I am become Death, the destroyer of worlds“ – Robert Oppenheimer zitierte 1965 in Bezug auf den ersten Atombombentest am 16.7.1945 aus dem Bhagavad Gita. Ziemlich pathetisch und (bis jetzt) glücklicherweise übertrieben. Destroyer of worlds ist auch der Titel der aktuellen Episode von Hardcore History, einem (englischsprachigen) Geschichts-Podcast von Dan Carlin. Wobei der Begriff Podcast vielleicht etwas in die Irre führt, wenn man an die in Deutschland so verbreiteten Talk-Podcasts denkt. Es sind Hörbücher. Die +ersten Folgen von Hardcore History  waren noch unter einer Stunde lang, doch in den letzten Jahren ist Dan Carlin zu mehrteiligen Features mit einer Gesamtlänge von manchmal weit über 20 Stunden übergegangen. Zwischendurch schiebt er einteilige, sogenannte „Blitz“-Episoden ein, die dann nur irgendwas zwischen drei und sechs Stunden dauern.

    05 i minox amsterdam 0020

    (Die Fotos haben wie so oft nichts mit dem Text zu tun, stammen aus Amsterdam und aus meiner neuen Vollformatkamera)

    (mehr …)

  • Lesung heute im Posh Teckel (nicht im Ocelot)!

    Lesung heute im Posh Teckel (nicht im Ocelot)!

    Ich habe eine falsche Location in meinen Veranstaltungskalender geschrieben. Ich lese heute Abend im Posh Teckel in der Pflügerstraße 4! Ahne moderiert! Sorry! (Also, sorry  für die falsche Info, nicht für Ahnes Moderation.)

    SAMSUNG(Fehlinformation (Symbolbild))

  • Gut verdienen? Dis kannste nich bezahlen!

    Gut verdienen? Dis kannste nich bezahlen!

    Die halbe Wahrheit ist die schlimmste Lüge:
    „Diese knapp zehn Prozent der Top-Verdiener in Deutschland sind mit 48,2 Prozent fast für die Hälfte des gesamten Einkommensteueraufkommens verantwortlich, die 30 Prozent Spitzenverdiener demnach sogar für 79 Prozent.“
    Da ist er wieder, der alternative Fakt von den Top-Verdienern, die für alle zahlen müssen. Ein jährlich wiederkehrender Klassiker und ein schönes Beispiel für Tatsachenverdrehung durch Auslassung. Denn das größte Stück in der Steuereinnahmentorte ist die Umsatzsteuer mit fast einem Drittel der Gesamtsteuereinnahmen (2012: 32,4%USt, 30,1% Einkommens- und Lohnsteuer) . Von der Umsatzsteuer sind aber Geringverdiener und Arbeitslose genauso betroffen (verhältnismäßig sogar viel stärker).
    Die 79% Einkommenssteuer der 30% Topverdiener entsprechen pi mal Daumen knapp 24% des Gesamtsteuereaufkommens. Allein das reichste Prozent der Deutschen hat aber (2008) schon 14,5 % des GESAMTEN EINKOMMENS verdient.

    DSC_0015_5 2

    (Gerade Spitzenverdiener greifen vermehrt zur Sparwurst.)

    Das „Institut der deutschen Wirtschaft“, das die Studie veröffentlicht hat, ist nicht gerade eine neutrale Instituition (man muss fairerweise sagen, das sie mit ihrem Namen auch nicht versuchen, diesen Eindruck zu erwecken). Spiegel Online ist das keine Erwähnung wert.
    Man kann ja darüber reden, ob zum Beispiel mittlere Einkommen zu stark belastet sind, aber ein bisschen Redlichkeit bei den Zahlenspielen (und ein bisschen kritische Einordnung seitens der Presse) wäre ja doch schön.

    Quellen:

    Einkommensanteil Spitzenverdiener:

    http://www.faz.net/aktuell/wirtschaft/wirtschaftspolitik/einkommensanteil-des-obersten-prozents-in-deutschland-sinkt-13995524.html

     

    Steuereinnahmen nach Steuerarten:

    http://www.bpb.de/nachschlagen/zahlen-und-fakten/soziale-situation-in-deutschland/61874/steuereinnahmen

     

    Institut der Deutschen Wirtschaft und Beziehung zur Initiative Neue Soziale Marktwirtschaft:

    https://de.wikipedia.org/wiki/Institut_der_deutschen_Wirtschaft

     

  • 16 shades of grey

    16 shades of grey

    Tertiäre Bezugsperson

    Es ist ja nicht so, dass ich nichts zu tun hätte.
    Ich bin frischgebackene „primäre Bezugsperson“ für einen frischgebackenen Erdenbürger, na gut, sekundäre, na gut, tertiäre, denn manchmal habe ich das Gefühl, dass unsere Tochter „den Rommelsbacher“ lieber hat als mich („der Rommelsbacher“ ist die Wärmelampe über dem Wickeltisch, welche bei jedem Wickeln für extatische Begeisterung bei ihr sorgt und brennende Eifersucht in mir auslöst).

    P1140243

    (Teile dieses Blog-Posts wurden unter erschwerten Bedingungen geschrieben. Es gab Bulette.)

    Ich konnte seit Mitte Dezember insgesamt fünf oder sechs Nächte durchschlafen, interessiere mich plötzlich für Dinge wie Staubsaugerroboter, habe seit Wochen den Boden der Dreckwäschekiste nicht mehr gesehen und verliere langsam aber sicher meine Sprache und sämtliche mühsam erlernten Bewegungsmuster und sozialen Normen – wenn euch jemand erzählt, Babys würden ihre Eltern nachahmen, glaubt ihm nicht. Es verhält sich genau andersrum, bläh, bläh, göbbel glob! Nebenher versuche ich trotzdem zu schreiben, der eine oder andere Auftritt ist ebenfalls zu absolvieren und ab und zu muss man auch ein Bier trinken gehen, bevor einen die anderen Menschen komplett abschreiben.

    kloss und spinne c64 01

    (Kloß und Spinne Demo (Beta))

    Und da dachte ich mir, Mensch, Volker, in dem bisschen Freizeit, dass dir bleibt, meist zwischen 22 und null Uhr, lernst du Assemblerprogrammierung. Und setzt Kloß und Spinne für den C64 um,  einen 8bit-Computer, der 1982 auf den Markt kam und 16 Farben  bei einer Auflösung von maximal 0,065 Megapixeln darstellen konnte. (Die Überschrift des Artikels rührt daher, dass es auf dem Schwarzweißfernseher in meinem Jugendzimmer 16 Grautöne waren, lustig, oder?!)

    titel

    (Das Geflacker enthält alle 16 Farben, und es sind die schönsten Farben der Welt: ekelgrün, schmutzigrot, braunrosa etc.)

    Hogwarts ohne Hermine

    1985 hatte ich meinen (ersten) C64 und er war das Coolste, was ich jemals hatte. Ein Tor in ein neues Universum mit unendlichen Möglichkeiten, eine Maschine, auf der man schreiben, mit der man Musik machen und bunte, bewegte Bilder auf einen Fernsehschirm bringen konnte. Wie besonders das damals war, können sich die Jüngeren vielleicht nicht vorstellen – aber damals war der Normalbürger rein passiver Medienkonsument. Er sah, las und hörte, was ihm vorgesetzt wurde. Die Möglichkeit, selbst zum Sender zu werden, war wahnsinnig aufregend.  Da war eine ganze Welt, die man erobern und gestalten konnte, und zu der außer uns Eingeweihten niemand Zutritt hatte. Und zu welcher Mädchen zu unserem Leidwesen überhaupt keinen Zutritt begehrten.

     

    P1140137

    (Größenvergleich verschiedener Peripheriegeräte: unten: 1541-Diskettenlaufwerk (C64), oben links: SD2IEC-Laufwerk (C64), oben rechts: Nuckel (Baby). Siehe weiter unten im Text.)

     

    Es waren die Zeiten, als man sich noch zwischen Computer und Freundin entscheiden musste – ein Umstand, dem die Firma Commodore später Rechnung zollte, in dem sie ihre neue Heimcomputergeneration „Amiga“ – Freundin – taufte …

    Oh ja, wir haben Opfer gebracht für den Fortschritt! Eines Tages werde ich einen langen, langen Text darüber schreiben.

    Ich hab keine Ahnung, was aus meinem alten C64 wurde. Letztes Jahr habe ich bei Ebay einen ersteigert. Anlass war ein Doku-Projekt über die Heimcomputerszene in der DDR, das leider vom Sender gecancelt wurde. Schade, wär schön geworden. Den C64 habe ich trotzdem nicht mehr hergegeben. Wenn ich ihn heute anschalte und der blaue Bildschirm erscheint, kann ich mich manchmal wieder in den Jugendlichen hineinversetzen, für den dieser Startbildschirm ungefähr dasselbe war wie das aufblasbare Raumschiff aus „Adolars phantastische Abenteuer“.  Das Ticket nach Hogwarts. Ein bisschen vom alten Zauber ist noch da.

    P1140265

    (Fragt nicht!)

    Nachdem ich neulich für einen Blogartikel einen Kloß-und-Spinne-Screenshot in eine C64-Grafik konvertiert hatte, setzte sich plötzlich die Idee fest, eine Kloß-und-Spinne-Umsetzung für den C64 zu schreiben. Schnell war klar, dass ich mit BASIC nicht weit kommen würde und nur Assembler, wenn man so will die menschenlesbare Form der Maschinensprache, in Frage käme. Und dass ich diese von Grund auf lernen müsste. In den 80ern hatte ich mich ein bisschen damit beschäftigt, bin aber nie weit gekommen. Ich habe mich damals vor allem auf’s Spielen und Musikmachen und von-niemals-realisierten-Projekten-Träumen konzentriert. (Und auf Biertrinken, Rauchen und Punkkonzerte, wir waren zwar Nerds, aber trotzdem Menschen und junge Männer.)

    Jetzt habe ich in drei Monaten eine lauffähige Demo-Version von „Kloß und Spinne – Reload,8,1“ geschrieben.

    Und wenn demnächst wieder händeringend C64-Programmierer gesucht werden, weiß ich wofür ich das alles gemacht habe (ich glaube, die Bundeswehr sucht gerade mit großen Werbeplakaten welche 😉fail01

    (Nicht alles hat auf Anhieb geklappt.)

    Mit Flash etc. hätte sich das alles super einfach machen lassen, aber auf dem C64 ist das schon ein ziemlich umfangreiches und nicht ganz triviales Unterfangen. Es gibt Text-Bitmap-Splitscreens, Sprite-Multiplexer, zufallsgesteuerte gescripetete Sequenzen, für die ich sozusagen eine eigene Scriptsprache implementiert habe (ein zugegebenermaßen sehr großes Wort für das, was ich da mache, aber nicht komplett falsch), es gibt Bitmap-Animationen und ein ziemlich umfangreiches Hantieren mit Variablen, Statusbytes und allen möglichen Daten. (Nicht alles ist in dem Gif oben zu sehen.) Ein Profi kann darüber nur lachen, und wenn er sieht, wie ich das alles krumm und schief und mit Klebeband, Spucke und Bolognesesauce zusammengecoded habe, wird er sich die Haare ausraufen, aber hey, es läuft, mein erstes ernstzunehmendes Assembler-Programm!

    murx

    (Wow, ein Spritemultiplexer (alpha-Version))

    Das Ganze macht mir gerade irrsinnig viel Spaß. Obwohl oder weil ich mich dabei so konzentrieren muss. Ich verwende Gehirnteile, die ansonsten derzeit brach liegen, deshalb ist es gleichzeitig sehr entspannend. Wahrscheinlich hat es einen ähnlichen Effekt, als würde ich in meiner Freizeit Sudokus oder komplizierte Mordfälle lösen. Die Lernkurve am Anfang ist ziemlich steil, das fetzt, man merkt, wie man besser wird. Wie stolz ich war, als die Grafik und die Sprites endlich korrekt dargestellt wurden und an der richtigen Stelle im Speicher lagen! Und als ich Kloß und Spinne und die anderen zum Blinzeln brachte, mannomann, das war was! Und als Horsts Kopf das erste Mal explodiert ist, da lief ich los, riss meine gerade gestilltwerdende Tochter aus den Armen ihrer Mutter, um ihr zu zeigen, was ihr Papa da tolles programmiert hat! Als sie schrie, wusste ich, dass der Effekt genauso schaurig und schockierend war, wie ich es geplant hatte! Das alles verblasst allerdings vor dem Stolz, den ich empfand, als die Sache mit den Dialogsequenzen schließlich funktionierte.

    Irgendwann gibt es ein Update und irgendwann schreibe ich auch nochmal einen längeren Text über die ganze Sache mit den Computern in der DDR in den 80er Jahren. Und vielleicht ist irgendwann nirgendwann, weil ich momentan nicht dazu komme, weiterzumachen, aber egal, schon jetzt kann ich sagen: Es hat sich gelohnt!

    Wer jetzt neugierig geworden ist, für den kommen hier einige Links und Downloads und ein Auszug aus dem Quelltext. Alle anderen verabschiede ich mit einem freundlichen SYS64738.

    www.retro-programming.de

    Ein wirklich tolles, umfangreiches, verständliches C64-Programmier-Tutorial. Wahnsinn. In diesen Seiten steck soviel Mühe und Liebe und ich hätte nicht eine Zeile gecoded ohne diese Seite (tatsächlich finden sich in meinem Quellcode noch einige VICII-Registerdefinitionen und eine Routine zur Anzeige eines Koala-Painter-Bildes, die ich direkt aus den Programmierbeispielen von retro-programming übernommen habe). Link:  www.retro-programming.de

    CBM Program Studio

    Wenn ich sage, dass ich den C64 programmiert habe, ist das ein bisschen geflunkert. Der C64 kam nur zum Testen zum Einsatz. Und meistens nicht einmal dann. CBM Program Studio ist eine Entwicklungsumgebung für Windows, mit der man mit dem heute üblichen Komfort C64-Software entwickeln und diese dann ebenfalls unter Windows in einem Emulator testen und debuggen kann. Ein geniales Tool, inklusive Sprite- und Charset-Editor. Hier geht’s zum Download: http://www.ajordison.co.uk/

    Das bringt uns zu:

    C64-Emulatoren

    Davon gibt es eine Menge, ich verwende CCS64 und VICE64 und finde mal den einen, mal den anderen besser. Welcher originaler ist, kann ich nicht sagen. Die Grafik scheint mir bei beiden hundertprozentig umgesetzt, der Sound ist ein bisschen anders als bei meinem echten C64 aber nur ein bisschen und außerdem klang auch jeder C64 ein bisschen anders (zumindest die Exemplare mit dem alten 6581-Soundschip). Der größte Vorteil eines echten „Brotkastens“ ist … naja, eben der Brotkasten, das Gerät selbst, das Aussehen, das Klackern der Tasten, das Gewicht der Peripheriegeräte (nehmt mal so ein Netzgerät oder Diskettenlaufwerk in die Hand!), das ist ja doch ein Teil des Zaubers.

    Wer im Keller noch einen C64 hat, jetzt Lust hat ihn hervorzuholen, der sollte trotzdem ein paar Euro inverstieren und sich ein

    SD2IEC-Laufwerk

    anschaffen – ein SD-Karten-Leser als Ersatz für ein Diskettenlaufwerk. Siehe Bild oben. Ein Bruchteil der Größe und des Gewichts und auf eine 4GB-SD-Karte passen soviele Daten wie auf ungefähr 28.000 5,25 Zoll-Disketten – genug, um das Saarland zweimal komplett zu bedecken!

    Hier ist ein Link zum Händler mit dem schönen Namen „The future was 8bit“, der die niedliche mini-1541-Version verkauft:

    https://www.thefuturewas8bit.com/shop/commodore/sd2iec-rc64.html

    Falls jemand richtig neugierig ist:

    Hier ist das „Kloß und Spinne“-Demo (bzw. die aktuelle Beta-Version) als CBM-Programstudio-Projekt für CBM-Prorgam Studio 3.10:

    http://schnipselfriedhof.de/wp-content/uploads/2017/04/cbm-project-kloss-und-spinne.zip

    Hier gibt’s das dazugehörige .prg-File, das man direkt im Emulator oder auf einem richtigen C64 laufen lassen kann:

    http://schnipselfriedhof.de/wp-content/uploads/2017/04/demo-beta.zip

    (TFM: „Q“ startet eine Dialogsequenz, „N“ startet den Norbert-erklärt-die-Welt-Screen, „H“ lässt Horsts Kopf explodieren.)

    Todo-Liste:  Fertigstellung des „Norbert erklärt die Welt“-Effekts, Kloß soll den Kopf schütteln können,  verschiedene Arm-Animationen für Spinne,  flexible Pupillenanimationen für Kloß und Sprinne,  Augenbrauen-Animation, die Katze soll atmen,  verschiedene Animationen für den Fernseher,  Soundimplementierung,  Erweiterung „Scriptsprache“,  Titelscreen inklusive Kloß-und-Spinne-Titelsong (SID edition),  noch irgendwas urst fetziges, was mir zwischendrin noch einfällt

    Falls das hier übrigens jemand liest, der gut löten kann und Lust auf einen Bastelnachmittag bei Kaffee und Kuchen hat: Ich möchte einen zweiten Soundchip in meinen C64 einbauen. Habe alle Bauteile da, aber keinerlei Löterfahrung …

    PS: Weil vielleicht nicht jeder direkt vor Augen hat, wie so ein C64-Programm aussieht ist hier der Quellcode des „Rumpfprogramms“ (ohne Variablendefinitionen, Subroutinen, Interruptroutinen etc., die ich getrennt editiert und mittels der Assembleranweisung „incasm“ eingebunden habe). Das ganze Programm mit allen Unterprogrammen hat ungefähr die 5-8fache Länge. Alles, was hinter einem Semikolon steht, ist ein Kommentar und kein Programmcode.

    incasm "Variablen.asm"
    
    *=$0801
    ;-----------------------------------------
    ;  ;  BASCIZEILE  SYS   2062
    ;------------------------------------------
    
     BYTE           $0B,$08,$DE,$07,$9E," 2062",$00,$00,$00 
    
    ;OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
    ;OO                                                                     OO
    ;OO                          INIT                                       OO
    ;OO                                                                     OO
    ;OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
    
            lda $0001
            sta $d020
            and #%11111110
            sta $0001                       ; BASIC AUSSCHALTEN - RAM BEI A000 FREIGEBEN
    
    incasm "init bitmap.asm"
    incasm "init animations.asm"            
    
            jsr SR:SHOW_STANDARD_SPRITES         
            jsr SR:INIT_STANDARD_IRQS
    
    ;OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
    ;OO                                                                     OO
    ;OO                         TASTATURABFRAGE                             OO
    ;OO                                                                     OO
    ;OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
    
    R:TASTATURABFRAGE
     
            lda  F_SPRECHER
            bne R:TASTATURABFRAGE           ; solange noch jemand spricht keine   Tastaturabfrage
            lda $CB                         ;Tastatur-Matrixkoordinate lesen
            cmp M_Tastaturspeicher          ; hat sich etwas verändert?
            beq R:TASTATURABFRAGE           ; nö? weiter warten!
            sta M_Tastaturspeicher
            cmp #$40                        ;besteht die änderung darin, dass jetzt keine Taste mehr gedrückt ist?
            beq R:ANIMATION_SELECT  ; ja? Alles läuft weiter wie bisher    
            sta M_Tastaturspeicher          ; nein? D.h. es wurde gedrückt-> Speicher aktualisieren
    
    R:ANIMATION_SELECT 
       
            lda M_Tastaturspeicher
            cmp #$1D                        ; H gedrückt?
            beq R:EXPLODIER
            cmp #$27                        ; N gedrückt?
            beq R:NORBERT_EDW
            cmp #$3E                        ; Q gedückt?
            beq R:_TEXT_PLUS_ANIMATION
            jmp R:TASTATURABFRAGE           ; etwas anderes gedrückt? zurück auf  start!
    ;OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
    ;OO                                                                     OO
    ;OO                          Texte und Animationen                      OO
    ;OO                                                                     OO
    ;OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
    
    R:_TEXT_PLUS_ANIMATION
    ;-----------------------------------------
    ;  Initialisierung / Textblockstart festlegen
    ;------------------------------------------
    	jsr SR:GET_RND          		; Zufallszahl zur Anmationsauswahl
           and #%00001111          		;16 verschiedene Adressen
           tax                     		; Akku nach x
                                    		;da wir mit der  Zufallszahl x-indizieren 
           lda $9ff0,x             		;x. Wert aus Animationsblock-
                                   		;Einsprungtabelle laden
          sta MZ_Lesezeichen_Zero+1       	; als höherwertiges Lesezeichenbyte
                                       	;speichern
      	lda #$00                        	    
         	sta MZ_Lesezeichen_Zero         	; Lo-Byte auf 0
    
    ;-----------------------------------------
    ;  Initialisierung aktuelle Sprechblase
    ;------------------------------------------
    
    R:NAECHSTE_SPRECHBLASE
            
            jsr SR:CLEARTEXT 
            ldy #$00;  Index Y auf 0 -> anfang der Sprechblase
            clc
    ;........... Befehlsbyte lesen, 9800 + x (erster durchlauf: +0)
            lda (MZ_Lesezeichen_Zero),y
            sta F_Sprecher                 ;in Sprecher-Flag speichern
    
    ;-----------------------------------------
    ; SPRECHER-ABFRAGE
    ;------------------------------------------
    
    ; ABFRAGE_OB_NORBERT_SPRICHT
          
            ;lda F_Sprecher                 ; ist eh noch im Akku
            cmp #$01                        ; 1 heißt: Norbert spricht
            bne R:ABFRAGE_OB_KLOSS_SPRICHT  ; nein? als nächstes Kloß abfragen!
                    
    ; NORBERT SPRICHT
    
            lda SPRITE1OFFSET_BLICK_ZU_NORBERT ; (Kloßens Blickrichtung ändern)
            sta SPRITE1DATA
            lda #$05
            sta M_Standard_Farbe_Texthintergrund ; Text-BG=grün
            jmp R:ABFRAGE_SPRECHDAUER 
    
    R:ABFRAGE_OB_KLOSS_SPRICHT
    
            lda F_Sprecher
            cmp #$02                        ; 
            bne R:ABFRAGE_OB_SPINNE_SPRICHT  ; nein? als nächstes Spinne abfragen!
                                              
    ; KLOSS SPRICHT
    
            lda SPRITE1OFFSET_BLICK_STANDARD ; KLoß Blick nach unten 
            sta SPRITE1DATA
            lda #$0e
            sta M_Standard_Farbe_Texthintergrund ; Text-BG=blau
            jmp R:ABFRAGE_SPRECHDAUER              
    
    ; ABFRAGE_OB_SPINNE_SPRICHT
    R:ABFRAGE_OB_SPINNE_SPRICHT
            
            lda F_Sprecher        
            cmp #$03 
            bne R:ABFRAGE_OB_NIEMAND_SPRICHT  ; auch nicht? weiter abfragen!
    
    ; SPINNE SPRICHT
           
            lda SPRITE1OFFSET_BLICK_ZU_SPINNE ; KLoß Blick zu Spinne
            sta SPRITE1DATA
            lda #$02
            sta M_Standard_Farbe_Texthintergrund ; Text-BG=rot
            jmp R:ABFRAGE_SPRECHDAUER 
    
    R:ABFRAGE_OB_NIEMAND_SPRICHT
            
            lda F_Sprecher        
            cmp #$00 
            bne R:ABFRAGE_SPRECHDAUER   ; auch nicht? weiter zur näxten abt.!
    
    ; NIEMAND SPRICHT
           
            lda SPRITE1OFFSET_BLICK_STANDARD ; KLoß Blick nach unten 
            sta SPRITE1DATA
            lda #$0f
            sta M_Standard_Farbe_Texthintergrund
            jmp R:ABFRAGE_SPRECHDAUER 
    
    ;-----------------------------------------
    ; SPRECHDAUER
    ;------------------------------------------           
    R:ABFRAGE_SPRECHDAUER                   
            
            ldy #$01
            lda (MZ_Lesezeichen_Zero),y   ;Befehlsbyte 2 lesen,  9800 + y (+1)
            sta C_countdown_sprachdauer 
            lda F_Sprecher        
    ;........... Eine 0 heißt:NIEMAND spricht -> weiter zur Warteschleife
            cmp            #$00 
            bne R:INIT_OUTPUT_TEXT  ; nicht 0? Text ausgeben
    ;-----------doch 0? Kein Sprecher? Kein Text?
            jmp R:NAECHSTE_ANIMATION_STARTEN               
          
    ;-----------------------------------------
    ; TEXTAUSGABE INITIALISIEREN
    ;------------------------------------------  
    
    R:INIT_OUTPUT_TEXT
    
            clc
            ;........... X wird der Zähler für die Schreibschleife  
            ldy #$00
    
    ;-----------------------------------------
    ; TEXTAUSGABE LOOP
    ;------------------------------------------  
    
    R:OUTPUT_TEXT
           
            lda   (MZ_Lesezeichen_Zero),y  
    
    
    ; ABFRAGE DER END-BEFEHLE
    ;---------------------------------
            
            cmp #$fe
            beq R:NAECHSTE_ANIMATION_STARTEN
            cmp #$ff
            beq R:NEUE_TASTATUR_ABFRAGE
            ;.......Nichts davon? Zeichen ausgeben!
            sta $43fe,y
            iny 
            jmp R:OUTPUT_TEXT
            
    R:NAECHSTE_ANIMATION_STARTEN
             ;.......warten bis Dauer abgelaufen (in interrupt S2) 
            lda C_countdown_sprachdauer
            bne R:NAECHSTE_ANIMATION_STARTEN
            
            lda SPRITE6OFFSET           ; Münder auf Anfangswert
            sta SPRITE6DATA 
            lda SPRITE7OFFSET
            sta SPRITE7DATA
            lda SPRITE4OFFSET
            sta SPRITE4DATA
            lda SPRITE5OFFSET
            sta SPRITE5DATA
            
            ;.......y zu Lesezeichen Zero Lobyte dazuadieren
            
            tya    ; y in den Akku
            adc MZ_Lesezeichen_Zero ; aktuelles Lobyte Lesezeichen dazuaddieren
            sta MZ_Lesezeichen_Zero ; und wieder dort speichern
            bcs R:NEXT_256er_PAGE   ; wenn Lobyte-Überlauf
            jmp R:NAECHSTE_SPRECHBLASE
    
    R:NEXT_256er_PAGE
            inc MZ_Lesezeichen_Zero+1 ; HiByte erhöhen, umblättern
            clc
            jmp R:NAECHSTE_SPRECHBLASE
    
    R:NEUE_TASTATUR_ABFRAGE
            jmp R:TASTATURABFRAGE
    
    ;OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
    ;OO                                                                     OO
    ;OO                      FINISH                                         OO
    ;OO                                                                     OO
    ;OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
    
    ;-----------------------------------------
    ; Andere Programmteile inkludieren
    ;------------------------------------------
    
    incasm "init irq.asm"
    incasm "NorbertWelt.asm"
    incasm  "Explosion.asm"
    incasm "show sprites.asm"
    incasm "interrupt S1 - Textfenster.asm"
    incasm "interrupt S2 - Screen Split.asm"
    incasm "interrupt S3 - Animationen.asm"
    incasm "interrupt N1 - Splitscreen.asm" 
    incasm "interrupt N2 - Top Sprites.asm"
    incasm "interrupt N3 - bottom Sprites.asm"
    incasm "subroutines.asm"
    
    ;-----------------------------------------
    ; Charset / Sprites / Bitmap
    ;------------------------------------------
    
    *=$4800           ;charset DATEN ab 4800
    incbin    "c64_lower.64c",2
    
    *=$5000           ;SPRITE DATEN ab 5000
    incbin    "Sprites05.bin"
    
    *=$6000                      
    incbin    "spin07.koa",2        ;Bild einbinden
    
    *=$a000                       
    incbin    "shapestest3.koa",2   ; Bitmap Animationsdaten
    
    ;-----------------------------------------
    ; TEXTDATEN
    ;------------------------------------------
    
    *=$9800 ; Block 1
    
    
            byte            $ff         ; Ende des Animationsblocks 
         
    *=$9a00 ; Block 2
            byte            03, 70      ; Figur 3 (Spinne)
            text            'Norbert, machste mir ne Brause?'
            byte            $fe
            
            byte            00, 20      ; Pause
            byte            $fe
    
    
            byte            01, $cc      ; Figur 1 (Norbert)
            text            'Brause ham wer nich. Schnaps kannste    '
            text            'haben.'
            byte            $fe
    
            
            byte            03, $b0      ; Figur 3 (Spinne) 
            text            'Och, nee, lass mal. n andermal gerne.   '
            text            'Und Kloss, wie gehts?            '
            byte            $fe
    
            byte            02, $cc      ; Figur 1 (Norbert)
            text            'Scheisse gehts. Manchmal denk ich, wir  '
            text            'leben in der Matrix ... '
            byte            $fe
    
            byte            00, 30      ; Pause
            byte            $fe
    
            byte            02, $a0      ; Figur 2 (Kloß) 
            text            '... und die Matrix ist ein C64!          '
            byte            $ff
          
    *=$9c00 ; Block 3
    
            byte            01, $40      
            text            'Test 1'
            byte            $ff
    
    *=$9d00 ; Block 4
    
            byte            02, $40      
            text            'Test 2'
            byte            $ff
    
    *=$9e00 ;  Block 5
    
            byte            03, $40      
            text            'Test 3'
            byte            $ff
         
    ;Einsprungtabelle für Animationsblöcke     
    *=$9ff0
            byte $9a, $9c, $9d, $9e
            byte $9a, $9c, $9d, $9e
            byte $9a, $9c, $9d, $9e
            byte $9a, $9c, $9d, $9e