Super-Luxus-CMOS-RAM-Platine

Es gibt 152 Antworten in diesem Thema, welches 49.857 mal aufgerufen wurde. Der letzte Beitrag (30. Dezember 2020 um 19:26) ist von WalkThatWay.

  • Hi X5141,

    das Modul Nick Coplins Seite ist nur für 4 64er Roms/Eproms...

    Deins wie du sagst für zwei 256er ist das Orginal oder umgebaut, muss doch meins suchen...

    Somit auch ein geändertes Layout (nur gering warscheinlich).....

    Warum hab ich nur meine C64er Sachen so gut weggepackt, mit dem Gedanken das brauchst du eh nicht....

    Jo mein Modul funkt schon aber eine richtige Software hab ich nicht dazu, da währe es schon ein Versuch wert das Startmenue von SuperGames umzuschreiben....

    Wenn es denn im MV funkt.....Magic Desk will zum Beispiel nicht im MV wie auch viele Steckmodule auch...


    Gruß Jogi

  • Zitat

    Original von Jogi
    Da wird zum Teil gegen PIA/VIA gearbeitet, diese 6520/6522 u.s.w gehen scheinbar in eine Art Tristate wenn sie ohne Spannung sind, in der NEORAM sozusagen arbeitet man gegen TTLs, und da müsste man erst mal Versuche starten wie es sich in dieser Schaltung verhällt....

    Eigentlich wird ein Akku am aktuelleren SRAM imo nur ueber I/O abgesaugt. Der RAM sollte in "Data Retention Mode" auch in TriState schalten. Reicht da nicht eine schnelle Diode ?

    Auch wenn man 4 braucht, hat man gegenueber einem IC doch noch kostbaren Platz gespart.

    Michael

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Hi cbmhardware,

    hatte die gleiche Idee bin aber schnell wieder davon abgekommen, I/O geht auf low runter bei ausgeschaltetem Computer....

    Baue ich jetzt eine Diode ein die dieses Low sperrt, sperrt sie leider auch das eigendliche CS Signal welches ja Low ist....

    Würde beides mit Low oder High funken kein Problem.....:(

    Gruß Jogi

  • so, eine neue Variante:

    /CS ist allen RAMs gemeinsam und wird nur zur Steuerung des Stromsparmodus benutzt. Ein Transistor zieht die Leitung auf low, wenn der C64 Strom liefert. Ansonsten zieht die Batterie über einen pullup die Leitung auf high.

    Die Zugriffe auf die RAMs werden komplett über /WE und /OE gesteuert, die von einem '138 erzeugt werden. Ich denke das müsste so klappen.

    Einziger Nachteil: am I/O2 Dekoder hat das ganze eine Leitung gekostet. Ausdekodierung ist also etwas gröber geworden, schaltet jetzt auf $DFC0-$DFFF. Immer noch akzeptabel, denke ich.
    Bitte melde dich an, um diesen Anhang zu sehen.

    Code: Floppy Fehlerkanal abfragen - Ausserdem kann ich bei "drive not ready" den I: und N: Befehl verwenden und notfalls den Kopf manuell zurückschieben. Und Finger weg vom Stepper!
    10 open1,8,15                   : rem 8 ist die Geräteadresse und das kann man bei Bedarf natürlich anpassen
    20 get#1,a$:?a$;:ifst<>64goto20 : rem Das CLOSE 1 am Ende kann man sich sparen, weil beim RUN automatisch ein CLOSE ALL ausgeführt wird.
    RUN
  • Erfolg!

    Ich habe jetzt mal die letzte Variante mit nur einem 512kB Chip aufgebaut und getestet. Nach den unvermeidlichen Kabelvertauschungen geht es nun.

    Jetzt muss noch die Batteriepufferung getestet werden. Aber 512kB-2MB NEORAM geht schon :)

    Schön ist auch, ich konnte das Testprogramm direkt von der MMC64 starten. Allerdings muss noch getestet werden, ob diese zusätzliche Dekodierung mit der üblichen Software zusammenarbeitet, oder ob das Probleme macht ...

  • Super,
    wenn das mit der Dekodierung passend sein sollte, werde ich das Testprogramm auf 2MB anpassen.

    Erwarte schon mit Spannung ein fertiges Board. :)

    Michael

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Ich hab ja noch den BBGRAM Test auf das Modul losgelassen. Das hat nicht funktioniert. Inzwischen habe ich mir das Programm im VICE angesehen, da geschehen nicht nur Zugriffe auf $DFFE und $DFFF, sondern auch auf $DF00-$DF0A. Ich frage mich was das soll? REU Unterstützung?

    Aber vielleicht habe ich ja noch einen Fehler im Aufbau.

    Kannst Du mit Deinem Programm auch prüfen, ob die Adressierung der Seiten richtig funktioniert? Dazu müsste ein Muster in die Erweiterung geschrieben werden, so dass jede Seite ein anderes Muster hat, und danach dann wieder zurücklesen. Von mir aus ein rotierendes Muster, also Seite 0: 00 01 02 03.... FF, Seite 1: 01 02 03 04 ... FF 00, Seite 2: 02 03 04 05 ... FF 00 01. Usw.

    Und da ich nur zwei RAM ICs hier habe wäre es praktisch wenn auch 1MB erkannt und getestet werden :) Evtl. auch 1,5MB und 4MB (ist ja in VICE auch möglich).

    Code: Floppy Fehlerkanal abfragen - Ausserdem kann ich bei "drive not ready" den I: und N: Befehl verwenden und notfalls den Kopf manuell zurückschieben. Und Finger weg vom Stepper!
    10 open1,8,15                   : rem 8 ist die Geräteadresse und das kann man bei Bedarf natürlich anpassen
    20 get#1,a$:?a$;:ifst<>64goto20 : rem Das CLOSE 1 am Ende kann man sich sparen, weil beim RUN automatisch ein CLOSE ALL ausgeführt wird.
    RUN
  • Zitat

    Original von x1541
    Ich hab ja noch den BBGRAM Test auf das Modul losgelassen. Das hat nicht funktioniert. Inzwischen habe ich mir das Programm im VICE angesehen, da geschehen nicht nur Zugriffe auf $DFFE und $DFFF, sondern auch auf $DF00-$DF0A. Ich frage mich was das soll? REU Unterstützung?

    Das ist merkwuerdig. Angeblich spiegeln sich die Adressen der GeoRAM im kompletten I/O-Bereich. Hat zwar keinen Sinn, aber vieleicht ueberprueft (nutzt) das Programm deshalb den Bereich am Anfang und Ende.


    Zitat


    Kannst Du mit Deinem Programm auch prüfen, ob die Adressierung der Seiten richtig funktioniert? Dazu müsste ein Muster in die Erweiterung geschrieben werden, so dass jede Seite ein anderes Muster hat, und danach dann wieder zurücklesen. Von mir aus ein rotierendes Muster, also Seite 0: 00 01 02 03.... FF, Seite 1: 01 02 03 04 ... FF 00, Seite 2: 02 03 04 05 ... FF 00 01. Usw.

    Und da ich nur zwei RAM ICs hier habe wäre es praktisch wenn auch 1MB erkannt und getestet werden :) Evtl. auch 1,5MB und 4MB (ist ja in VICE auch möglich).

    Das mit dem rotierenden Muster sollte kein Problem sein. Ist nur etwas mehr Programmaufwand.
    Ich hatte das manuell gestestet. Einfach ein paar Bytes im Georam-File vom Vice geaendert. Ist mit der echten Hardware natuerlich nicht machbar.

    Werde es mal ordentlich ausbauen : 4 MB und rotierendes Bytemuster.

    Michael

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

    Einmal editiert, zuletzt von cbmhardware (12. August 2006 um 11:24)

  • Das BBGRAM Testprogramm geht jetzt auch. Aber dazu musste ich meine Erweiterung etwas "kastrieren". Das Programm setzt die unbenutzen Adressbits auf 1, und schaltet damit mein RAM ab ;) Aber das allein ist es nicht, es erwartet auch dass eine 512kB Erweiterung voll gespiegelt wird, d.h. sich im 2MB Bereich viermal wiederholt. Als ich das auch noch angepasst habe, lief es :) Allerdings ist das Testprogramm recht blöd und schreibt nur ein statisches $55 Muster. Das ist allerdings nur zum Prüfen, ob die Akkupufferung geht. Sonst wird schon jedes Byte mit verschiedenen Mustern getestet, denke ich. Aber der Adressierungstest wird hier auch nicht gemacht.

    Das heisst also, ich müsste die Schaltung noch leicht anpassen, damit wirklich jede Software läuft. Konkret einige Jumper auf die zusätzlichen Adressleitungen, die man je nach Speicherausbau setzen kann, so dass die Spiegelung funktioniert.

    Code: Floppy Fehlerkanal abfragen - Ausserdem kann ich bei "drive not ready" den I: und N: Befehl verwenden und notfalls den Kopf manuell zurückschieben. Und Finger weg vom Stepper!
    10 open1,8,15                   : rem 8 ist die Geräteadresse und das kann man bei Bedarf natürlich anpassen
    20 get#1,a$:?a$;:ifst<>64goto20 : rem Das CLOSE 1 am Ende kann man sich sparen, weil beim RUN automatisch ein CLOSE ALL ausgeführt wird.
    RUN
  • Auch 1MB Speicher geht :)

  • Zitat

    Original von x1541
    Das BBGRAM Testprogramm geht jetzt auch. Aber dazu musste ich meine Erweiterung etwas "kastrieren". Das Programm setzt die unbenutzen Adressbits auf 1, und schaltet damit mein RAM ab ;) Aber das allein ist es nicht, es erwartet auch dass eine 512kB Erweiterung voll gespiegelt wird, d.h. sich im 2MB Bereich viermal wiederholt.

    Oehm, ist das Ding eine Gurke. Da muss ich nun erstmal etwaige Bytes aus den moeglichen 512Kb-Bereichen sichern, dann alles mit verschiedenen Bytes beschreiben, vergleichen, und in die tatsaechlichen RAMs wieder restaurieren.

    Sonst ist keine Erkennung moeglich. Habe das soweit schonmal fertig.

    Ein solches Hardware-Design gehoert gestraft. :)

    Michael

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Ich muss leider noch ein paar Abstriche machen : (erstmal) maximal 2 MB und dann auch nur 512kb, 1MB und 2 MB.
    1,5 MB kann man der Emulation nicht entlocken. Dann sind es dennoch immer 2 MB.

    Also das ist das hoechste der Gefuehle fuer die Emulation. Wenn ich z.B. noch in in Page Bitte melde dich an, um diesen Link zu sehen. reinschreibe, das dazwischen setze, erhalte ich dennoch kein anderes Ergebnis.
    Ist in dem Source schon nicht mehr drin.

    Entweder bin ich muede, die Emulation zu bloed, oder das muss wohl so sein.

    Fruuuuuust,
    Michael ;)

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

    Einmal editiert, zuletzt von cbmhardware (12. August 2006 um 16:03)

  • Diesesmal muss ich es komplett streichen. Die Emulation laesst keine Erkennung zu :


    Mache ich einen Fehler ?

    Vor der Ausfuehrung hat store=0. Durch eine einfach Detect-Routine werden vorab 512kb erkannt.
    Wenn ich nun diesen obigen Teil ausfuehre werden die 1MB nicht erkannt. Mit 2 MB gibt es keine Probleme. Da ist doch irgendwo der Wurm drin ?

    In Basic geht es mit Poke und Peek.

    btw Im letzen Posting war Zeile 22 zuviel.


    Ich wuerde die Neoram so korrekt dekodiert lassen, bestehende Software anpassen und die Georam der Tonne uebergeben.
    Mit einem Stueck Hardware koennte man dann eine echte Erkennung schreiben und muss sich nicht per Programm durch soviel defektes I/O wurschteln.
    Man hat mindestens viermal soviel Aufwand durch dieses ganze unsinnige Spiegeln in alle Bereiche.

    Michael

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

    2 Mal editiert, zuletzt von cbmhardware (12. August 2006 um 18:08)

  • Ich denke ich werde jetzt mal Software sammlen, die die GEORAM/BBGRAM unterstützt und die in beiden Modi der NEORAM testen. Also mit 1MB Speicher, einmal gespiegelt und einmal mit einem Loch von 1MB. Dazu habe ich mir jetzt einen Jumper installiert. Dann sehe ich mal was läuft und was nicht.

    Ausser der originalen BBGRAM Disk hier im Forum, gibt es auch noch GEOS Files für die GEORAM/BBGRAM bei Maurice: Bitte melde dich an, um diesen Link zu sehen. Diese blöde spezielle GEOS20R Disk für die GEORAM braucht man also nicht wirklich.

    Dauert jetzt aber alles ein bisschen, muss wieder arbeiten ab morgen.

    Code: Floppy Fehlerkanal abfragen - Ausserdem kann ich bei "drive not ready" den I: und N: Befehl verwenden und notfalls den Kopf manuell zurückschieben. Und Finger weg vom Stepper!
    10 open1,8,15                   : rem 8 ist die Geräteadresse und das kann man bei Bedarf natürlich anpassen
    20 get#1,a$:?a$;:ifst<>64goto20 : rem Das CLOSE 1 am Ende kann man sich sparen, weil beim RUN automatisch ein CLOSE ALL ausgeführt wird.
    RUN
  • Ich wuerde ein Testprogramm schreiben. Nur mit einer halblebigen Emulation ist das kaum moeglich. Dazu brauche ich schon eine funktionierende endgueltige Version.

    Bastle zwischendurch an einem Kopierprogramm fuer diese oder aehnliche Speichererweiterung. Braucht dann nur 512kb.
    Vieleicht findet sich dafuer auch eine andere Anwendung. Brauche im Moment zum Lesen und Verschieben eines Tracks 5 Sekunden (mit PlushDos von Krill).

    Michael

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

    Einmal editiert, zuletzt von cbmhardware (13. August 2006 um 16:04)

  • Kopierprogramm ist eine gute Sache :) Schön wäre z.B. eine angepasste Version von Burstnibbler (SCPU Version ohne Diskwechsel) und 15sec copy (REU version ohne Diskwechsel). Das sind zwei richtige Killerprogramme die eigentlich alle Kopieraufgaben erschlagen. Braucht man halt Parallelkabel :)

    Dann muss ich mal suchen ob ich irgendwo noch eine Z-Diode finde im Bereich 2-4V. Damit kann ich dann eine Batteriepufferung ansteuern. Jogis Tests haben gezeigt dass die Transistorschaltung im Schaltplan zu spät abschaltet ...

    Gestern hatte ich die Erweiterung beim Vereinstreffen in Möckmühl dabei. Ich glaube alle halten einen für verrückt, wenn man sowas frei verdrahtet baut :freude

    Code: Floppy Fehlerkanal abfragen - Ausserdem kann ich bei "drive not ready" den I: und N: Befehl verwenden und notfalls den Kopf manuell zurückschieben. Und Finger weg vom Stepper!
    10 open1,8,15                   : rem 8 ist die Geräteadresse und das kann man bei Bedarf natürlich anpassen
    20 get#1,a$:?a$;:ifst<>64goto20 : rem Das CLOSE 1 am Ende kann man sich sparen, weil beim RUN automatisch ein CLOSE ALL ausgeführt wird.
    RUN
  • Ich hab hier nochmal einen etwas abgespeckten Plan gezeichnet, bei dem die Batteriesache fehlt. Das ist ja noch nicht getestet.

    Weiterhin hat sich gezeigt, dass an 74HCT138, U3, der Pin 4 auf GND gelegt werden muss, weil sonst einige Programme die Erweiterung nicht finden. Ebenso sollten Pins 2 und 3 so konfiguriert werden, dass sie der tatsächlichen Speicherbestückung entsprechen. Sonst kann es mit einigen Programmen zu Problemen mit der Erkennung der Speichergrösse kommen. Im Plan ist die 2MB Version gezeichnet. Davon abweichend muss man folgende Zuleitungen vom HCT273 trennen und entsprechend dann Pins des HCT138 auf GND legen:

    1MB RAM: Pin3 auf GND
    512kB RAM: Pin 3 und Pin 2 auf GND

    Eine 1,5MB Version ist deshalb nicht sinnvoll ...

    Bitte melde dich an, um diesen Link zu sehen.
    (alle Pins zwischen den RAMs werden direkt verbunden, bis auf 24 und 29. Das war mir zu mühsam zu zeichnen)

    Code: Floppy Fehlerkanal abfragen - Ausserdem kann ich bei "drive not ready" den I: und N: Befehl verwenden und notfalls den Kopf manuell zurückschieben. Und Finger weg vom Stepper!
    10 open1,8,15                   : rem 8 ist die Geräteadresse und das kann man bei Bedarf natürlich anpassen
    20 get#1,a$:?a$;:ifst<>64goto20 : rem Das CLOSE 1 am Ende kann man sich sparen, weil beim RUN automatisch ein CLOSE ALL ausgeführt wird.
    RUN
  • Koenntest Du mal ein Board routen ?

    Mit einem RAM wuerde imo reichen. Der Rest wird dann gestapelt.

    Michael

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • nicht mehr vor der CC ;)

    Und das mit der Batterie möchte ich zuvor noch fertig haben.

    Code: Floppy Fehlerkanal abfragen - Ausserdem kann ich bei "drive not ready" den I: und N: Befehl verwenden und notfalls den Kopf manuell zurückschieben. Und Finger weg vom Stepper!
    10 open1,8,15                   : rem 8 ist die Geräteadresse und das kann man bei Bedarf natürlich anpassen
    20 get#1,a$:?a$;:ifst<>64goto20 : rem Das CLOSE 1 am Ende kann man sich sparen, weil beim RUN automatisch ein CLOSE ALL ausgeführt wird.
    RUN
  • Ach, eilt nicht. Habe nur keine Lust soetwas im Kneul zu bauen.

    Michael

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |