Mit DMA oder EDMA die Bereiche $D100 ändern funktioniert nicht

There are 3 replies in this Thread which has previously been viewed 420 times. The latest Post (October 31, 2024 at 8:49 PM) was by MC64.

  • Moin,

    ich würde gerne die Farbpalette mit EDMA oder DMA modifizieren. Das funktioniert aber nicht.

    Wenn ich die z.B. die Farbe Schwarz ändern möchte, gebe ich POKE $1D00,15 ein und aus schwarz wird rot.

    Wenn ich das selbe mit EDMA 3,1,15,$D100 mache, passiert überhaupt nichts.

    Eine Abfrage mit PEEK ($D100) bestätigt das. Woran liegt das ?

    C64 + TC64-2 / C128 + 1MB REU + RTC + TAPECART / 1541 / 1541-II / 1570 / 1571 / 1581 / SD2IEC

  • Ich kenn mich nicht mit BASIC aus, daher kann ich es nicht genau erklären. Aber ich weiß, dass DMA per default nur auf RAM zugreift. Der Zugriff wird also wahrscheinlich im RAM unter dem IO landen. Auf ASM Ebene gibt es aber ein Flag, was man setzen kann, um das zu ändern und DMA IO Zugriff einzuschalten. Ich bin nicht sicher, ob das bei BASIC vielleicht aus ist?

  • Das IO Flag ist Bit 7 im Bank Byte. Das kann man per EDMA glaube ich nicht zugreifen, aber mit DMA scheint es zu gehen:

    Code
    DMA3,1,15,0,$D100,$80
  • Danke kibo. Mit DMA funktioniert es.:thumbup:

    C64 + TC64-2 / C128 + 1MB REU + RTC + TAPECART / 1541 / 1541-II / 1570 / 1571 / 1581 / SD2IEC