CPC 6320 - oder wie man den CPC 6128 ganz einfach auf 320KB aufrüstet

  • Sehr gute Aktion…


    xesrjb

    "Der Wein mit der Pille ist im Becher mit dem Fächer. Im Pokal mit dem Portal ist der Wein gut und fein

  • und die erste Bank kann man auch ersetzen und die zusätzlichen 192KB sauber nutzen...

    Klar, 512KB Extensions sind heutzutage nichts besonderes mehr, das ist mir durchaus klar.

    Der Charme hier ist m.E. dass das genau so auch 1986 oder 1987 in einem Magazin hätte veröffentlicht werden und von jedem mittelmäßg begabten Bastler (dazu zähle ich mich) nachgebaut werden können. Die CPC6320 Variante ist so simpel, dass sie neben den RAM ICs lediglich drei Standard ICs und Material benötigt, das viele eh im Vorrat haben oder (in den 80ern natürlich) in jedem Elektro-Bastler-Laden für unter 5 Mark zu bekommen war. Ich hab mal nachgesehen, was die RAMs 1987 gekostet haben. Das war durchaus bezahlbar. Man hätte sich so seine "CPC 6320"-Erweiterung alles in allem für um die 65DM zusammenlöten können. Die 512er Variante braucht zugegebenermaßen ein PAL und natürlich doppelt so viele RAM ICs, aber auch das war durchaus machbar. Die C'T hat ihren 6512-Artikel auch mit Hilfe eines neuen PAL gemacht, nur war die Variante zu nix und niemandem kompatibel und außer der RAM Disk im Artikel konnte ich nichts finden, was sie hätte nutzen können.

    Hier jetzt erst mal der schnell schnell zusammen gelötete Prototyp. Geht natürlich auch schöner.

  • Was ich nicht versteh, wie funktioniert der Refresh?

    Wenn du die 41256 einsetzt brauchst du mehr Refresh-Adressen als beim 4164.

    Wie ist denn die genaue Bezeichnung der 4164?

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • Das will ich mit meinem CPC auch machen, sobald ich mit dem KC fertig bin.


    Findet man Schaltung, PAL Inhalt und evtl. sogar Layout für die Vollaufrüstung irgendwo?


    Gruß, Rene

  • Was ich nicht versteh, wie funktioniert der Refresh?

    Wenn du die 41256 einsetzt brauchst du mehr Refresh-Adressen als beim 4164.

    Wie ist denn die genaue Bezeichnung der 4164?


    Amstrad hat beim CPC ja nicht die Refresh-Fähigkeit des Z80 genutzt, der nur 7 Bit bietet, sondern hat die Bildschirmadressen so organisiert, dass der Videochip beim auslesen des RAM automatisch den Refresh mit erledigt. Das sind dabei praktischerweise genau 8 Refresh-Bits, die ein 41256 braucht. Ansonsten wäre der Aufbau nicht so simpel machbar und die erste Bank zu ersetzen, wäre praktisch gar nicht möglich.

    Amstrad hat meines Wissens alles mögliche an 4164 Chips eingesetzt. Ich hab jetzt gerade keinen mehr offen rumstehen, bei dem noch 4164er drin wären. Auf CPC Wiki finden sich aber unzählige Mainboard-Fotos, da kannst du mal nachsehen, was sie so verwendet hatten: https://www.cpcwiki.eu/index.php/Mainboard_Versions

  • Das will ich mit meinem CPC auch machen, sobald ich mit dem KC fertig bin.


    Findet man Schaltung, PAL Inhalt und evtl. sogar Layout für die Vollaufrüstung irgendwo?


    Gruß, Rene


    Folgt.


    Ich hab gerade PCBs bestellt. Wenn die da sind, baue ich das nochmal sauber auf, teste alles und dokumentiere das ebenfalls auf CPCWiki.

  • Ich frage mich natürlich, ob man das evtl. einfacher mit einem 512kx8 SRAM realisieren könnte. Damals waren SRAMs teurer. Heute sind sie billig und verbrauchen deutlich weniger Strom. Aber dafür kenne ich mich mit dem Aufbau des CPC (noch?) zu wenig aus.


    Gruß, Rene


    PS: Hab zu dem Thema noch was gefunden:


    https://github.com/revaldinho/cpc_ram_expansion/wiki/'Old-School'-CPC6128-512KB-and-1MB-RAM-Expansion-Cards

  • Ich frage mich natürlich, ob man das evtl. einfacher mit einem 512kx8 SRAM realisieren könnte. Damals waren SRAMs teurer. Heute sind sie billig und verbrauchen deutlich weniger Strom. Aber dafür kenne ich mich mit dem Aufbau des CPC (noch?) zu wenig aus.


    Ja natürlich. Hab ich ja im ersten Post schon erwähnt, dass so eine Extension heutzutage nichts besonderes mehr ist. Auf SRAM basierende, externe Erweiterungen gibt es zuhauf von 512KB - 4MB, teilweise auch offen dokumentiert: https://www.cpcwiki.eu/index.php/Standard_Memory_Expansions

    Ich mag die externen Erweiterungen allerdings nicht und wollte schauen, ob ich das auch intern hinbekomme. Da ich beim Start des Projekts praktisch keine Ahnung von Elektronik oder programmierbarer Logik hatte, lag es näher, erstmal etwas zu machen, was einfacher zu verstehen ist und nahe an der Architektur des CPC ist. Mit dem in den letzten Wochen Gelernten würde ich jetzt auch eher dazu tendieren, eine interne RAM Erweiterung so designen, dass sie z.B. in den CPU Sockel eingesteckt werden kann. Und da kommt natürlich wieder SRAM ins Spiel.

    Dennoch finde ich, dass es dokumentiert gehört. Der Charme hier ist, dass das - ich sag mal - "100% era correct" ist. Will heißen: es hätte 1986 in der Schneider International als Bastelanleitung veröffentlicht werden können. Oder Amstrad hätte das schon so ausliefern können - ein Chip mehr auf der Platine und gesockelte RAMs, dann hätte jeder zuhause seinen Rechner auf 320 bzw. 512KB aufrüsten können.

  • Wie werden denn die Bänke umgeschaltet ?


    (Gern auch nur ganz kurz beschrieben, kann da auch auf die längere Erklärung warten, die sicher mit der "offiziellen Dokumentation" mitkommt.)

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • Amstrad hat beim CPC ja nicht die Refresh-Fähigkeit des Z80 genutzt, der nur 7 Bit bietet, sondern hat die Bildschirmadressen so organisiert, dass der Videochip beim auslesen des RAM automatisch den Refresh mit erledigt.

    Das ist natuerlich sehr geschickt. Dann haben die damals schon mitgedacht.


    Wegen dem 7bit Z80-Refresh gab es viele 4164er, die mit 7bit auskamen.

    Hat mich gestern auch gewundert, das der 41256 mit 8bit Refresh auskommt.


    Ja dann, frohes basteln.

    ;------------------------------------
    ;----- ENABLE NMI INTERRUPTS
    (aus: IBM BIOS Source Listing)

  • Wie werden denn die Bänke umgeschaltet ?


    (Gern auch nur ganz kurz beschrieben, kann da auch auf die längere Erklärung warten, die sicher mit der "offiziellen Dokumentation" mitkommt.)



    Amstrad hat das ja recht simpel gelöst: Über Port 7Fxx schaltest du mit den Bits 0-2 eine Bankingkonfiguration ein. Wenn das Banking aktiv ist UND die CPU auf eine Banking-Adresse zugreift, dann blendet das PAL an der entsprechenden Stelle RAM aus der zweiten Bank ein, in dem es CAS1 (CAS der zweiten Bank) aktiviert, die Leitung A15 und A14 steuert und CAS0 (CAS der ersten Bank) deaktiviert.

    DK'tronics hat damals diesen Standard um Bits 3-5 erweitert und das ist heute der defacto Standard auf dem CPC. Zusätzlich zum normalen CAS0/CAS1 Switch schalte ich, basierend auf Bit 3 und 4 der Banking-Konfiguration, die Leitung A8 während CAS bzw. RAS. Bit 3 gesetzt = A8 während CAS aktiv, Bit 4 gesetzt = A8 während RAS aktiv. Beide gesetzt, A8 während RAS und CAS aktiv. Damit hat man schon mal 320K angesprochen (64 base + 256 expanded). Zusätzlich nötig ist dafür neben D3 und D4 noch CASADR, da das CAS-Signal etwas zu spät kommt um A8 rechtzeitig zu schalten. CASADR ist das Kabel das zum Gate Array geht.

    Die restlichen 192KB bekommt man, wenn im Banking Bit 5 gesetzt ist. In dem Moment wird CAS1 wieder ignoriert und über CAS0 doch wieder die erste Bank angesteuert. Man muss jetzt natürlich gewährleisten, dass die unteren 64KB nicht mehr angerührt werden, denn dort liegt ja das Base-RAM auf das CRTC und Gate Array zugreifen und das darf man auf keinen Fall als externes RAM einblenden. Dafür habe ich die Logik etwas angepasst: Bit 3 nicht gesetzt = A8 während CAS aktiv, Bit 4 nicht gesetzt = A8 während RAS aktiv. Beide gesetzt ODER beide nicht gesetzt: A8 während RAS und CAS aktiv. D.h. sind Q3 und Q4 BEIDE gleich, werden in beiden Fällen die obersten 64KB des Speichers eingeblendet.

    Da nutze ich quasi erwartetes Verhalten: allen RAM Erweiterungen ist zueigen, dass sie, wenn die Software eine Konfiguration aufruft, die über die Kapazität geht, wieder darunter liegendes RAM einblenden, das eigentlich gar nicht angefragt wurde. D.h. alle Software, die erweitertes RAM über den Standard 128K nutzt, muss erstmal prüfen, welche Bänke echt da sind und dann auch nur die nutzen. In meinem Fall läuft die Software dann durch Bänke 1-7 und erkennt diese. Sobald sie was darüber versucht anzusteuern erkennt sie, dass da nur noch Schattenkopien liegen und ignoriert diese.





  • Toll! Jetzt bekomme ich richtig Lust auf diese neue Baustelle!

    Den CPC hab ich seit gut 10 Jahren und hab ihn immer nur mal ein paar Tage ausprobiert. Inzwischen mit 2. Floppy + Gotek ist das alles viel einfacher und interessanter.

    Ich glaube, ich werde mal ein paar von den BUS-Platinen, RAM-Erweiterungen und ROM_Platinen bestellen...

  • Die Erweiterung aus der c't habe ich damals eingebaut, benutzen konnte ich sie nur als RAM-Disk unter (gepatchtem) CP/M+. Aber dafür war sie Reset-fest, nach Betätigung eines selbst eingebauten Reset-Tasters bootete der 6128 neu und alles war noch in der RAM-Disk vorhanden. Ich finde nur leider die damalige CP/M-Diskette nicht mehr, da war auch noch der Patch das Vortex 5 1/4" Laufwerk drin.

    Ach ja - Fassungen passen nicht auf das Mainboard des 6128 - die Amstrad-Ingenieure haben den Abstand der IC-Reihen so gewählt, daß die Beinchen nicht zusammengedrückt werden müssen. Man muß also die Fassungen längs auftrennen.

  • das RAM hier ist grundsätzlich auch Reset-fest. Allerdings habe ich keine RAM-Disk finden können, die mit Expanded RAM funktioniert und gleichzeitig nicht im ROM läuft.

    Dass Fassungen nicht auf's Motherboard passen kann ich nicht bestätigen. Bei mir sind alle RAMs jetzt in Fassungen und die haben auch perfekt und ohne Modifikation gepasst. Vielleicht war das beim 464 so.

    Btw: Mittlerweile ist auch die 512KB Variante fertig, also ein echter 6512. Die PCBs kamen gestern an ;)

  • Ich bin mir ziemlich sicher daß ich mir 1986 den CPC6128 gekauft habe. Kassetten passten nämlich nicht in den Laufwerksschlitz und CP/M+ lief nicht auf dem 464.

    Kann ihn gerne mal aufmachen und ein Foto einstellen.

  • Btw: Mittlerweile ist auch die 512KB Variante fertig, also ein echter 6512. Die PCBs kamen gestern an ;)

    Da wäre ich dann auf jeden Fall an einer interessiert. Die externe BUS-Erweiterung ist zwar flexibler, dafür ist der interne RAM immer verfügbar, auch ohne Anhängsel. Und mit externen ROM-Disks etc. kann man das ja immer noch kombinieren.

    Ich blätter gerade die ganzen alten Schneider Magazine durch. Das motiviert!


    Gruß, Rene

  • ja genau, das war auch meine Motivation. Ich mag die Anhängsel nicht. Allerdings hat es ansonsten schon auch Nachteile:

    - Aufwand
    - Risiko etwas beim Einbau kaputt zu machen

    - teurer als eine externe 512KB Erweiterung (16x RAM IC + 16x Sockel + 2x ATF16V8 + PCB)

    Ich habe auch immer noch keine Software gefunden, die mit 512KB wirklich mehr könnte als mit 320KB. Insofern sehe ich die 6512 Variante mehr als "because I can" Variante, als etwas, was man empfehlen kann.


    Ich werde das alles noch ausgiebig testen und dann dokumentieren. PCBs und PAL Logik werde ich zum Download freigeben. Wird aber noch etwas dauern.

  • Anbei mal ein Bild, wie das 512KB Mod mit neuem PCB aussieht.

    Ich bin mir ziemlich sicher daß ich mir 1986 den CPC6128 gekauft habe. Kassetten passten nämlich nicht in den Laufwerksschlitz und CP/M+ lief nicht auf dem 464.

    Kann ihn gerne mal aufmachen und ein Foto einstellen.

    Ich hab jetzt zwei 6128er mit unterschiedlichen Mainboard-Versionen aufgerüstet und bei beiden passen die RAM Sockel ganz sauber rein. Allerdings gilt das nicht für alle ICs. Den Sockel für den 74LS373 z.B. kann ich nur einbauen, wenn ich ihn trenne.