Norbert ist Pleite, Spinne will keine Brause und Kloß hat bald einen neuen Job. Kurz gesagt: Das Ende der Welt ist nah!

Norbert ist Pleite, Spinne will keine Brause und Kloß hat bald einen neuen Job. Kurz gesagt: Das Ende der Welt ist nah!

Der schockierendste und fetzigste Kloß-und-Spinne-Trailer aller Zeiten! Kloß und Spinne, Episode 30, „Norbert hat einen Plan“ kommt demnächst!

Ich war in Neuseeland. Kloß und Spinne auch. Norbert war in Bitterfeld. Stellt sich die Frage, was der bessere Urlaubsort ist. Außerdem wird die Frage erörtert, was besser ist: moderne Kunst oder ein paar auf’s Maul …

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).
(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.

(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?!)
(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.
(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.
(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 😉
(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!
(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.
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
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

Das Buch ist da! Sonnabend, über einen Monat vor der offiziellen Premiere am 30.10. im Café Butter, kam das Paket an! Ab sofort ist es im Buchhandel oder beim Verlag bestellbar oder bei Auftritten mit Unterschrift und allem Drum und Dran direkt bei mir zu erwerben. Kost‘ 10 Euro!
Damit man weiß, worum es geht, folgt: Das Vorwort!
Das Leben ist wie ein Glas Bier. Für die einen halbvoll, für die anderen halb leer. Und manchmal eben auch einfach ganz leer oder ganz voll. Oder vielleicht gar kein Glas Bier, sondern ein Glas Brause.
Wenn das Leben wie ein Glas Bier ist, dann ist eine Kneipe wie das Universum, und wir können alle Geheimnisse des Lebens ergründen, indem wir uns an die Bar setzen und beobachten. Stephen Hawking hat einen Bestseller mit dem Titel „Das Universum in der Nussschale“ geschrieben. Hier nun also: „Das Universum in der Eckkneipe“.
Die Kneipe, von der wir hier erzählen, befindet sich irgendwo in Ostberlin. Gegenüber ihren Paralleluniversen in Westberlin, München oder Eisenhüttenstadt hat sie einen entscheidenden Vorteil: Sie ist gleich bei mir um die Ecke.
Den Namen der Kneipe möchte ich nicht verraten, nennen wir sie „Schrödingers“, denn solange man nicht hineinschaut, weiß man nie, ob die Katze auf der Fensterbank noch lebt oder schon tot ist. Man könnte also sagen, dass die Kneipenkatze gleichzeitig lebendig und tot ist und würde damit eindrucksvoll beweisen, dass man keine Ahnung von Quantenmechanik hat. Wenn man sich die Mühe macht, hineinzuschauen wird man jedenfalls erleichtert feststellen, dass die Katze noch lebt.
Außer der Katze haben es sich noch ein paar Stammgäste bequem gemacht: An seinem Platz direkt am Zapfhahn, dort, wo das nächste Bier nie weit entfernt ist, sitzt Kloß. Kloß würde das Leben niemals mit so erfreulichen Analogien wie Biergläsern oder Pralinenkästen beschreiben, denn Kloß hat schlechte Laune. Immer. Kloß ist die Mutter aller Miesepeter und das uneheliche Kind von Bernd dem Brot und Marvin dem Roboter. So wie Licht für jeden Beobachter stets die selbe Geschwindigkeit hat, hat Kloß für jeden Beobachter unabhängig von dessen eigener Stimmung konstant die schlechteste Laune im ganzen Universum, sprich der ganzen Kneipe.
Sein Kumpel Spinne ist das genaue Gegenteil: Nichts tut seiner Lebensfreude Abbruch, kein Thema ist so deprimierend, dass er ihm nicht auch etwas Positives abgewinnen könnte, und selbst wenn all seine Versuche, in seiner Stammkneipe ein schönes Glas Brause zu bekommen, am archaischen Kneiperstolz des Wirtes scheitern, kann das nichts an seiner guten Laune ändern. Man kann auch ohne Brause glücklich sein!
Auf dem Platz an der Wand hockt manchmal Wird-man-ja-wohl-noch-sagen-dürfen-Dirk und sagt unvermittelt »Hitler«. Ganz selten verirrt sich sogar ein gänzlich Fremder in die Kneipe; meist ein junger Mann mit Bart, der aber in der Regel nur mal schnell aufs Klo will, weil er woanders so viel Kaffee oder Beck’s to go getrunken hat.
Und schließlich ist da noch Horst: ein rosa bepulloverter Geist, ein bebrillter blinder Fleck, eine kleine verschüchterte Bewegung im Augenwinkel. Man muss schon sehr genau hinschauen, um ihn überhaupt zu bemerken. So genau schaut aber niemand hin. Horst ist tatsächlich wie Schrödingers Katze, nur eben leider keine Katze, sondern ein derart langweiliger und eigenschaftsloser Mensch, dass sich auf Teufel komm raus niemand findet, der sich die Mühe machen würde, seinen zwischen Existenz und Nichtexistenz oszillierenden Zustand durch Beobachtung festzulegen.
Germanistikstudenten späterer Generationen werden kluge Arbeiten schreiben, in denen sie Horst mit dem Autor dieser Zeilen gleichzusetzen versuchen. Totaler Quatsch, aber immer noch besser, als wenn sie Marketing studieren würden.
(Ich hätte vielleicht Marketing studieren sollen. Dann dürfte ich für andere Werbung machen und nicht immer nur für mich selbst.)
In jeder Galaxie und jeder Kneipe dreht sich alles um das Zentrum beziehungsweise den Wirt. Im Falle der Milchstraße handelt es sich um ein gigantisches Schwarzes Loch von 4,3 Millionen Sonnenmassen, im Falle der Kneipe handelt es sich um Norbert, der auch ein bisschen Übergewicht hat. Ein ärmelloses Unterhemd bringt seinen Bierbauch bestens zur Geltung. Wenn ihn nicht gerade ein Gast stört, verbringt Norbert seinen Arbeitstag in stummer Meditation, wobei er oft zu Einsichten von erhabener Weisheit gelangt, an denen Sie, liebe Leserinnen und Leser, auf den folgenden Seiten teilhaben können.
Viel Spaß beim Lesen! Um mit den Helden dieses Buches zu sprechen: “Hihi, das ist lustig!” — “Isses nich.”