Hello, Guest the thread was called4.6k times and contains 101 replays

last post from DerSchatten at the

+60K Speichererweiterung für C64C (Assy 250469)

  • Wurde 1997 von Mr. Fiz/ Samar entwickelt, PCB Layout in 2018 von MKC/Century (mein altes Handle :) ). Das Board Design wird als Open-Source-Hardware zur Verfügung gestellt und darf verändert, hergestellt und verkauft werden, solange die Quellen genannt werden. Für etwaige Schäden oder sonstigen Murks haftet der Autor nicht. Die Erweiterung ist günstig und einfach zu bauen. Für das C64CMainboard Assy 250469. In der CSDB sind einige Tools und Digisounds für das +60K zu finden.




    BOM

    Menge
    US1-2 4464 dip 18 2
    US3 74LS02 1
    US4 74LS00 1
    US5 74LS139 1
    US6 74LS174 1
    Sockel dip 40 1
    Sockel dip 18 4
    Sockel dip 16 2
    Sockel dip 14 2
    IC-Adapterleiste 20 pin 4
    Kippschalter ein/ein 1



    Anleitung
    Die Benutzung ist einfach, der Speicherbereich von $1000 bis $ffff wird mit POKE 53504,0 ($d100, #$00) und POKE 53504,128 ($d100, #$80) umgeschalten. Sehr nützlich zusammen mit Kopierprogrammen oder einer besonderen Turbo Assembler Version. Diese einfache Handhabung macht es für Programmierer die auf der alten Hardware arbeiten möchten besonders interessant.


    1. Mainboard
    Die CPU (U6), das RAM (U10 und U11) und den Widerstand R101 enterfen und Präzisionssockel einbauen.


    2.IC-Adapterleisten
    Die IC-Adapterleisten in die Sockelstecken, die Platine aufsetzen und verlöten. Die Platine danach vom Flussmittel reinigen.


    3. Sockel
    Die Sockel anlöten.


    4. Kabel R101
    Ein Kabel an R101 löten, der untere Pin wird mit R101 - D und der obere Pin wird mit R101 - U auf der +60K Platine verbunden.


    5. Kabel U10
    An den VIC (U7) Pin 10 muss ein weiteres Kabel angeschlossen werden. Dazu das C64C Mainboard ambesten umdrehen, die Leiterbahn an Pin 10 an einer Stelle durchtrennen. Pin 10 des ICs mit U7/10 - U und den unteren Lötpunkt mit U7/10 - D auf der +60 K Platine verbinden.


    6. Fertig
    Die Platine mit Isopropanol vom Flussmittel reinigen. ICs in die Sockel stecken, Computer einschalten und die Speichererweiterung mit einem der Testprogramme (siehe Link oben) testen. Viel Spaß damit!

  • Hier noch die Gerber Files zum herstellen der Platine: gerber_files_60K_V1.2.zip. Mir fehlt leider die Zeit eine Sammelbestellung oder ähnliches zur organisieren, wenn @Bobbel lust hat dazu hat oder das in seinen Shop aufnehmen möchte so kann er das von mir aus gerne tun.

  • Hier noch die Gerber Files zum herstellen der Platine: gerber_files_60K_V1.2.zip. Mir fehlt leider die Zeit eine Sammelbestellung oder ähnliches zur organisieren, wenn @Bobbel lust hat dazu hat oder das in seinen Shop aufnehmen möchte so kann er das von mir aus gerne tun.


    Herzlichen Dank für das Angebot das ich gerne Annehme. Eine Sammelbestellung werde ich jetzt noch nicht organisieren bin aber nicht abgeneigt eine durchzuführen. Auch für den Shop eine gute Idee. :thnks:

  • Welche Programme haben etwas von der Speichererweiterung ?

    Vermutlich genau die, die unter dem "Tools" Link im ersten Post verlinkt sind.

    ────────────────────────────────────────────────────────────
    Time of Silence - Time of Silence 2 Development Blog
    ────────────────────────────────────────────────────────────

  • Gibt es irgendwelche Einshränkungen?

    Wohl kaum. Der C64 kann jetzt einfach mehr. :)


    Also läuft z.B. "normale" Software (Spiele) auch wenn die Erweiterung eingeschaltet ist?

    Der Kompatibilitätsgrad entspricht etwa dem, daß Du eine Cartridge im Erweiterungsport stecken hast, die zusätzliche Register in den I/O-Bereichen einblendet, oder anstelle eines C64 den C64-Modus des C128 benutzt. Greift ein Programm ohne ansonsten zureichenden Grund auf das Bank-Register der Erweiterung zu, dann schaltet es möglicherweise ungewollt die Bank um und zieht sich dadurch den Boden unter den Füßen weg. Der C64 stürzt dann ab.


    Es gibt aber für Programme, die diese +60K RAM Erweiterung nicht nutzen, einfach keinen Grund auf dieses Register zuzugreifen, denn an der Stelle befindet sich normalerweise ein Spiegel der VIC-Register. Kollisionen mit I/O-Registern von Cartridges sind jedenfalls auch ausgeschlossen.

  • Die unteren 4K (also, $0000..$0FFF) werden nicht umgeschaltet, weil man *irgendwas* in RAM braucht was sich nicht ändert wenn man die Bank umschaltet. Genauer: es braucht zusätzliche Routinen (die im ROM nicht existieren), von denen aus man in die andere Bank lesen und schreiben kann.


    Ein Programm, welches gerade im RAM im Bereich $1000..$FFFF Code ausführt und da einfach so die Bank umschaltet zieht sich im allgemeinen (wie in meinem vorigen Beitrag bereits erwähnt) selbst den Boden weg - der Prozessor sieht dann die andere Bank, aber da ist i.a. kein Programm zum ausführen -> Crash.


    Darum müssen Bank-übergreifende Aktionen über einen gemeinsamen bzw. nicht-umgeschalteten Bereich gehen. Der C128 macht das übrigens genauso.



    Edit: und +1 für ADAC - Zeropage und Stack will man nicht wirklich umschalten. :)

  • Weil der Bereich $0000 bis $0fff nicht umgeschaltet wird (bzw in beiden Bänken gespiegelt ist)... das kommt meist nicht so gut, insbesondere wenn man die ZeroPage wegblendet :D

    Geht kein anderer Bereich? XL, 6128, Speccy 128, C128 alles 8-Bit Rechner schaffen doch auch immer die vollen 64kb bei den Erweiterungen.

  • Geht kein anderer Bereich? XL, 6128, Speccy 128, C128 alles 8-Bit Rechner schaffen doch auch immer die vollen 64kb bei den Erweiterungen.

    Zumindest der XE blendet die oberen 64K auch nur in 16K Stücken in einen 16K-Bereich ($4000..$7FFF) ein.


    Der C128 benutzt ebenso einen gemeinsamen - standardmäßig allerdings nur 1K großen - Bereich ($0000..$03FF).


    Was der 6128 oder Speccy 128 genau machen, entzieht sich meiner Kenntnis - aber da sind evtl. Banking-Routinen im ROM drin, der Z80 hat ein paar Register mehr und kann darum seinen Zustand über Bank-Wechsel hinweg einfacher halten. Ich würde aber auch hier davon ausgehen, daß ein kleiner RAM-Bereich nicht mit umgeschaltet wird, weil diverse Tabellen/Pointer im RAM bei beiden Bank-Einstellungen sichtbar bleiben sollten, ohne daß eine (ROM-)Routine *ständig* zwischen den zwei Bänken hin- und herschalten muß.



    syshack : der VIC bleibt, denke ich, in den originalen "unteren" 64K. Andernfalls müßte man für die meisten Anwendungen immer eine Kopie des angezeigten Bildschirminhalts in den oberen 64K anfertigen (eben damit es dann nicht glitcht) und dieser Speicher wäre dann wieder weg ...

  • Wie läuft das mit dem Stack, wenn man Code in der Erweiterung aufrufen möchte? Alles retten, bevor man umschaltet und von den unteren 4kB in die Speichererweiterung springt und beim Rücksprung vice versa?

  • Das läuft so wie beim C128: man hält spezielle Routinen (JSRFAR) im gemeinsamen Bereich vor, die Sprungadresse und Zielbank übermittelt bekommen und die Rücksprungadresse und Bank des Aufrufers auf den Stack legen. "Gerettet" werden muß da nichts.

  • Zumindest der XE blendet die oberen 64K auch nur in 16K Stücken in einen 16K-Bereich ($4000..$7FFF) ein.

    Da hatte ich was vergessen. Die 16kb Grenze, mit welcher der CPC den Speicher einblenden kann. Wenn diese 64er Erweiterung die 60kb am Stück schafft, dann ist das natürlich ein Riesenvorteil.

  • Sehr schön! Gibt es irgendwelche Einshränkungen?
    Also läuft z.B. "normale" Software (Spiele) auch wenn die Erweiterung eingeschaltet ist?

    Sollte es wirklich mal Kompatibilitätsprobleme geben, kann die Erweiterung einfach abgeschalten werden.


    Da hatte ich was vergessen. Die 16kb Grenze, mit welcher der CPC den Speicher einblenden kann. Wenn diese 64er Erweiterung die 60kb am Stück schafft, dann ist das natürlich ein Riesenvorteil.

    Die 60 KB werden "am Stück" umgeschalten.


    Was sieht denn der VIC? Wenn auf die 60KB umgeschaltet wird, wird da nicht "Garbage" angezeigt, weil seine Daten weg sind?

    Der VIC greift immer nur auf Bank 0 zu, nicht auf Bank 1, daher ist die Anzeige kein Problem.