Beiträge von cbmhardware im Thema „C16 und DMA ?“

    Beim 7408 wird eigentlich nur AEC und DMA verknüpft, sobald DMA= 0 kann das nicht mehr 1 werden. Ja, da muss dann schon etwas schnelles dranhängen, das dann immer wieder zugreift. Versuchen möchte ich das lieber nicht, möchte keine 8501 oder einen TED abschiessen.

    Ist beim C64 auch nicht anders, da treibt der VIC die AEC-Leitung auch. Und da liegt dann die Chance, wenn der TED AEC=1 treibt, kann man diese vielleicht auf Low setzen. Wie ich es im Schaltplan sehe geht AEC vom Modulbus direkt an die CPU. Also kann jeder den Eingang beeinflussen.

    Die einzige Möglichkeit ist AEC=1, BA=1 also wenn der TED an die CPU abgibt und dann mit AEC=0 die CPU vom Bus nehmen. Und das natürlich nur für einen sehr begrenzten Zeitraum.

    Ich hatte eigentlich etwas anderes in den diversen C16-PDFs gesucht, aber es brachte mich auch die Idee: warum eigentlich kein DMA mit dem C16 oder Plus/4 ?

    Beim C64 hat man eine DMA-Leitung am Expansionsport. Das ist aber eigentlich kein Hexenwerk, dort wird einfach das DMA-Einganssignal mit AEC logisch (AND) verknüpft. Sobald DMA=0 ist kann AEC nicht mehr High werden (Adressbus High-Z). Dazu braucht man dann natürlich noch PHI, BA und R/W wenn man mit dem Datenbus etwas machen möchte. Im 6510 Datenblatt wird sogar kurz erwähnt, dass AEC speziell für DMA vorgesehen ist.

    Die 75 oder 8501 CPU hat diesen AEC-Eingang natürlich auch. Da fehlt dann das Gatter des 7408 (AND) um die Leitung DMA nennen zu können.

    Wir machen also folgendes:

    Warten auf BA = 1 und PHI= 1 (?), R/W =0 (Lesen) ... die CPU ist dran

    AEC = 0 und für im Moment nicht bekannte Zyklen kann man auf den Daten- und Adressbus zugreifen

    BA = 0 ... der TED ist dran

    Mir geht es jetzt nicht um den wahrscheinlich nicht ganz richtig formulierten Zugriff. War jetzt nur mal so aus dem Stand.

    Aber ist es theoretisch machbar oder übersehe ich da etwas ?