Turbo Macro Pro Verständnisfrage

Es gibt 7 Antworten in diesem Thema, welches 1.881 mal aufgerufen wurde. Der letzte Beitrag (9. April 2019 um 17:39) ist von ogd.

  • Hallo,

    nachdem ich mich in der Vergangenheit überwiegend mit der Restauration und Reparatur meiner Hardware beschäftigt habe, möchte ich mich nun der Assemblerprogrammierung widmen.

    Zum Einstieg habe ich mich etwas mit dem "Maschinensprache Buch zum C64" beschäftigt.
    In dem Buch gibt es eine kleine Routine, welche die Zeichendarstellung auf die Grafikdarstellung umschaltet und eine weitere welche diese wieder zurückschaltet.

    Habe die paar Zeilen Code in den Assembler Turbo Macro Pro eingegeben (siehe Bild 1) und assembliert --> Ergebnis wie erwartet, siehe Bild 2.
    Wenn ich jetzt das exakt gleiche Programm nochmals (durch Drücken der Taste 3) assemblieren lasse, dann kommt Bild nummer 3 zustande.
    Und genau das verstehe ich jetzt nicht mehr.

    Warum wird beim zweiten Assemblieren der Programmteil zum Einschalten des Grafikmodus ausgeführt?
    Ich dachte beim Assemblieren wird nur der Code im Speicherbereich ab $c000 abgelegt?

    Kann mir jemand dieses Verhalen erklären?

    Bild 1:
    Bitte melde dich an, um diesen Anhang zu sehen.

    Bild 2:
    Bitte melde dich an, um diesen Anhang zu sehen.

    Bild 3:
    Bitte melde dich an, um diesen Anhang zu sehen.

  • Wenn Du nach dem assemblieren "s" drückst wird der Code ausgeführt.

    Bitte melde dich an, um diesen Link zu sehen. C64 Speichererweiterung, Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen. Toolcollection fürs TapeCart, Bitte melde dich an, um diesen Link zu sehen.,
    Bitte melde dich an, um diesen Link zu sehen. [Assy 250466, 1541U2+, MixSiD, Keyman64, Overlay64, Reprom64, AC/64], Bitte melde dich an, um diesen Link zu sehen. [2xARMSID],
    Bitte melde dich an, um diesen Link zu sehen. [Rev 8A, TK68EC020], Bitte melde dich an, um diesen Link zu sehen. [Rev 1.3, ACA630], Bitte melde dich an, um diesen Link zu sehen. [Rev. 2B, ACA1233n]

  • Hallo Markaine,

    genau das habe ich ja nicht gemacht und trotzdem wurde das Programm ausgeführt.

    Das passiert aber immer erst beim zweiten Assemblieren, nach dem ersten Mal sah es wie erwartet aus, siehe Bild 2.

  • In welchem Speicherbereich liegt der von Dir verwendete Assembler? Überschreibst Du den evtl. teilweise mit Deinem Programm?

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

  • Jou, daran lag es wohl...

    Nach einiger Recherche bin ich zu dem Ergebnis gekommen:

    1. Turbo Macro Pro verwendet den Speicherberich $8000 aufwärts.
    2. Der Source Code belegt $7FFF abwärts.

    Hatte dann mein Programmstart nach $1000 gelegt und siehe da, es funktionierte!

    Danach habe ich eine Routine zum Löschen des Grafikrams $E000 bis $FFFF eingefügt.
    Damit habe ich mir dann gleich wieder menen Assembler überschrieben...

    So langsam wird mir bewusst, warum viele mittlerweile einen Crossassembler benutzen...

  • Es gibt eine Version für die REU (ist in Ultimate 1541/64 oder im Turbo Chamleon integriert), belegt dann keinen Speicher, alles andere macht tatsächlich nur bei sehr kleineren Projekten Sinn. Du kannst übrigens auch direkt auf die Disk assemblieren (ich weiß den Shortcut nicht auswendig).

    Bitte melde dich an, um diesen Link zu sehen. C64 Speichererweiterung, Bitte melde dich an, um diesen Link zu sehen., Bitte melde dich an, um diesen Link zu sehen. Toolcollection fürs TapeCart, Bitte melde dich an, um diesen Link zu sehen.,
    Bitte melde dich an, um diesen Link zu sehen. [Assy 250466, 1541U2+, MixSiD, Keyman64, Overlay64, Reprom64, AC/64], Bitte melde dich an, um diesen Link zu sehen. [2xARMSID],
    Bitte melde dich an, um diesen Link zu sehen. [Rev 8A, TK68EC020], Bitte melde dich an, um diesen Link zu sehen. [Rev 1.3, ACA630], Bitte melde dich an, um diesen Link zu sehen. [Rev. 2B, ACA1233n]