Hallo Besucher, der Thread wurde 1,3k mal aufgerufen und enthält 1 Antwort

letzter Beitrag von Fröhn am

vdc ram zugriff ?

  • Hallo, also ich bin zu dumm:)
    ich hab mich dumm gegooglet und auch das handbuch verstehe ich nicht, obwohl es ja nur zwei register gibt :)


    ich brauche eine kleien asm routine womit ich das vdc ram beschreiben kann und eine womit ichs lesen kann.
    Am besten im asm code vom 128er monitor.


    Wie man die register beschreibt weiss ich, das mich ich so
    1200 ldx #06
    stx $d600
    bit $d600
    bpl 1200
    lda #80
    sta $d600


    muss ich beim schreiben nach sta auch abfragen ob er geschrieben hat ? oder nur beim setzen vom register in 600 ?


    Ein kleines Beispielprogramm wie ich meinetwegen 128 in speicherstelle null schreibe im vdc ram wäre toll.


    danke im voraus


  • das ready-bit in $D600 muss nur in einigen wenigen fällen berücksichtigt werden, nämlich bei registern, die etwas mit dem VDC-RAM zu tun haben (block copy/block fill/einzelne bytes lesen oder schreiben/speicheradressen ändern).


    alle anderen register können jederzeit geändert werden, ohne dass es seiteneffekte gibt.


    Zitat

    Ein kleines Beispielprogramm wie ich meinetwegen 128 in speicherstelle null schreibe im vdc ram wäre toll.


    danke im voraus


    leider kann man den VDC-speicher nur indirekt beschreiben, dafür gibt es nämlich ein paar VDC-register:


    VDC-Register $12: VDC-RAM adresse (high-byte)
    VDC-Register $13: VDC-RAM adresse (low-byte)
    VDC-Register $1F: VDC-RAM datebyte


    das ganze geht nun so:


    man schreibt in register $12 und $13 die adresse, auf die man zugreifen möchte und dann kann man über register $1F das entsprechende byte lesen oder schreiben.


    wichtig: vor dem lesen oder nach dem schreiben eines bytes nach register $1F muss auf das ready-bit in $D600 gewartet werden.


    für das schreiben eines bytes sieht das dann so aus:


    w1:
    BIT $D600
    BPL w1
    LDA #$12
    STA $D600
    LDA #$10
    STA $D601
    LDA #$13
    STA $D600
    LDA #$00
    STA $D601
    LDA #$1F
    STA $D600
    LDA #$BC
    STA $D601
    w2
    BIT $D600
    BPL w2


    diese routine würde das byte #$BC an adresse $1000 im VDC-RAM speichern. beim schreiben mehrerer bytes geht es einfacher, da bei jedem speicherzugriff automatisch die adresse in den register $12 und $13 um 1 erhöht wird.