cc65 und Speicher-Banking auf 264-Serie

Es gibt 22 Antworten in diesem Thema, welches 3.946 mal aufgerufen wurde. Der letzte Beitrag (4. Juli 2011 um 23:46) ist von Wiesel.

  • Mahlzeit,

    der cc65 hat auch die 264-Serie als Target. Wie allerdings Bitte melde dich an, um diesen Link zu sehen. zu lesen ist, gibt es unterschiedliche Speichermodelle für die Rechner, die mir Rätsel aufgeben: Beim Plus/4 wird "banking" benutzt, so dass der gesamte Speicher zur Verfügung steht. Für C16/C116 gibt's jedoch maximal 32k. Diese Ausbaustufe habe ich in der freien Wildbahn aber noch nie gesehen; üblicherweise findet man doch die 64K-Erweiterung an bzw. in den Teilen, oder nicht?

    Meine Frage lautet also: Wenn man einen C16 auf 64k erweitert hat, können diese 64k komplett von der cc65-runtime lib genutzt werden?

    Jens

    Bitte melde dich an, um diesen Link zu sehen. - Das offizielle iComp Supportforum ist online.

  • Mahlzeit,

    der cc65 hat auch die 264-Serie als Target. Wie allerdings Bitte melde dich an, um diesen Link zu sehen. zu lesen ist, gibt es unterschiedliche Speichermodelle für die Rechner, die mir Rätsel aufgeben: Beim Plus/4 wird "banking" benutzt, so dass der gesamte Speicher zur Verfügung steht. Für C16/C116 gibt's jedoch maximal 32k. Diese Ausbaustufe habe ich in der freien Wildbahn aber noch nie gesehen; üblicherweise findet man doch die 64K-Erweiterung an bzw. in den Teilen, oder nicht?

    Meine Frage lautet also: Wenn man einen C16 auf 64k erweitert hat, können diese 64k komplett von der cc65-runtime lib genutzt werden?

    Es gab damals für kurze Zeit eine 16K-Erweiterung für den C16 zu kaufen, steckte im Expansion-Port und brachte die Kiste auf 32KB. Kostete 99DM. Ich kenne keinen der eine hat, jeder hat die internen RAMs auf 64KB erweitert. War billiger und beim C116 auch schmerzfrei, beim C16 etwas aufwendiger wegen zu unterbrechender Leiterbahn unter einem der 74LS257.

    Meines Wissens besteht im Bezug auf Speicher zwischen C16 mit 64K und Plus/4 kein Unterschied. Die ROMs für BASIC und KERNAL sind dieselben, die Hardware zur Ansteuerung des Speichers ist dieselbe, nur die RAMs unterscheiden sich (4164 beim Plus/4 und 41464 beim C16 mit 64K) was aber irrelevant ist. Es sollte also reichen Software für den Plus/4 zu kompilieren wenn sie auf einem C16/64K laufen soll. Software die Userport oder RS232 voraussetzt wird natürlich nicht funktionieren solange beides nicht nachgerüstet ist.

  • Ich hab hier einen C16, der auf 64k erweitert wurde, dort steht das RAM dann wie beim +4 zur Verfügung. Die Erweiterung ist intern und nach einem Garantieaufkleber zu urteilen wurde der Rechner von irgend einem Vobis Service erweitert.

  • Es sollte also reichen Software für den Plus/4 zu kompilieren wenn sie auf einem C16/64K laufen soll.

    Ich hab hier einen C16, der auf 64k erweitert wurde, dort steht das RAM dann wie beim +4 zur Verfügung.


    Ich habe auch so einen C16 mit interner 64K Aufrüstung und Umschalter auf 16K.

    Es laufen alle Plus/4 Programme soviel ich weiss und soweit ich das getestet habe. Insofern glaube ich auch daran, dass cc65 Kompilate für den Plus/4 für den C16-64 auch laufen.

    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Mahlzeit,

    der cc65 hat auch die 264-Serie als Target. Wie allerdings Bitte melde dich an, um diesen Link zu sehen. zu lesen ist, gibt es unterschiedliche Speichermodelle für die Rechner, die mir Rätsel aufgeben: Beim Plus/4 wird "banking" benutzt, so dass der gesamte Speicher zur Verfügung steht. Für C16/C116 gibt's jedoch maximal 32k. Diese Ausbaustufe habe ich in der freien Wildbahn aber noch nie gesehen; üblicherweise findet man doch die 64K-Erweiterung an bzw. in den Teilen, oder nicht?


    Ist zwar selten in freier Wildbahn, aber sollte bekannt sein: Bitte melde dich an, um diesen Link zu sehen.

    In dem Panzer sind allerdings die alten fehlerhaften ROM's anzutreffen ... genaueres zu dem Thema kann in dem ROM-Listing von Markt & Technik / neue Commodore-Sachbuchreihe nachgelesen werden.

    Es gab nicht nur eine, sondern mind. 2 sog. +16 KB-Erweiterungen. Irgendwo stand mal, das unter dieser Speicherkonfiguration auch ein Fehler im Basic auftritt, ich konnte es aber mit einer +16 KB-Erweiterung nicht feststellen. Von der Logik her dürfte dann dieser Fehler auch nicht im Commodore 232 passieren. Stand irgendwo in einer C-16 Zeitschrift ... müßte mal gucken welche.

    Es gibt sogar ein Originalspiel, welches genau auf diese Erweiterung hingewiesen hatte: Bitte melde dich an, um diesen Link zu sehen.

    Es sind noch einige Spiele mehr für den Plus/4, die mit einen 32 KB-C-16/116 ohne Probleme laufen ...

  • Diese Ausbaustufe habe ich in der freien Wildbahn aber noch nie gesehen

    Jeder Plus/4 hat diese Speicherkonfiguration, solange man die ROMs nicht ausblendet. Da die C16-Runtime schneller und kleiner sein sollte, kann sich das durchaus lohnen gegenüber der 'großen' Plus/4-Lib.

    Es laufen alle Plus/4 Programme soviel ich weiss und soweit ich das getestet habe.

    Dann teste mal Terminal-Programme, Druckertreiber und anderes hardwarenahe Zeugs.

    Irgendwo stand mal, das unter dieser Speicherkonfiguration auch ein Fehler im Basic auftritt, ich konnte es aber mit einer +16 KB-Erweiterung nicht feststellen.

    GRAPHIC CLR vergißt bei 32K den BASIC-Speicher wieder nach unten zu kopieren. Das nächste GRAPHIC 1 setzt ihn aber wieder nach oben- was irgendwann einen Überlauf in die TED-Register und die Zeropage verursacht.

    KI-Verwendung in diesem Posting: Rechtschreibkontrolle des Browsers.
    Abweichungen aufgrund des technischen Fortschritts oder individueller Vorlieben vorbehalten.

  • aaaah - ein 264-Kenner :wink:

    Mir ging's hauptsächlich um cc65 und das Speichermodell. Wenn ich also plus/4 als Target auswähle, aber Seriell und Userport vermeide, müsste das mit C16+64k funktionieren?

    In Sachen Hardware habe ich noch nen Knoten im Hirn. Am Expansionsport von C16 und C116 sehe ich keinerlei Möglichkeit, das interne RAM abzuschalten. Demnach sind die internen 16k sowohl lesend, als auch schreibend immer dann aktiv, wenn der TED CAS zieht. Bilder von externen Speichererweiterungen zeigen auch keinerlei großartige Logik, sondern nur Multiplexer und RAMs. Das sieht für mich so aus, als würde eine RAM-Erweiterung für C16/C116 immer die Daten der internen Rams "überbügeln". Ich habe keinen Zweifel, dass das mit 64k gut klappt, aber bei +16k habe ich das Verständnisproblem: Wenn auf die externe Erweiterung geschrieben wird, müssten doch die internen RAMs die gleichen Daten bekommen? Oder übersehe ich da etwas..?

    Jens

    Bitte melde dich an, um diesen Link zu sehen. - Das offizielle iComp Supportforum ist online.

  • Dann teste mal Terminal-Programme, Druckertreiber und anderes hardwarenahe Zeugs.

    GRAPHIC CLR vergißt bei 32K den BASIC-Speicher wieder nach unten zu kopieren. Das nächste GRAPHIC 1 setzt ihn aber wieder nach oben- was irgendwann einen Überlauf in die TED-Register und die Zeropage verursacht.

    Also hardwarenahe Dinger sind klar: der Plus/4 hat halt einen 6551 (oder sehr oft stattdessen auch einen 8551) sowie einen 6529B für den Userport. Die müßten am C-16 natürlich nachgerüstet werden. Und der 6529B hat doch auch zig Spiegeladressen, auf die man zugreifen könnte ...

    Es gibt natürlich auch Userports für den C-16 auf 6522 Basis, genug Bastelanleitungen vorhanden. Die sind natürlich nicht kompatibel zum Plus/4.

    Ja das was ich meine ist mit GRAPHIC CLR. Habe ich mit einen C-16 mit +16 KB mal ausprobiert, aber da kam dieser Fehler gar nicht ...

  • cbm-warrior,

    kannst Du mal ein Foto einer solchen +16k-Erweiterung machen? Mir würd's schon reichen, wenn ich die Chips sehe. Ich werde das Gefühl nicht los, dass die in Wirklichkeit 32K Ram beinhaltet.

    Edit: Fotos gefunden bei Bitte melde dich an, um diesen Link zu sehen.

    Jens

    Bitte melde dich an, um diesen Link zu sehen. - Das offizielle iComp Supportforum ist online.

  • cbm-warrior,

    kannst Du mal ein Foto einer solchen +16k-Erweiterung machen? Mir würd's schon reichen, wenn ich die Chips sehe. Ich werde das Gefühl nicht los, dass die in Wirklichkeit 32K Ram beinhaltet.

    Interessant wäre auch ein Schaltplan eines 232, der hat ja 2 Bänke aus 4416 DRAMs, da würde mich die Ansteuerung interessieren.

  • Die Ansteuerung beim 232 ist wahrscheinlich sehr straight-forward mit geteiltem CAS. Extern ist viel interessanter, denn die +16k Erweiterungen haben wirklich nur 16k Speicher und Logik. Die ist aber nicht klein; ich tippe darauf, dass eine Kopie von bestimmten Registern angelegt wird, und dann wird irgendein Signal "überbügelt". Hinweise darauf sind das dicke NAND-Gate (LS133), das wahrscheinlich zur Dekodierung genutzt wird, sowie ein Transistor, der wohl genug Wumms hat, um eins der Ausgangssignale "anzupassen". Klingt nach der Holzhammer-Methode: Wenn's mit Gewalt nicht klappt, dann benutzt Du nicht genug davon :smile:

    Ich würde aber auch gern mal so eine 16k-Erweiterung in die Finger bekommen, dann kann ich ja mal nen Schaltplan zeichnen und schauen, wie die das alles gemacht haben. Es sieht wirklich nach übler Trickserei aus, denn da sind noch Kondensatoren an Signalleitungen zu sehen - wenn das mal keine RC-Verzögerungsglieder sind...

    cbm-warrior, Du müsstest gestern oder heute die Rücksendung mit dem Business Basic bekommen haben. Falls Du so eine 16k-Erweiterung Dein Eigen nennst, wärst Du bereit, mir die auch mal zu leihen?

    Jens

    Bitte melde dich an, um diesen Link zu sehen. - Das offizielle iComp Supportforum ist online.

  • Die Ansteuerung beim 232 ist wahrscheinlich sehr straight-forward mit geteiltem CAS.

    Die offizielle Lösung würde ich trotzdem gerne mal sehen.


    Zitat

    Extern ist viel interessanter, denn die +16k Erweiterungen haben wirklich nur 16k Speicher und Logik. Die ist aber nicht klein; ich tippe darauf, dass eine Kopie von bestimmten Registern angelegt wird, und dann wird irgendein Signal "überbügelt". Hinweise darauf sind das dicke NAND-Gate (LS133), das wahrscheinlich zur Dekodierung genutzt wird, sowie ein Transistor, der wohl genug Wumms hat, um eins der Ausgangssignale "anzupassen". Klingt nach der Holzhammer-Methode: Wenn's mit Gewalt nicht klappt, dann benutzt Du nicht genug davon :smile:

    Der Transistor hängt mit einem Bein direkt an _CAS. Ich kann mir aber nicht vorstellen, dass die Schaltung _CAS damit auf HIGH zwingt. Das dürfte der TED mit der Zeit übelnehmen. Interessant sind auch die verwendeten Multiplexer. Je ein 74LS157 und ein 74LS158 (invertierte Ausgänge), gibt es dafür einen Grund?

    Die eigentliche Logik zur Unterscheidung von internem und externem RAM muss sich in den 74LS133 und 74LS00 verstecken. Wenn ich das richtig sehe ist der Ausgang des 74LS133 direkt mit einem Eingang des 74LS00 verbunden. Besonders kompliziert kann sie demit nicht sein.

    Holzhammer-Erweiterungen hatten beim C16 leider Tradition, so funktionierten auch die 64KB-Erweiterungen für den Expansionport.

  • Der TED ist ein HMOS-Dings und zieht deswegen schon mit nicht wenig Strom gegen Masse. Ich würde CAS auch nicht ohne Weiteres gegen 5V ziehen, aber umgekehrt hätte ich keine Bauchschmerzen (achtung, reine Spekulation!): CAS auf Masse ziehen wo normalerweise kein CAS kommt. Wenn wir davon ausgehen, dass RAS und MUX immer laufen, dann ist CAS das alleinige Select-Signal.

    Jetzt stell' Dir vor, dass dem TED immer vorgegaukelt wird, dass ROM selektiert ist, also CAS nicht generiert wird, dann könnte man mit externer Logik das fehlende CAS erzeugen. Der Transistor wäre dazu da, dass der interne Speicher sich regt, und lokal auf der Karte wird ein zweites CAS erzeugt. Da CAS ohnehin nur ein verzögertes MUX-Signal ist, würde das auch die RC-Elemente erklären.

    Vielleicht kann mc71 uns erklären, was der TED macht, wenn er auf "ROM" gestellt ist? Gibt es für die CPU dann *nur* Rom? Und wo holt sich der TED dann seine Daten her?

    Jens

    Bitte melde dich an, um diesen Link zu sehen. - Das offizielle iComp Supportforum ist online.


  • Jetzt stell' Dir vor, dass dem TED immer vorgegaukelt wird, dass ROM selektiert ist, also CAS nicht generiert wird, dann könnte man mit externer Logik das fehlende CAS erzeugen. Der Transistor wäre dazu da, dass der interne Speicher sich regt, und lokal auf der Karte wird ein zweites CAS erzeugt. Da CAS ohnehin nur ein verzögertes MUX-Signal ist, würde das auch die RC-Elemente erklären.

    Das wäre aber ein hanebüchenes Design, ob das mit wirklich jedem C16 läuft wäre die Frage. Für eine Einzelanwendung kann ich solche Hacks verstehen, aber für ein Serienprodukt?

    Zitat


    Vielleicht kann mc71 uns erklären, was der TED macht, wenn er auf "ROM" gestellt ist? Gibt es für die CPU dann *nur* Rom? Und wo holt sich der TED dann seine Daten her?

    Wenn ich das Datenblatt zum TED korrekt verstehe (Falls du es nicht hast, google nach '7360R0') gilt die Umschaltung ROM/RAM nur für $8000-$FFFF (minus I/O-Space und TED-Register). RAM vor $8000 ist auch im ROM-Mode erreichbar und den Zugriff auf den Zeichensatz (ROM oder RAM) steuert Bit 2 in Register 18 unabhängig von der generellen Umschaltung.

    Die Umschaltung erfolgt über Schreibzugriffe auf Register 62 (ROM) und 63 (RAM), nach aussen sichtbar ist sie über aktives _CAS (RAM) bzw. aktive Chipselects (_CS0 und _CS1 für die ROMs).

  • cbm-warrior, Du müsstest gestern oder heute die Rücksendung mit dem Business Basic bekommen haben. Falls Du so eine 16k-Erweiterung Dein Eigen nennst, wärst Du bereit, mir die auch mal zu leihen?


    Grundsätzlich kein Problem, frag nur nicht wann :( denn noch ist 90 % meines Hobbys nach Umzug in Kisten wildwest gepackt ... wenn es Zeit hat um so besser. Von diesen +16 KB-Erweiterungen habe ich einige hier rumfliegen.

    Das Business Basic ist wohlbehalten zurückgekommen ...

  • Also meine Neugierde ist schon recht groß - wenn Du da mal 'n Stündchen wühlen könntest? Ist doch ohnehin blöd, wenn man nach dem Umzug zwischen Kisten wohnt. Eine Kiste pro Tag ausräumen sollte drin sein, sonst kommst Du nie in der neuen Bude an. Und das sage ich natürlich total uneigennützig :wink:

    Jens

    Bitte melde dich an, um diesen Link zu sehen. - Das offizielle iComp Supportforum ist online.

  • Ich hab' grad mal bei hood.de und eBay geschaut, aber 16k-Erweiterungen werden da überhaupt nicht angeboten. Nichtmal im Komplett-Pack! Also.. gib' Dir mal nen Ruck und wühl' mal :smile:

    danke,
    Jens

    Bitte melde dich an, um diesen Link zu sehen. - Das offizielle iComp Supportforum ist online.

  • Ich hab' grad mal bei hood.de und eBay geschaut, aber 16k-Erweiterungen werden da überhaupt nicht angeboten. Nichtmal im Komplett-Pack! Also.. gib' Dir mal nen Ruck und wühl' mal :smile:


    Den Ruck gebe ich mir, nur momentan beim besten Willen nicht. Da sind momentan noch andere Gründe im privaten Umfeld, ich denke in ca. 2 Monaten geht es wesentlich eher.

    Und bei der Plus/4 World wirst Du sicher auch gesehen haben, das dort 3 solche Erweiterungen rumgeistern. Ich bin mir aber relativ sicher, das ich noch einen anderen Hersteller habe, auch wenn die mit der Kingsoft-Version extrem ähnlich sieht.

    Und bei den 64 KB-Erweiterungen sieht es wild aus: ich habe auch schon eine hier gehabt, die brachte nur am Expansionsport ohne Änderung die 64 KB, die funktionierten. Meist zeigen die zwar die 64 KB an, aber solange die Adreßleitungen auf der Platine nicht geändert werden, hat man keinen Zugriff auf den vollen Adreßraum.

  • Ähemm.. Änderungen an den Adressleitungen? Es werden bei 64k schlicht und einfach alle verwendet, da gibts nichts zu ändern. Die 64k-Erweiterungen sind vergleichsweise simpel, weil sie einfach den internen Speicher überbügeln. Sauberer wär's, wenn der interne Speicher ganz rausgenommen wird, aber die Option haben die meisten C16/C116-Nutzer nicht. Da gefällt mir dieser Gedanke hier schon besser:

    Die Umschaltung erfolgt über Schreibzugriffe auf Register 62 (ROM) und 63 (RAM), nach aussen sichtbar ist sie über aktives _CAS (RAM) bzw. aktive Chipselects (_CS0 und _CS1 für die ROMs).


    ...da steckt nämlich drin, dass man sich sein eigenes CAS draußen generiert, und zwar nach der simplen Logik "wenn nicht Rom, dann Ram". Das würde aber die Vermutung nahelegen, dass von den zusätzlichen 16k bei $4000-$7fff auch eine Spiegelung von $c000 bis $ffff (minus IO) erforderlich ist. Und der "minus IO"-Teil ist Grund für die aufwändige Logik auf der 16k-Erweiterung.

    Ich bleibe daher bei meiner wilden Spekulation, dass es sich bei dem Transistor um eine push-Stufe handelt, die CAS=1 forciert. Es müsste sich demnach um einen PNP-Typen handeln. Und ja, das gefährdet den TED - vielleicht ist das der Grund, warum der TED als so "leicht sterblich" gilt? Waren dei 16k-Erweiterungen vielleicht sogar sehr häufig und haben dazu beigetragen, dass die Chips wie die Fliegen gestorben sind?

    Jens

    Bitte melde dich an, um diesen Link zu sehen. - Das offizielle iComp Supportforum ist online.

  • Ähemm.. Änderungen an den Adressleitungen? Es werden bei 64k schlicht und einfach alle verwendet, da gibts nichts zu ändern. Die 64k-Erweiterungen sind vergleichsweise simpel, weil sie einfach den internen Speicher überbügeln. Sauberer wär's, wenn der interne Speicher ganz rausgenommen wird, aber die Option haben die meisten C16/C116-Nutzer nicht.

    Ausbauen muss man den Speicher nicht, die 4416 und 4464 haben auf Pin 1 ein _OE liegen. Pin 1 bei jedem RAM von der Platine trennen sollte reichen um den onboard-Speicher stillzulegen. Ausgänge gegeneinander arbeiten lassen ist mir jedenfalls extrem unsympatisch, vor allem wenn es sich dabei um Ausgänge schwer beschaffbarer ICs handelt. Auch kann man da böse reinfallen wenn die internen RAMs aus einer Charge stammen bei der die Ausgangstreiber etwas stärker ausgefallen sind.

    Zitat


    Ich bleibe daher bei meiner wilden Spekulation, dass es sich bei dem Transistor um eine push-Stufe handelt, die CAS=1 forciert. Es müsste sich demnach um einen PNP-Typen handeln. Und ja, das gefährdet den TED - vielleicht ist das der Grund, warum der TED als so "leicht sterblich" gilt? Waren dei 16k-Erweiterungen vielleicht sogar sehr häufig und haben dazu beigetragen, dass die Chips wie die Fliegen gestorben sind?

    Der Preis für eine 16K-Erweiterung lag damals bei 99 DM, für eine 64K (intern, Zwischensockel für TED, also wahrscheinlich sauberes Design) musste man 199DM hinlegen. Wäre also schon möglich, dass einige Leute diese Erweiterungen benutzt haben. Ich hab damals den dritten Weg genommen und die internen RAMs gegen 4464 getauscht, kam billiger, war aber mehr Arbeit. Dafür hatte ich persönlich (und die paar Leute denen ich ihre C16 erweitert hatte) nie einen toten TED oder CPU. Kühlkörper hatte ich auch montiert.

    Für deine Spekulation spricht, dass die Adressen des I/O-Bereichs viele 1-Bits enthalten und das die ideale Anwendung für das NAND mit den extra vielen Eingängen ist.