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
Volker! GROSSEN RESPEKT dafür. Boah!
Danke! Und Dir großen Respekt, dass Du bis zum Kommentarbutton am Endes des Univer … äh.. Beitrags vorgedrungen bist ! (Wenn Du hinten raus ein bisschen ins Scrollen gekommen bist, ist das vollkommen in Ordnung ;) Liebe Grüße!
Ich find’s auch toll!
Da kommen auch bei mir Erinnerungen hoch. Ich bin nur etwa ein Jahr jünger als Du und hatte damals auch einen C64. Die Faszination, die davon ausging, habe ich auch so erlebt. Damals habe ich viel BASIC programmiert (Sounds, Sprites), aber auch ein ganz kleines bisschen Maschinensprache.
Natürlich erinnert man sich an “,8,1” (“,8,8” ging auch, hab ich nie kapiert). Aber bei dem SYS-Befehl habe ich erst gestutzt. Ich war überzeugt, es war SYS 64783, aber Du hast Recht. Trotzdem. Dass man sich so eine Zahl über 30 Jahre lang merkt?!
Und ich hab erst SYS 49152 hingeschrieben … und dann noch mal nacgeguckt und gesehen, dass das ar nicht der Reset, sondern nur eine beliebte Einsprungadresse für Maschinensprachroutinen war ;) An Sys 64738 hat mich erst die Recherche wieder erinnert ;)