Beiträge von wkorn im Thema „Frage zu R/W Pin des Expansionports“

    Das wurde weiter oben von Unseen in Bitte melde dich an, um diesen Link zu sehen. erklärt. Der 6502 macht jeden Zyklus einen Speicherzugriff. Auch dann, wenn es eigentlich keinen braucht.

    Anscheinend passiert das bei LDA ($14),Y sobald er die Adresse aus $14 und $15 hat, aber bevor er den Inhalt von Y dazuaddiert. Das Ergebnis dieses Zugriffes wird ignoriert. Da Y hier 0 enthält macht er zwei Zugriffe auf dieselbe Adresse, benutzt wird nur das Ergebnis des zweiten.

    OK - danke. Das hatte Unseen in Bitte melde dich an, um diesen Link zu sehen. auch nochmal so erklärt, dann aber wieder gelöscht. Dann gehe ich mal von der Arbeitshypothese aus, dass es bei jedem Zyklus einen Speicherzugriff gibt. Das erklärt die Beobachtung jedenfalls.

    Es sind zwei Lesezugriffe auf die Zeropage, die Zieladresse steht in $14 und $15.

    Das erklärt aber nicht, warum /ROML zweimal auf LO geht. Die beiden Zugriffe auf die Zeropage sollten nach meinem Verständnis von /ROML nicht dazu führen, dass /ROML auf LO geht, da die Zeropage nicht im entsprechenden Adressbereich des ROM liegt.

    Wie im c64-peek zu sehen ist, geht der /ROML PIN zweimal auf LO, obwohl nur ein PEEK ausgeführt wurde. Meine Erwartung war, nur eine fallende Flanke zu sehen. Warum sieht man zwei Flanken?

    Weil PEEK in BASIC mit einem LDA ($14),Y implementiert ist und das einen Dummy-Lesezugriff auf die Speicheradresse vor der Addition von Y durchführt. Da bei PEEK an der Stelle Y immer 0 ist siehst du zwei Lesezugriffe auf die gleiche Adresse, das Ergebnis des ersten wird verworfen.

    kannst Du nochmal sagen, was man setzen muss, damit man ins RAM eines Carts schreiben kann?

    Geht meines Wissens nur im Ultimax-Modus, also /GAME auf low und /EXROM auf high am Expansionsport.

    Danke schon mal für die vielen Antworten. Das mit dem Peek muss ich nochmal hinterfragen - meine 6510-Assembler-Zeiten sind schon etwas länger her. Wenn ich mich recht erinnere, dann ist LDA($14),Y eine indirekte, indizierte Adressierung über die Zeropage. D.h. ein Lesezugriff auf die Zeropage zur Ermittlung der Basisadresse, dann die Addition von Y und schließlich der eigentliche Zugriff auf die gewünschte Adresse. Warum also zwei Zugriffe auf die gleiche Adresse? Oder verstehe ich da was falsch?

    Hi,

    ich versuche gerade das Timing des Expansionports zu verstehen. Ich habe den /EXROM Pin auf LO gelegt und dann mit einem Logic Analyzer die Pins /ROML, R/W und PHI2 aufgezeichnet. Eine fallende Flanke auf /ROML nutze ich als Trigger. Screenshot c64-poke zeigt einen schreibenden Speicherzugriff (POKE 32768,1) und Screenshot c64-peek den lesenden Zugriff (?PEEK(32768)).

    Zwei Fragen:

    * Wie im c64-peek zu sehen ist, geht der /ROML PIN zweimal auf LO, obwohl nur ein PEEK ausgeführt wurde. Meine Erwartung war, nur eine fallende Flanke zu sehen. Warum sieht man zwei Flanken?

    * Im c64-poke ist zu sehen, dass der R/W Pin erst auf LO geht, nachdem der /ROML Pin schon wieder auf HI ist. Hier hätte ich erwartet, dass der R/W Pin auf LO geht, während auch /ROML auf LO ist. Wie kann man zwischen lesendem und schreibenden Zugriff unterscheiden während /ROML LO ist.

    Vielen Dank im Voraus

    Wolfgang