Cartridge Adressendekodierung macht komische Sachen :)

  • Cartridge Adressendekodierung macht komische Sachen :)

    Ich experimentiere im Moment mit dem Cartridge-Port des Plus/4 etwas herum. Ich wollte gern einen Schreibzugriff auf den Bereich $8000-$bfff (mit bekanntem "bleed through-Effekt") haben.

    Folgende Signale wurden verwendet:

    /A14 , A15 , Phi2, R/W

    Zuerst wird Phi2 (CPU=1) mit R/W (W=1) per NAND verknüpft und dieses als /E für einen 74LS139er Dekoder verwendet. Da hängen dann an A: /A14 (0) und B: A15 (1) und der zu erwartende Ausgang ist O2a (Pin 6). Zum Testen habe ich dann kurz ein 74LS74 drangehängt und es funktionierte auch, ABER auch im Bereich unterhalb von $8000. Wenn A15=1 dürfte ich dort doch gar nicht ankommen ? - Jemand eine Idee.

    139er Datenblatt: uni-kl.de/elektronik-lager/417705



    Der kleine Testaufbau. Ob es an Leitungen und Steckboard liegen kann ?
    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von cbmhardware ()

  • Ein Siemens 7KD1200-8BA, neid.

    Irgendwo verklemmt?
    DrZarkov: Die ersten in Serie produzierten Androiden für den Privatgebrauch werden keine Androiden, sondern Gynoide sein (vermutlich im Aussehen einer asiatischen Teenagerin). Und die geistige Fähigkeit wird aureichen "oh toll, Schatz" (oder auch ああ、本当に素晴らしい、蜂蜜!) zu stöhnen, und sich selbst sauber zu halten....
  • Nö, habe es mit anderen Bauteilen kurz aufgelötet und es hat sich nichts verändert. Reagiert auf jeden Schreib- und auch Lesezugriff.

    Kann ich mir nicht erklären ... ?

    Der Logiktester wird gelegentlich für kleines Geld bei Ebay angeboten, da habe ich meinen auch her.
    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
  • Das funktioniert mit einem SRAM schon mal einwandfrei. Jetzt stehe ich allerdings vor einem Problem mit Flash- oder EEproms. Mit A0-A13 am Flash habe ich die notwendige 16KByte Bank. Also von $8000-$bfff. Die Schreibsequenz braucht allerdings die Adressen Offset+$2aaa und $5555. Da lande ich dann bei $AAAA und $d555, also fehlt mir A14.

    cbmhardware.de/temp/flashcart.png

    Das wäre mein Ansatz. Fürs Register $7000-$73ff macht mich so noch nicht wirklich glücklich, aber es bleibt im machbaren Rahmen. Ideal wäre ein programmiertes Bauteil, das eine Adresse und die aufbereiteten Signale ausspuckt. Und das Register dann auch gleich aufnehmen kann. Ich kann allerdings nur mit TTL bauen.
    Beim Einbau (3+1 raus) könnte man $fd2x vom PLA abgreifen, müsste sich dann aber einige Adress- und Signalleitungen zusammensuchen. Auch keine schöne Lösung.

    So hätte man bestenfalls ein 040er-Flash (512kB) mit 32 Bänken. Das könnte dann z.B. C16-Spiele wie Kikstart per Herauskopieren und Trampolin-Code direkt im Speicher starten. Und natürlich mal ein selbst erstelltes Cartridge verwenden.
    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
  • Hallo!
    Das ist mein ROM-Karte.
    Der Name sdcart.
    2 x 16 LCD-Display.
    Sie können die PRG oder BIN-Datei auswählen. Der Mikrocontroller fügt das ausgewählte Programm in dem Speicher. Reset plus / 4, und das Programm wird geladen in die plus / 4.
    Bilder
    • Fénykép-0211.jpg

      139,24 kB, 1.000×750, 23 mal angesehen
  • Ich wollte eine einfache Version, aber mit einem AVR geht natürlich mehr. Ein sehr interessanter Aufbau.

    Da wäre noch eine Verbindung zum PC per USB wünschenswert. Wenn der AVR dann noch ein bisschen Programm mitliefert, wäre der Reset auch nicht mehr notwendig.
    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
  • Gerrit schrieb:

    Wie beschreibst du das SRAM? Schreibzyklen landen bei TED doch immer im DRAM, es werden also keine Select-Signale für die Cartridges erzeugt die man nutzen könnte.
    Das hatte ich vorher mit einem frei verdrahteten Aufbau kurz getestet. Ich schreibe von $8000-$bfff (A14=0,A15=1) mit dem "bleed through"-Effekt, also auch durch ins RAM. Am Anfang hatte ich den verhängnisvollen Fehler mit Write=1 gemacht, den ich bemerkte als gerryke die Schaltung vom Softrom hier postete. Write ist beim P/4 = 0 wie man in der Schaltung sehen kann.
    Damit klappte es dann sofort. Ist nicht elegant, aber es funktioniert so ohne Select-Leitungen.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von cbmhardware ()

  • cbmhardware schrieb:

    Das hatte ich vorher mit einem frei verdrahteten Aufbau kurz getestet. Ich schreibe von $8000-$bfff (A14=0,A15=1) mit dem "bleed through"-Effekt, also auch durch ins RAM.
    Mir unklar was du meinst. Das /CS für das RAM bekommst du von TED durch die Bankinglogik als C1L geliefert. Das geht aber nur bei Lesezyklen auf LOW. Bei Schreibzyklen erzeugt TED immer /CAS und das RAM bekommt nicht mit, daß es gemeint ist.

    Oder blendest du das RAM für Schreibzyklen hart ab $8000 ein und kopierst somit immer mit was gerade dorthin geschrieben wird? Dann musst du das irgendwie noch abschaltbar machen weil dir sonst der ganz normale Betrieb den RAM-Inhalt früher oder später zerlegt.
  • Gerrit schrieb:

    Oder blendest du das RAM für Schreibzyklen hart ab $8000 ein und kopierst somit immer mit was gerade dorthin geschrieben wird? Dann musst du das irgendwie noch abschaltbar machen weil dir sonst der ganz normale Betrieb den RAM-Inhalt früher oder später zerlegt.
    Ja, genau so. Das lässt sich nach dem Beschreiben natürlich manuell abschalten (Jumper über dem RAM im Foto weiter oben).
    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
  • cbmhardware schrieb:

    Ja, genau so. Das lässt sich nach dem Beschreiben natürlich manuell abschalten (Jumper über dem RAM im Foto weiter oben).
    Manuell und dann noch das aktive Signal über einen Jumper geführt? Das muss beim Design aber schon heftige Schmerzen verursacht haben, oder?

    Man sollte nie aktive Signale über mechanische Schalter oder Jumper führen sondern diese benutzen um das Signal via Logik zu schalten. Hat nebenbei den Vorteil, daß man dann keine Längenbegrenzung bei der Leitung zu diesem Schalter/Jumper hat. Das sauber zu implementieren würde dich einen weiteren IC kosten und einen Widerstand einsparen.

    Lösung für das 'manuell' habe ich jetzt keine einfache... OK, man könnte vielleicht über /C2L ein FlipFlop triggern welches den Schreibzugriff freigibt bzw. wieder sperrt. Gleich mit LED zur Anzeige des Status.
  • Gerrit schrieb:

    Manuell und dann noch das aktive Signal über einen Jumper geführt? Das muss beim Design aber schon heftige Schmerzen verursacht haben, oder?
    Ich habe es gut überstanden. ;) Mir ist bekannt, dass man so etwas besser indirekt schaltet.

    Ich hatte es wie in der Softrom-Schaltung übernommen. Auf der fertigen Platine läuft die Leitung dann über ein Dip-Switch.

    forum64.de/index.php?attachment/115658-p4-write-jpg/
    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
  • Eine neue Version mit Batteriepufferung und indirektem Beschalten von WE. Ich habe auf zwei Bänke (C1 oder C2 low) reduziert. Die lassen sich per SMD-Jumper konfigurieren. Mehr braucht man sowieso nicht.

    Mit dem DIP lässt sich "1: Erase all" VCC vom SRAM trennen. "2:Write" schaltet Write auf >$8000 dekodiert, indirekt über den 74LS125 an WE. Mit
    "3: Bank 0/1" kann dann die 16kByte-Bank ausgewählt werden.




    Die werde ich demnächst mal in Auftrag geben.
    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
  • Gerrit schrieb:

    Je nach RAM kann das aber trotzdem eine ganze Weile dauern bis die Daten wirklich weg sind.
    Nicht erwähnt, aber die Battrie-Pufferung wird natürlich so auch getrennt. Das geht ziemlich schnell. Sobald der P/4 die "CBM"-Kennung nicht mehr findet, läuft der Reset sauber durch. Und wenn es mal im Tedmon endet, kann man dann mit f 8000 bfff 00 dem Treiben ein Ende setzen.
    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
  • Benutzer online 1

    1 Besucher