Beiträge von M. J. im Thema „Frage zu Kick Assembler“

    Mal unabhängig von der Assemblersyntax '.var' betrachtet: Die Art und Weise, wie Du cl1, cl2 und sep verwendest, entspricht eher der Definition einer Konstanten, nicht einer Variablen, also in C bzw. Pascal so etwas wie

    Code
    #define CL1 0x02
    bzw.
    CONST
      CL1 = $02;

    Deutlich wird das z. B. an Deinem Beispiel

    Code
    .var myColor = 1
    
    
    ...
    
    
    lda #myColor
    sta $d020

    Das '#' bei lda signalisiert bereits das Laden einer Konstanten, nicht einer Variablen. Es ist daher nicht ganz klar, was Dein Programm eigentlich leisten soll. Mit den Befehlen

    Code
    .byte cl1
    .byte cl2
    ...

    wird im Speicher nur eine Liste von konstanten Werten erzeugt. Diese dann einzeln über

    Code
    lda colsrc

    in den Akkumulator zu laden, dürfte kaum viel Sinn ergeben. colsrc ist nur die Basisadresse der Konstantenliste, und 'lda colsrc' lädt den ersten dort abgelegten konstanten Wert, entspricht also direkt

    Code
    lda #cl1

    Um Sinn zu ergeben, müßte man auf diese Liste in irgendeiner Form indiziert zugreifen, sei es über

    Code
    lda colsrc, x
    oder
    lda #<colsrc
    sta zp
    lda #>colsrc
    sta zp + 1
    ...
    lda (zp), y

    Natürlich kann man den Wert an der Adresse colsrc mit einem neuen Wert überschreiben. In dem Fall wäre colsrc eine echte Variable, bzw. die Basisadresse eines Arrays. Das hängt ganz davon ab, was Du vorhast.