Erstellt: 12. Dezember 2012 (zuletzt geändert: 13. Mai 2023)

C64 Assemblerprogrammierung

13.05.2023 – Update auf PHP 8.1

Eine kurze Info:
Ich musste heute kurzfristig von PHP 7.4 auf die aktuelle Version 8.1 umstellen, da ich sonst monatlich extra für den erweiterten 7.4 Support hätte zahlen müssen.
Leider ging die Umstellung nicht reibungslos, da einige Plugins (z. B. die Syntaxhervorhebung und die Slideshow) nicht mit 8.1 kompatibel sind.
Es kann also zu Darstellungsproblemen kommen!


Nach langer Zeit, möchte ich mich mit der C64 Assemblerprogrammierung beschäftigen, aber lasst mich am Anfang beginnen 😉 :

Es begab sich zu einer Zeit…

dass ein 13jähriger, Eckernförder Junge (der auf den Namen Jörn hört), seinen ZX81 und sein geliebtes VCS-2600 verkaufte, um sich mit seinem Ersparten und einer weiteren Spende seiner Eltern einen Brotkasten zuzulegen.


Hier einige Bilder meines über 30 Jahre alten C64:

[slideshow_deploy id=‘4660′]

Die 1541 wurde allerdings vor einigen Jahren über ebay hinzugekauft, meine hatte ich verkauft um mir den Amiga zulegen zu können. Heute bereue ich diesen Verkauf, aber irgendwie musste das Geld für die neue „Freundin“ zusammengekratzt werden.

Kaum war ich im Besitz meines C64, wurde auch gleich der vermisste Reset-Taster eingebaut. Im Laufe der Jahre fanden noch ein ROM-Umschalter und ein weiterer Reset-Taster für die Floppy Einzug ins geräumige Gehäuse des Brotkasten.

Meine angesammelte Hardware habe ich übrigens unter Meine „altertümlichen“ Gerätschaften verewigt.


C64 Assemblerprogrammierung

Mittlerweile habe ich die 40 hinter mir gelassen, arbeite als Software-Entwickler und wurde vom Retro-Virus infiziert. Da ich seinerzeit für den C64 nur sehr wenig programmiert habe, später auf dem Amiga ging es erst richtig los, reizt es mich jetzt endlich mal mit der C64 Assemblerprogrammierung zu beginnen.

Jeder der ein ähnliches Interesse hegt, sei hiermit eingeladen, mich auf meiner Reise zu begleiten. Ich lerne selbst erst wieder, wie man für den C64 Programme entwickelt, während ich diese Seiten schreibe.

Falls ihr noch keinerlei Erfahrung mit der Programmierung habt, findet ihr auch Infos zu Zahlensystemen und eine ganz kurze BASIC-Einweisung. Außerdem gibt es Links zu allen benötigten Programmen und eine kurze Erklärung, wie diese eingerichtet werden.

Da jede noch so lange Reise mit dem ersten Schritt beginnt, machen wir doch einfach den ersten…


Schrott!!Naja...Geht so...Ganz gut...SUPER! (76 Bewertungen | Ø 4,70 von 5 | 93,95%)

Loading...


Mini-Blog Schlagworte…

48 Gedanken zu „C64 Assemblerprogrammierung“

  1. Hallo Jörn,
    erst mal vielen Dank für die Mühe die du dir gegeben hast für diese Seiten voller Information und Wissen an uns weiter zu geben. Wie ich lesen konnte haben wir mit der gleichen Hardware angefangen um das Programmieren zu erlernen : ZX81… usw. 😉 . Da ich über 20 Jahre auf einem IBM Mainframe programmiert habe, kann ich von mir behaupten dass ich ein wenig Erfahrung in diesem Domain habe, jedoch habe ich nie in Assembler programmiert!
    Es war schon immer ein Kindheitswunsch diese Sprache ansatzweise zu beherrschen und bin dann zwangsläufig auf deinem Tutorial gelandet.
    So genug geschwafelt und an die Arbeit :-))))

    vielen Dank….

  2. Hallo Jörn,
    seit Jahren stöbere ich auf deiner Seite herum und versuche mich fast täglich beim Assembler-Programmieren!

    Tolle Seite über tolle Computer!

    viele Grüße!

    1. Freu dich nicht zu früh.
      Wie dir evtl. aufgefallen ist, hat sich seit dem Jahreswechsel nicht wirklich viel getan.
      Ich sehe aktuell nicht, dass ich wirklich Zeit finde, mich mit der Seite zu beschäftigen.

      Sorry,
      Jörn

  3. Wunderbare Seite. Ich komme eigentlich von der anderen 8-Bit Seite, aber meine Vita ist ganz ähnlich. Mit Zeitungsaustragen nebend er Schule seinerzeit den ersten CBM Pet, dann Atari 800 gekauft, das erste User-Magazin gegründet, Basic-Programmierung gemacht und Fachartikel für Chip geschrieben – auch für C64 und C128, und irgendwann dann – nachdem man einen beruf ergriffen hatte, der Nichts mit Computern zu tun hatte weil die den Massenmarkt noch nicht erreichten – dann auch beruflich das Hobby zum Broterwerb gemacht. Heute bin ich im Bereich E-Business tätig, gestalte Online-Shops und bin auch von der Retro-Welle angerührt. Ende des Jahres soll ja “The 64” auch in Deutschland zu haben sein. Ich hoffe darauf, und möchte dann endlich mal das damals noch nicht mögliche möglich machen und in Assembler, evtl. aber auch in Basic via CBM prg Studio-IDE (müsste doch eigentlich auch wie ein Basic-COmpiler zu schnellem Code führen) nochmal neue Spielideen umsetzen auf dem C64.

    Ich würde mich freuen wenn das Thema The 64 hier auch aufgegriffen würde.

    1. Hallo.
      Schön, dass dir die Seite zusagt.

      Das CBM prg Studio, ist kein Basic-Compiler. Die Programme sind 1:1 identisch mit denen, die du direkt auf dem C64 eintippst.
      Wie wäre es also mit Assembler?

      Erstmal muss The64 überhaupt erscheinen. Wenn ich dann etwas von ARM SoC lese, ist das doch nur ein Emulator mit hübschem Gehäuse. Die tragbare SX-Version sieht zwar nett aus, finde ich aber insg. auch uninteressant. Ich möchte allerdings nicht zu negativ klingen und werde einfach mal sehen, wie die Meinung/Stimmung in der Szene, nach dem Erscheinen so ist.

      1. Danke für den Hinweis. Ich werde dann lieber beim Original bleiben, mir evtl. nen C128D zulegen. Ich habe über den Emulator mal etwas mit dem Laser Basic rumprobiert, für das es ja auch nen Compiler gibt. Mit Assembler werde ich vermutlich mein Programmziel nicht in der gewünschten Zeit erreichen. Laser Basic scheint mir sehr interessant zu sein. In Sachen neuer C64 gibt es ja wieder was Neues aus Deutschland. Die deutsche Firma individual computers hat sich die Rechte am Namen Commodore gesichert. Aktuell produziert die Firma neue Gehäuse und hat angekündigt, bis zum Weihnachtsgeschäft einen neuen C64-kompatiblen Rechner namens C65 reloaded MK3 auf den Markt bringen zu wollen.


        Admin – 27.02.2018: „Toten“ Link entfernt.

        1. Beim C64 wird eine BASIC-Zeile, wie z. B. 10 PRINT"HALLO" nicht komplett als Text gespeichert.
          Intern sieht das so aus: 0A 00 99 22 48 41 4C 4C 4F 22
          0A 00 = Zeilen-Nr. 10
          99 = Token fürs PRINT
          22 48 41 4C 4C 4F 22 = Text "HALLO"

          Daher ja, das PRG-File ist in dem Fall ein BASIC-Programm.

          1. Sooo geht das. Spannend! Wieso stand so was nie in den Basic-Büchern der guten alten Zeit? Danke für die Info!!!

  4. Guten Morgen
    Ich bin zufaellig auf die seite geraden, programmiere auf dem c64 einen hex editor den anhand der zu ladenen datei dad laufwerk selbst berechnet, ein bereich kann mskiert und gestartetcwerden umschaltun des wertes erfolg binaer, dezimal oder durch +¬ bewegung im hexafenster dur ch pfeiltasten dateien koennen geladen und gespeichrt werden. Adresse 8-11. Desweiteten programmiere ich noch in qbasic.
    Mfg lars

    1. Igitt, das kommt davon, wenn man Links manuell einfügt. Ein kleiner Zahlendreher und nichts geht mehr. 😉

      Danke für den Hinweis, jetzt sollte der Link wieder klappen.

      Gruß,
      Jörn

  5. Hallo Gemeinde, ich bräuchte mal eine kurze Hilfe. Ich bin zwar noch Anfänger im Codes, das aber schon seit 30 Jahren 🙂 ich versuche verzweifelt den Basiccode open 1,4,1 in Assembler zu machen und auch noch den dazugehörenden Printbefehl. Also das Gerät öffnen und die Daten an den Drucker senden. Ich suche nun schon lange rum und finde einfach nichts, welche Register ich laden muss undxwohon ich springen soll. Wäre echt gut wenn mir einer eine Hilfe dazu schreiben könnte….. Danke euch…. Frank

    1. Ich habe ein directory prg so umgeschrieben das es entweder auf Bildschirm oder Drucker ausgibt 25 Zeilen zu 45 oder weniger muesst ich nachschauen Und es blättert seitenweise nach 20 22 oder so Zeilen weiter… Mfg lars

  6. Echt geil wie du das Programmieren des C64 beschreibst! Ich bin immer am Abzählen der der Taktzyklen des 6510 gescheitert; um was halbwegs flackerfreies im Rasterzeileninterupt hin zubekommen…

  7. Wir haben schon miteinander geplaudert. Deine Seite rockt, mach’ weiter so! Geniale Tutorials 🙂

    Wie wär’s mal mit was zu Copperbars?

    1. Hallo,
      danke fürs Lob.

      Ein paar Grundlagen zu Rasterbars gibt es ja schon. Fehlt dir da noch etwas oder möchtest du für den Amiga-Programmieren, da du den Begriff Copperbars verwendest?

      Gruß,
      Jörn

      PS: Dein Wunsch nach einer Einführung zum Thema Sprite-Multiplexer habe ich nicht vergessen, der steht noch auf der Liste. Ist ja auch erst ein Jahr her 😉 .

  8. Eine wirklich tolle und interessante Seite! Es macht Spaß hier zu stöbern und immer wieder zu denken “Ach ja, so war das…”

    Top!

  9. Hallo, total interessante Seite auf Deutsch. Ich bin seit die online ist fast täglich am lesen. Leider bin ich in programmieren nicht so die Leuchte, hoffe aber durch viel lesen doch mal die Kunst zu erlernen. Ich hoffe die Seite bleibt ewig on und es weitere Tutorials in Erklärungen rund um die Commodores in Deutsch. Interessant ist auch http://www.mingos-commodorepage.com. Dort kann man auch viel n deutsch erfahren . Vielleicht helfen dir einmal,ein paar Pros mit den Ausbau deiner Seite aus dem forum64.de gibt ein Haufen Leute mit tollen wissen. Leider werden dort nie wie es in anderen Foren (zB. Ich Bau mir einen Rennwagen)die sich mit anderen Themen beschäftigen genaue begleitende Anleitungen von den Usern online gestellt. Die man dann zwecks lernen nachspielen könnte. Sowas vermisse ich dort. Ich finde es toll sich mit einer ziemlich abgeschlossenen Thematik wie den C64 zu beschäftigen, wenn man heute in Windows was lernt kann man hoffen noch ein paar Dinge beim nächsten Update zu können, sowas nimmt mir jede Lust sich mit der ständig ändernden Pc Thematik zu befassen. Mir ist erst heute bewusst was für eine Tragik hinter den Verlust der Fa. Commodore durch den Konkurs steht. Abgeschlossenes System das man einfach komplett durchschaut gibt es heute leider nicht einmal mehr im konsolenbereich

  10. Ja laaange ist es her… knapp mehr als 30 Jahre habe ich in den Unterlagen eine mini Sammlung an Papieren gefunden, die damals mit Mr. Cursor angereichert wurden. Hier nun der erste weg der “Multi Raster Routine” die zur damaligen Zeit noch nicht vollendet war, aber das Zeitalter der RasterRoutine eingeläutet hat.
    LDA#$BC
    CMP$D012
    BNE$ [auf CMP]
    BIT$EAEA
    LDA#$15
    STA$D018
    LDA#$C8
    STA$D016
    BIT$EAEA
    LDX#$C2
    CPX$D012
    BNE$ [auf adresse CPX]
    LDY#$00
    JMP$[auf JSR]
    JSR$[auf adresse LDX#$06]
    LDA#$19
    STA$D011
    RTS
    LDX#$06
    DEX
    BNE$ [ auf DEX]
    LDX#$06
    nop
    nop
    JMP$[ auf LDA$1500,Y]
    nop
    nop
    nop
    nop
    nop
    LDX#$07
    LDA$1500,Y [ eintritt von ende]
    STA$D020
    STA$D020
    LDA#$00 [Sprungmarke * siehe unten]
    STA$D021
    LDA$1600,Y
    STA$D020
    INY
    CPY#$30
    BCS$ [Sprungmarke LDA '$00 siehe unten]
    DEX
    BNE$ [Sprung auf LDA$1550,Y ..siehe unten]
    LDA$1551,Y
    STA$ ( auf Sprungmarke *)
    LDX$ 1600,Y
    LAD$ 1500,Y
    INY
    NOP
    NOP
    BIT$D020
    LDX$154F,Y
    STX$D021
    STA$D020
    STA$D020
    JMP$ [adresse zurück auf LDX #$07]
    LDX#$06
    DEX
    BNE$ [ auf adresse DEX]
    LDA#$00 [ Sprungmarke auf BCS$]
    STA$D020
    STA$D021
    LDA#$C8
    STA$D016
    LDA#$15
    STA$D018
    LDX#$02
    DEX
    BNE$ [ Sprung auf DEX]
    RTS
    LDA$1550,Y [ Sprung von BNE$..siehe oben]
    STA$ [ Sprung auf * .. LDA#$00]
    NOP
    NOP
    NOP
    BIT$EA
    NOP
    NOP
    NOP
    JMP$ [ Sprung auf LDA$1500,Y]

    Das waren die ersten Gehversuche..30 Jahre her… Mr. Cursor hat sie dann verfeinert. bzw. Der Spezi, der kein zuhause hatte..:-)

    LEVEL 99, Mr.Magic..

    Gruß an die alte Bande..wenn Ihr noch lebt….

  11. Hallo Jörn, kam zufällig auf deine Seite. Bei mir laufen noch 2 C64 und steuern meine Eisenbahn. Eigentlich 1 64er und ein 128er der läuft aber im 64er Modus. Das komm weil das Programm ziemlich fertig war als ich den 128er bekam. Bis jetzt liefen Beide einwandfrei, und das seit über 30 Jahre. Programmiert habe ich mit Super-Basic.

    1. Hi.
      Da sieht man mal wieder, wie zuverlässig der C64 ist. Super-Basic sagt mir jetzt erstmal nichts, allerdings habe ich mich auch nie viel mit BASIC beschäftigt.
  12. Hallo interessant zu sehen, dass es immer noch Leute gibt die sich noch mit der Programmierung am C64 beschäftigen. Ich habe ein Problem, bei dem du mir vielleicht behilflich sein könntest. Würdest mir und meinem Schwager ne Freude bereiten. Wir spielen gelengtlich das Spiel “Soccermaster”, einer der bekanntesten und beliebtesten Fussball Manager. Nun würden wir gerne die Mannschaften und Spielernamen, gegen aktuelle Vereine ändern. Leider ist dort ein Schutz im Spiel, so dass ich die Programmierliste garnicht einsehen kann. Ich gehe wie folgt vor…… LOAD”Soccermaster”,8,1……nach dem Ladevorgang gebe ich dann nicht RUN ein sondern LIST und dann folgt das Problem. Anstatt sich die Programmierliste öffnet, kommt 10 SYS2002:REM (c) BY Nils Kron. Wie kann ich das umgehen oder wie komme ich in die Programmierliste ? Wäre super wenn du uns weiter helfen könntest

    1. Hi,
      mehr als diese Zeile wirst du vom BASIC auch nicht sehen, da es sich um ein Assemblerprogramm handelt.

      Um die Vereinsnamen zu ändern, müsstest du entweder

      • den original Sourcecode haben, anpassen und das Programm erstellen
      • das Programm disassemblieren, ändern und neuerstellen
      • es (z. B. mit einem Hexeditor) patchen

      Da das erste wohl eher unwahrscheinlich ist, bleiben nur die letzten beiden Punkte.

      1. Diese Aufgabe löst man am besten mit einem “Diskmonitor”, der Byte für Byte den gesamten Inhalt der Diskette durchgeht und abbildet.
        Sehr oft finden sich die Stringbausteine im Klartext, sie können dann direkt abgeändert werden, ohne die Programmstruktur zu beeinflussen.

  13. Hallo!
    Ich bin auch JG 1973 und seit den 80ern mit dem Virus infiziert. Damals war halt BASIC angesagt, Assembler war was für die “Experten”, die Zeit verging so schnell, bald (1988) war der erste PC da und heute programmiere ich C#, ASP.NET, MS SQL Server usw.

    Seit einem Jahr sammle ich die alten Dinger (bisher 3 x C64, A500, A600, A2000, Atari ST1040) und möchte nun vieles nachholen und da gehört auch das Programmieren des 6510 dazu.

    Spannende Sache, muss ich sagen, die Bauweise und Fähigkeiten der alten kleinen Kiste ist unglaublich.

    Tolle Seite, mit viel Liebe und Herzblut gemacht, Daumen hoch!

    Viele Grüße aus Gröbming (Austria)

    Thomas

  14. Hallo !
    Mein Name ist Alexander (43 ) , bin ebenso mit VC-20 + C64 aufgewachsen ! Mehr als ein wenig Basic war bei mir damals nicht drin da ich einfach zu Faul war etwas zu lernen 😉 Dafür interessiere ich mich heute umso mehr dafür und bin gerade dabei Assembler 6502 / 6510 zu erlernen , zumindest versuche ich es zu verstehen , was eine echte Herausforderung für mich darstellt da ich in Mathe damals einfach nur schlecht war 🙂
    Vielen Dank für die tolle Seite hier und ich finde es schön das es noch Leute gibt die sich mit der Materie befassen und Ihr Wissen an andere weitergeben !

    LG aus Mainz 😉
    Alex

    1. Hi Alex,

      als ich die Seite hier gerade sah kamen auch bei mir die Erinnerungen wieder hoch. Ich hatte damals auch mit 6502 Assembler angefangen. Allerdings ging das bei mir auch ohne Mathe 🙂

  15. Hallo Jörn, sag mal gibt es den Assemblerkurs als PDF o.ä.? Tue mich mit dem lesen am Bildschirm immer sehr schwer….das alter 😉

    Grüße aus Kropp

    1. Hallo Roman,
      bisher nicht.

      Ich habe schon mal mit einem PlugIn ‘Konvert WordPress to PDF’ experimentiert, das Ergebnis war allerdings sehr ernüchternd. Ich hätte zuviel Zeit in die Nachbearbeitung stecken müssen und die fehlt mir (immerhin gibt es noch soviel ‘Neues’, über das ich schreiben möchte).

  16. Hallo,
    wollte einfach auch mal einen Gruß hinterlassen.
    Habe auch die 40 hinter mir gelassen und bin mit Laser210 und C64 ganz in der Nähe von Eckernförde gross geworden. Ich habe mehrmals versucht in Assembler einzusteigen, doch irgendwie fehlt mir wohl der interllektuelle Hintergrund, soll heissen bin wohl nicht talentiert…schade.
    Trotzdem danke für diesen interessanten Blog und einen Guten Rutsch ins neue Jahr 🙂
    Roman

  17. Hallo!

    Es ist absolut toll, dass es noch Leute gibt, die sich eine solche Mühe
    machen und eine so “informativ-nostalgische” Website aufbauen. Hier
    steckt “viel Liebe drin”, wenn ich das so sagen darf. 🙂
    Befinde mich auch schon seit einiger Zeit auf einem Retrotrip und
    experimentiere mit Assembler.

    Frohe Weihnachten und einen guten Rutsch!

    1. Hi,
      danke fürs Lob!

      Eigentlich schreibe ich nur das auf, was ich selbst schon immer wissen wollte, schön, dass sich auch ‘andere’ dafür interessieren.

      Ebenfalls einen schönen 2. Weihnachtstag und einen guten Rutsch.

  18. Durch meinen aktuellen Retro-Trip bin ich auf diese Seite gestossen. Es gibt leider wenig deutsche Seiten, die sich mit diesem Thema heute noch beschäftigen. WOW! Toll gemacht und sehr informativ!. Ob ich doch nochmal anfange 6510 Assembler in meinen Alter(40+) zu lernen?Ich habe damals in den 80igern zwar schon damit angefangen, aber ich konnte dem Amiga dann einfach nicht widerstehen 🙂 Jucken tut es auf jeden Fall schon. Alleine schon wegen dem Nostalgierflair 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Protected by WP Anti Spam