Etwas Assembler für das BASIC Labyrinth - auf dem C64

Поділитися
Вставка
  • Опубліковано 1 жов 2024

КОМЕНТАРІ • 22

  • @testales
    @testales 3 місяці тому +6

    Nach gut 30 Jahren kann ich mich tatsächlich immer noch an die grundlegenden Assemblerbefehle erinnern. :-) Ich hatte damals ein Buch mit einem kompletten, kommentierten ROM-Listing, das hatte ich quasi unter dem Kopfkissen. Nun dann: SYS 64738 ;-)

  • @birko7171
    @birko7171 3 місяці тому +3

    Coole kleine Routine! Ich mag das sehr, das Basic mit kleinen Routinen zu pimpen :).
    Eine Anmerkung: ich bin mir nicht sicher, aber kann es sein, dass du das Y Register nicht initial einmal (wenigstens) auf 0 setzt? Du nutzt es bei der Ausgabe. Es könnte allerdings sein, dass, ohne Initialisierung, das Register noch andere Werte als 0 enthält. Aber vielleicht habe ich dein Listing auch nicht ganz sehen können.

    • @C64
      @C64  3 місяці тому +2

      Danke für den Hinweis, das werde ich noch einbauen. 🙂

    • @kackfass8893
      @kackfass8893 3 місяці тому

      Falls das nicht gemacht wurde, muss er y mit 0 initialisieren. Ist ja y indiziert.
      Desweiteren wäre eine Überlegung, die Werte aus der Zeropage weiter zu benutzen und nicht in 251 usw zu speichern.

  • @beonura5094
    @beonura5094 2 місяці тому +1

    Bin ich blöd weil ich Assembler immer noch nicht verstehe? Irgendjemand hat sogar mal behauptet das man Assembler in einer Stunde lernen kann, da glaube ich aber nicht!

    • @C64
      @C64  2 місяці тому +1

      Nein, bist Du sicher nicht. Im Prinzip musst Du nur lernen, wie der Prozessor funktioniert mit seinem Akkumulator und X- bzw. Y- Register. Außerdem was die verschiedenen Speicherstellen im C64 machen. (Beispielsweise ändert die Adresse 53280 die Hintergrundfarbe des Bildschirms) Dann sind es nur eine "´Hand voll" Befehle, die Werte erzeugen, berechnen und im Speicher hin und her schieben...
      Falls Du es noch nicht gesehen hast hier mein Einstieg in Assembler: ua-cam.com/video/NKOucB0o4YQ/v-deo.html
      Vielleicht hilft es Dir beim Verständnis. 🙂

  • @captainoffuture4488
    @captainoffuture4488 3 місяці тому +1

    Clevere Idee, das mit der Hintergrundfarbe zu lösen. Die fehlende Initialisierung des Y-Registers wurde bereits erwähnt. Aber bei 6:20 hast du auch noch einen kleinen Fehler in deiner Erklärung: Zuerst wird per SEC ("Set Carry-Bit") das Carry-Bit gesetzt. Wenn du nach der Subtraktion des Low-Bytes (251) unter 0 kommst, wird das Carry-Bit gelöscht und das *gelöschte* Carry-Bit wird bei der zweiten Subtraktion vom High-Byte (252) abgezogen.

    • @C64
      @C64  3 місяці тому +1

      Ah, danke für die Erklärung. Da schwamm ich auch ein bisschen, weil ich das mit der Subtraktion und dem Carry-Bit nicht geblickt hab. Es wird also abgezogen, wenn es auf 0 steht? 🤔🙂

    • @captainoffuture4488
      @captainoffuture4488 3 місяці тому

      @@C64 Exakt. Ich glaube das alles kommt daher, weil der 6502/6510 Prozessor intern garkeine Subtraktion kennt sondern einfach das Komplement der abzuziehenden Zahl aufaddiert.

  • @frankb763
    @frankb763 3 місяці тому +1

    2:22 Das ist wirklich egal. Ich habe zB. für $ffd2 eben Print als Label genommen. Schön wieder was in Ass zu lesen 🙂

    • @C64
      @C64  3 місяці тому

      Auf Twitch habe ich heute gestreamt und das eingebaut. Das Video ist noch ne Weile online. 😉

    • @C64
      @C64  3 місяці тому

      Auf Twitch habe ich heute gestreamt und das eingebaut. Das Video ist noch ne Weile online. 😉

  • @Lofote
    @Lofote 3 місяці тому +1

    Es triggerte schon wirklich leute, wenn du assembler dezimal eingibst? 😅

    • @C64
      @C64  3 місяці тому

      Es gibt ja immer so einen harten Kern. 🤭

    • @Lofote
      @Lofote 3 місяці тому

      @@C64 krass :-D selbst der c128 MONITOR hat dezimale zahlen bei der eingabe verstanden und dann halt umgewandelt. Man muss sich die welt ja nicht unnötig kompliziert machen ;) aber ja, gibt immer extreme leute :-D gibt ja auch leute, die die opcodes und alles im hexeditor lieber eingeben :-D

    • @kackfass8893
      @kackfass8893 3 місяці тому

      ​@@Lofotedie Frage ist doch eher ob du primär mit Basic oder Assembler arbeitest. Wenn Basic benutzt man im Editor dezimal und kennt die Adressen. Hat man Assembler programmiert dan hex, war bei mir so.

    • @Lofote
      @Lofote 3 місяці тому

      @@kackfass8893 Mmh, die Adressen hab ich meist in Hex eingegeben, also z.B. $D020 für die Rahmenfarbe. Aber wenn es dann um Werte ging, die ich z.B. per LDA in das X-Register gefüllt habe, und ich z.B. von 40 runterzählen wollte, ... warum sollte ich da erst nach Hex konvertieren müssen? :)... Das hab ich den Computer schon selbst machen lassen, wofür ist er da :-D und wie gesagt, selbst der doch recht beschränkte C128 MONITOR konnte das problemlos.

  • @Drachen257
    @Drachen257 3 місяці тому +1

    Aber Andreas im C64 Studio gibt es doch dafür einen Umrechner den Calculator. Zu finden im Rider Windows. Dort braucht du dann nur die Dezimal eingeben und er spuckt dir den Hex-Zahl auf. Ansonsten ein schöne Routine.

    • @C64
      @C64  3 місяці тому

      Oder man schreibt‘s direkt dezimal hin… 🤭
      Aber danke für den Tip. Hab mir die Tools noch garnicht angesehen. 😅

    • @Lofote
      @Lofote 3 місяці тому

      Aber auch da feagt man sich: warum :-D