Hello, Guest the thread was called18k times and contains 191 replays

last post from plazma at the

Umbau C64 auf SRAM

  • Hallo,


    dieses Wochenende hatte ich endlich einmal Zeit _und_ alle Bauteile im Haus um endlich ausprobieren zu können ob man einen C64 mit SRAM statt DRAM betreiben kann. Die Idee dazu stammt von einer Webseite die dasselbe mit den unteren 16KB eines ZX Spectrum gemacht hat (4116 DRAMs sind schwer zu bekommen). Die Idee war ein Modul zu bauen welches man anstelle der DRAMs einbaut ohne das weitere Signale benötigt werden.


    Ja, es funktioniert, aber das Timing von _RAS und _CAS im C64 ist deutlich anders als im Spectrum, also war hier ein weiteres Gatter nötig welches verhindert, daß das RAM noch aktiv bleibt wenn _RAS schon inaktiv ist. Statt dem verbauten 74F32 müsste auch ein 74HCT32 funktionieren, hatte nur gerade keines da. Die unbenutzten Gatter der 74F32 sind korrekt beschaltet um Probleme mit offenen Eingängen zu vermeiden. Der Test erfolgte auf einer C64-Platine 250466 da diese Platine meine einzige mit gesockelten RAMs ist.


    Ohne die Oder-Verknüpfung von _RAS und _CAS bekommt man zwar ein Einschaltbild, allerdings mit Müllzeichen hier und dort und der Rechner läuft nicht.


    Code
    1. Bauteileliste:
    2. Alliance AS6C1008-55PCN (628128, wird nur zur Hälfte benutzt)
    3. 74HCT573
    4. 74F32 (oder 74HCT32)
    5. 3 x 100nF Abblockkondensatoren
    6. Steckadapter AR20 vom Reichelt, gekürzt auf 18pin
    7. Passende IC-Sockel
    8. Schaltlitze in diversen Farben.


    Mit dieser Schaltung bekommt man ein Einschaltbild, kann Spiele laden und starten, der C64 verhält sich genauso wie mit DRAM. 100% testen mit jeder noch so esoterischen Software kann ich das ganze natürlich nicht.


    Für mich war das ein Proof of Concept, vielleicht kann jemand damit was anfangen. Dürfte etwas weniger Strom verbrauchen als die DRAMs und vielleicht hat noch jemand eine Idee was man mit der zweiten Hälfte des 62128 machen kann. In der jetzigen Schaltung liegt A16 fest auf GND.

  • 4116 ist nicht das Thema, dieses Modell des C64 nimmt nämlich 41464. Es ist aber durchaus interessant, denn man könnte jetzt eine VIC-Version suchen, auf der "Mayhem in Monsterland" nicht funktioniert, und dann diesen S-Ram Verhau einsetzen. Wenn sich dann herausstellt, dass es funktioniert, handelt es sich wirklich um ein Refresh-Problem. Das ist noch eine der wenigen ungeklärten Sachen beim C64.


    Jens

  • Hmmm und was, ausser geringeren stromverbrauch bringt das nun? Ist der speicherzugriff dann schneller oder sowas?


    Nein, der Speicher wird genau gleichschnell angesprochen, das Timing gibt der VIC vor. Beim ZX Spectrum kam die Idee aus der schlechten Verfügbarkeit von 4116 RAMs die auch noch zusätzliche Spannungen haben wollen. 4164 bekommt man noch, aber 4464 bzw. 41464 sind schon nur noch gebraucht zu finden. Es schadet nicht eine billige Alternative zu haben (das 628128 kostet auch nur knapp einen Euro),


    Ein SRAM hat nebenbei noch den Vorteil statisch zu sein wie der Name schon sagt. Sobald _CS1 high (oder CS2 low) ist sinkt der Stromverbrauch bei diesem SRAM laut Datenblatt auf unter 20µA (typ. 1µA). Man könnte mit einer kleinen Li-Batterie das gesamte RAM des C64 über Jahre puffern.


    Ich wollte primär wissen ob das beim C64 genauso einfach geht wie beim Spectrum. Ging es nicht, wahrscheinlich weil _CAS durch die PLA geroutet wird was eine Verzögerung mit sich bringt. Nach Einbau des Extra-Gatters (1x Oder) geht es.

  • 4116 ist nicht das Thema, dieses Modell des C64 nimmt nämlich 41464. Es ist aber durchaus interessant, denn man könnte jetzt eine VIC-Version suchen, auf der "Mayhem in Monsterland" nicht funktioniert, und dann diesen S-Ram Verhau einsetzen. Wenn sich dann herausstellt, dass es funktioniert, handelt es sich wirklich um ein Refresh-Problem. Das ist noch eine der wenigen ungeklärten Sachen beim C64.


    Ist schonmal untersucht worden ob es am VIC oder auch den verbauten DRAMs liegt wenn Mayhem in Monsterland nicht läuft? Zwischen den verschiedenen Herstellern von DRAM gab es damals grosse Unterschiede wie lange die Daten ohne Refresh erhalten blieben. Manche brauchten wirklich den vollen Durchlauf alle 4 ms, andere waren toleranter und kamen Sekunden ohne Refresh aus. Wenn das Spiel es schafft den Refreshzähler durcheinanderzubringen bleibt nur noch der implizite Refresh durch die Zugriffe von CPU und VIC. Bei DRAMs, welche auf den 4ms (oder nur wenig mehr) bestehen würde das u.U. nicht reichen, bei toleranten DRAMs hingegen schon. Dann läuft das Spiel auf dem einen C64, auf dem anderen nicht.

  • Dein Projekt kommt mir sehr gelegen, :) ich möchte gerne das VDC-RAM meines C128 von 16k auf 64k aufrüsten. Jetzt wollte ich keine €10,- zahlen für zwei RAM’s, weder einen C64C schlachten. :weg:


    Ein SRAM hat nebenbei noch den Vorteil statisch zu sein wie der Name schon sagt. Sobald _CS1 high (oder CS2 low) ist sinkt der Stromverbrauch bei diesem SRAM laut Datenblatt auf unter 20µA (typ. 1µA). Man könnte mit einer kleinen Li-Batterie das gesamte RAM des C64 über Jahre puffern.


    und vielleicht hat noch jemand eine Idee was man mit der zweiten Hälfte des 62128 machen kann.

    Vielleicht ist es möglich das RAM auf $8000 zu mappen und damit ein Modul zu emulieren. Ich meine damit sowas wie der interne Einbau des Amiga Look Modul.


    aber das dann natürlich mit dem RAM und Batterie gepuffert. Mit 3 Schaltern könnte man dann zwischen 8 Bänke wählen.


    Mir kam die Idee als ich das Amiga Look Modul sah und es dann eventuell mit dieser Schaltung kombinieren könnte.

  • Nur gehört der A16 noch auf einen CIA IO, damit man die oberen64KB auch nützen könnte.


    Uffbasse! Du ziehst der CPU damit auch den Stack weg. Außerdem wird's viel interessanter, wenn Du VIC- und CPU-Bank getrennt einstellen kannst ;-)


    Jens

  • Uffbasse! Du ziehst der CPU damit auch den Stack weg.


    Naja, wenn man raffiniert genug programmiert, also diese Tatsache mit berücksichtigt, kann man gut damit leben. Das Problem wirkt sich erst beim nächsten RTS oder RTI aus. RTI ist ausgeschlossen, wenn man nicht gerade im Interrupt Blödsin macht.



    Außerdem wird's viel interessanter, wenn Du VIC- und CPU-Bank getrennt einstellen kannst ;-)


    Interessanter Aspekt. Besonder bei Hires wäre dies cool.


    Auf der anderen Seite tut man sich dann relativ schwer mit der Bildschirmausgabe.


    Irgendeine Verknüfung sollte auf jeden Fall sein. Zb. nur 32K des Speicher zu schalten, wie beim neuen RR-Net.

  • In meinem Schaltplan ist noch ein kleiner Fehler enthalten. _OE des RAMs muss fest auf GND gelegt werden. Das kommt davon, wenn man zuerst die Schaltung aufbaut und dann den Schaltplan zeichnet. :)


    Zum Thema 'Verwenden der zweiten Hälfte des 628128'. Mit drei zusätzlichen ICs (74xx257, 74xx04 und 74xx30) müsste es machbar sein diesen Teil in 4KB-Segmenten z.B. bei $C000 einzublenden. Kostet dann aber auch 5 Portbits und macht mehr Mühe da das Mapping der Adressleitungen im Gegensatz zu aktuellen Schaltung nicht mehr beliebig ist. Lohnt IMHO den deutlich höheren Aufwand nicht, nur um einen Chip für unter 2 Euro voll ausnutzen zu können. Speichererweiterungen für den C64 gibts genug.


    In einem C16/+4 müsste die aktuelle Schaltung auch funktionieren obwohl man dort auch eine vereinfachte Schaltung verwenden kann. TED produziert im Gegensatz zum VIC-II keine gemultiplexten Adressen, also kann man sich den 74HCT573 sparen wenn man das RAM auf einen Zwischensockel für TED setzt. Da hier RAS und CAS (beim C64 durch die PLA geroutet und damit verzögert) direkt verwendet werden kann man sich u.U. sogar den 74xx32 sparen.

  • Hallo,


    könnte man diese Schaltung auch als ätzbare Eagle Platine entwerfen? Ätzen, bestücken und einstecken? Das wäre doch für viele Leute sicher nützlich?


    Die jetzige Schaltung ist vom Platz und dem Abstand der DRAM-Sockel her auf das 250466 optimiert. Speziell der Abstand der DRAM-Sockel variiert gerne. Beim C16 ist er noch größer, beim C116 deutlich kleiner und bei der 250469 könnten andere Bauteile im Weg sein.


    Eine Platine für alles wird also nicht gehen.


    Ein anderer Nachteil hat sich noch gezeigt, das verwendete SRAM braucht so wenig Spannung um die Daten zu halten, daß es bei abgeschaltetem C64 ausreicht wenn die 1541 noch eingeschaltet ist. Der Rückstrom über die Pullups des IEC-Busses reicht um den C64 bei Spielen mit Resetschutz zuverlässig vom Starten abzuhalten solange nicht auch die 1541 abgeschaltet wird.

  • Ein anderer Nachteil hat sich noch gezeigt, das verwendete SRAM braucht so wenig Spannung um die Daten zu halten, daß es bei abgeschaltetem C64 ausreicht wenn die 1541 noch eingeschaltet ist. Der Rückstrom über die Pullups des IEC-Busses reicht um den C64 bei Spielen mit Resetschutz zuverlässig vom Starten abzuhalten solange nicht auch die 1541 abgeschaltet wird.


    Dagegen hilft ein 10 Ohm Widerstand direkt am Powerschalter der beim ausschalten die 5V-Schiene vom Board über den Wkiderstand gegen Masse schaltet.
    Bei der Assy 250496 hat Commodore das selbst so realisiert (R19).

  • Hallo,


    ich grabe das Thema wieder aus, weil mich so langsam die DRAM-Preise nervenund ich keine Lust auf die gelegentlich auftretenden VSP-Bugs auf meiner C64Reloaded und ASSYs 250469 habe. Seit Sommer bin ich an diesem Thema daran undda die ganze Vorarbeit von Gerrit schon gemacht wurde, habe ich mich an KiCADgemacht und eine erste Platine entworfen. Diese basiert nur auf ICs im DIP-Format.Aus platzgründen habe ich leider einige PINs von den RAM-Sockeln und dem74HCT32 weglassen müssen. Diese war nur als Machbarkeitsstudie meinerFähigkeiten mit KiCAD, dem Auftragsfertiger und dem allgemeinen Konzeptgedacht.


    Kurz und knapp das Ganze funktioniert einwandfrei. Nur benötigt die Platinerecht viel Platz. Im Prinzip passt die SRAM-Platine in die ASSY 250-466, -469und Reloaded. Aber von den Platzverhältnissen betrachtet kann sie nur auf der466 und der Reloaded im Brotkastengehäuse benutzt werden. Den 10 Ohm Widerstand müsste bei der ASSY 250466 nachgerüstet werden. B bei der Reloaded weiß ich nicht wie diese sich verhält.


    Welche Spiele haben einen Resetzschutz? Mir fällt gerade keins ein.


    Hier noch die Bilder zu meiner ersten Platine.


  • Supergeil! Wobei, bei den chinesen sind ersatz-rams sehr günstig und beim 250466 braucht man ja nur 2. Da wird deine platine sicherlich weit mehr kosten aber trotzdem finde ich solche projekte immer top! Wenn du das korrigierte layout herstellen lässt das dann auch auf anderen boards passt, machst du dann eine sammelbestellung?


    Interessanter wäre sowas aber auch für die alten boards 250407, da bräuchte man gleich 8 rams ! Dafür, für jede der zwei 4er-reihen, so einen adapter wäre auch sehr fein und würde sich da wohl eher lohnen. Ist das für diese boards auch machbar? Bin grad an einem dran und hab mal den ersten ram schon ausgelötet aber da es 8 mt-rams sind, und diese wohl qualitativ nicht so toll sein sollen, kann es gut sein daß ich alle auslöten muß...da würde sich sowas direkt anbieten.

  • Die Schaltung funktioniert auch mit einem 250407 und 250425 Board. Warum auch nicht, ist ja nur ein Adress-Demultiplexer vor dem SRAM.


    Ich hab sie damals (2011) für eine 250466 aufgebaut weil ich für ein Experiment (geht das überhaupt?) keine Lust hatte 8 ICs auszulöten und zu ersetzen. Muss nur jemand eine Platine machen. Wobei man hier nur bei einem der 8 RAMs eine vollständige Belegung braucht, bei allen anderen 7 reicht ein korrekt plazierter Kontaktstift für Pin 2 oder Pin 14 (Datenleitung).

  • Für die alten Boards hätte ich auch gerne eine Platine ;)
    Aber den Aufwand wollte ich bei meinem ersten Projekt zuerst nicht aufbringen. Aber die SRAM-Lösung hat den Vorteil, dass der VSP-Bug nicht auftritt.


    Ich habe mir vor Wochen die Abstände angeschaut und alle mal in CorelDraw eingezeichnet. Also angedacht habe ich das aber aktuell habe ich viel zu wenig Zeit.