Posts by cbmhardware

    Ich kenne das "Kung Fu Flash" leider nicht. Auf den ersten Blick würde ich aber nein sagen. Dieses alte Comal80-Cartridge verwendet ein 16kByte-Banking mit einer total blödsinnigen Schaltung. Idealerweise müsste man die ROMs anpassen und mal schauen, ob diese vorliegende Schaltung auch als Kopierschutz dient. Im Prinzip braucht man dann nur noch ein 010er-ROM, ein Register und wahrscheinlich ein paar Gatter zur Anpassung, damit die 16kByte-Bänke passend eingeblendet werden.

    Ich hatte eben einen kurzen Blick ins erste ROM geworfen. Leider ist meine Erinnerung nach 15 Jahren etwas diesig. :) Es wird jedenfalls auf I/O1 und $ff01/ff04 (Banking ?) geschrieben. Diese kleinen Routinen müsste man mal reassemblieren und durchsehen, was da tatsächlich abläuft. Dann sollte einer Nachbildung nichts im Weg stehen.

    Man kann auch die überlange Leitung deutlich kürzen. Hatte die "8x RAM" zuerst übersehen. Dann sind die Multiplexer auch klar und die RAMs werden 8x8Kbyte, also gesamt 64kByte sein. Die kann man auch geschickter einbauen. So treibt der wie bei diesen ehemaligen Cartridge-RAM-Lösungen in zwei Speicher. Die ganzen Strippen und doppeltes Treiben sind sicher nicht gut für die sowieso schon zu empfindliche CPU.

    Sieht wie ein Flickwerk aus, um die internen ROM-Bänke wie beim Plus/4 nach zurüsten. Aber allein die Kabellänge ist schon sportlich. Das sollte man so auf keinen Fall verwenden. Ich kann die beiden Multiplexer auf dem Adapter im Moment nicht erklären, aber ich tippe, dass es auf den Kernel-ROM Steckplatz sollte und dieses dann durchgeschleift wird. Dann fehlen aber immer noch die Chip-Selects ( http://www.zimmers.net/anonftp…us4/plus4-310164-4of4.gif ) für die ROM-Bänke. Könnte die bunte Flachleitung vielleicht sein.


    Ich würde das entsorgen und den C16 wieder original aufbauen.

    Heute mal ein "Heizgebläse für die Heizung" gefräst, kann man auch fertig kaufen, sind aber bekloppt teuer: https://www.amazon.de/SpeedCom…erheizungen/dp/B0969MXXM3 .

    Kann man so schon unter meine Heizung stecken, kommen aber noch kleine Neodym-Magnete in die Seiten. Evtl. kommt noch ein Tiny mit PTC oder Temp.-Sensor dazu, um es automatisch steuern zu können. Gespeist wird es bei mir dann aus einer Power-Bank.

    Hier ist auch noch ein Bericht dazu: https://www.n-tv.de/technik/He…aren-article23700672.html , muss wohl funktionieren.



    Und wenn man das lesen kann hat man den Schaltplan.

    Wenn jemand das ganze "Kunterbunt" in einen Schaltplan umsetzen kann, gäbe es da nicht die Möglichkeit, den SID mit gegossener Logik nachzubilden ? - Also ein FPGA oder CPLD mit angebautem Analogteil ?

    Kommt mir bekannt vor. Bei mir liegen seit einiger Zeit einige Teile für die internen ROM-Steckplätze auf dem Tisch. Fehlt ein Register und etwas weitere Logik für den Schreibzugriff. Letztlich wird es den "bleed-through"-Effekt nutzen müssen und ich möchte bald damit anfangen. Muss sowieso noch eine 1551 für jemanden reparieren, der langsam schon trampelt. :)


    Wird ein paar Leitungen von anderen Bauteilen brauchen: R/W, Phi2 und F0 (? .. Erinnerung ist unsicher) vom PLA. Also von gesockelten Bauteilen, die sich leicht mit einem Zwischensockel anzapfen lassen. Wird dann erst mal nur für die Lo-Bank (512kByte Flash).


    Bin im Moment neben der Arbeit aber noch mit der Restauration eines angehenden Oldtimers beschäftigt.

    Aber meine Idee mit den 4 verlorenen Bytes am EPROM Adressende geht so, dass die EPROM Bank-Nummer über den Adressbus [A0/A1] sozusagen auscodiert wird:

    1. Lesezugriff auf [Adresse EPROM-Ende -3 / A1=0/A0=0] => Aktivierung EPROM Bank 1.
    2. Lesezugriff auf [Adresse EPROM-Ende -2 / A1=0/A0=1] => Aktivierung EPROM Bank 2.
    3. Lesezugriff auf [Adresse EPROM-Ende -1 / A1=1/A0=0] => Aktivierung EPROM Bank 3.
    4. Lesezugriff auf [Adresse EPROM-Ende -0 / A1=1/A0=1] => Aktivierung EPROM Bank 4.

    Soweit ich gelesen habe, lässt sich die Speicherung der 2 Bit für die EPROM Bank_-Selektierung mit einem TTL 2-Bit-Latch realisieren.


    Das wäre mir neu. Das Lo-ROM liegt im Bereich $8000-$bfff, man müsste also $bffc dekodieren lassen. Letztlich muss dann $bffc als Select-Leitung übrig bleiben. Wenn jetzt meinetwegen A0=0, A1=0 : $bffc herauskommt, liest man von $bffc. Beim Zugriff der CPU auf $bffd schaltet sich dann alles um, da die CPU nicht wartet und gar nicht weiß, dass man die Adressleitungen braucht, um aus einem ganz anderen Bereich zu lesen. Demnach kann man auch nur 4 Bit aus einem anderen Bereich lesen, wenn man diese dekodiert. Man kann der CPU nicht sagen: "Hey ich habe auf $bffc gelesen, warte mal kurz, ich brauche die Adressleitungen". Das geht beim C64 per DMA und BA, ist mit einem ROM-Sockel aber unmöglich.


    Was man braucht ist der Schreibzugriff: http://www.zimmers.net/anonftp…us4/plus4-310164-4of4.gif , so macht es der P/4 auch.

    Evtl. lässt sich das auch exklusiv nur intern via der Erweiterungs-ROM-Sockel lösen. Man könnte z.B. die letzten 4 Bytes vom High-EPROM für die Bank-Umschaltung missbrauchen (nur Read-Zugriff) und die Banknummer (1-4) mit extra TTL Chips dann speichern. Da gehen dann zwar 4x4 Bytes (E)EPROM-Speicher verloren, jedoch braucht man keine anderen separaten, komplizierten Lösungen mit extra Verdrahtungen...

    ROM = Read only Memory ... an den Erweiterungssockeln liegt dementsprechend keine R/W-Leitung, man kann also kein Bit setzen, demnach ist das nicht möglich. Da wird nur Read in den Select-Leitungen eingebunden.

    Gibt es irgendwo eine Information/Anleitung, wie man eine .prg Datei in ein (Cartrige-)Eproms speichern und später im Plus/4 dann vom (Cartrige-)Eprom starten kann ?!


    Ausserdem suche ich noch eine Schaltungsbeispiel mit ROM-Bank-Switching, um 2x 64KB in den beiden ROM-Sockeln verwenden zu können.

    Ich hatte Dir den Link schon gezeigt, aber hier ist noch ein Beispiel mit einem Programm: http://www.cbmhardware.de/show.php?r=4&id=29 . Dazu musst Dich mit Assembler, den Routinen und der Architektur des P/4 beschäftigen.


    Naja, ein ROM-Banking per Userport wäre trivial: A15 und A14 mit jeweils einem Bit beschalten, dann hat man 16kByte Pages.

    Cartridge (extern) oder internes ROM sind bei mir zwei völlig verschiedene Dinge....

    Das ist beim Plus/4 nicht wie beim C64. Die internen ROMs werden ähnlich wie ein Cartridge behandelt. Unten die Tabelle ROM-Banking: http://cbmhardware.de/show.php?r=4&id=11 , anhand von $ffddx wird ausgewählt, welche Kombination eingeblendet wird, das findet man dann auch leicht in der Schaltung wieder: http://www.zimmers.net/anonftp…us4/plus4-310164-4of4.gif .

    Die Header ist intern wie extern auch immer "identisch": $modulnummer,CBM. Ich fand damals bei den internen 3plus1-ROMs eine andere Behandlung als beim Cartridge. Der Unterschied lag in den angesprungenen Routinen. Beim ROM wird die Einsprungadresse nach $05f0, $05f1 geschrieben und dann eine Longjump-Routine angesprungen. Beim Cartridge war es ein Vector bei $02fe, $02ff und Sprung in die modifizierten Banking-Routinen. Der Unterschied liegt im Aufruf: ein Cartridge wird direkt ausgeführt und beim Function-ROM wird eine Tastenabfrage eingefügt (F1 für irgendwelchen Käse). Diese ROMs bringen also einen Teil der Funktionen mit, sollten demnach auch problemlos austauschbar sein. Ein Function-ROM kann ein Cartridge werden und anders herum, auch wenn das beim Cartridge nicht sinnvoll ist. Wenn man das in den Function-ROM Sockel steckt, kann der P/4 nur noch dieses ROM ausführen, anders herum macht es mehr Sinn

    Lange Rede kurzer Sinn: das interne ROM unterscheidet sich vom Cartridge, ist aber auch das selbe. :) Mann kann es auch über externen Code einblenden und munter über eigene Routinen als Datenbunker nutzen. Dann ist es identisch.




    .

    Um das ganze auf die Spitze zu treiben...würde beim plus/4 eine Adapterplatine passen um zwischen Roms hin und her schalten zu können ?

    Auf die Spitze treiben ? :) -> Zwei 040er Flash (512Kx8), Userport-Bits mit Dekoder fürs Banking und $FD20 vom PLA (ungenutzte Speech-Erweiterung für den 364er) fürs saubere Beschreiben. Dann hat man 1MB die immer wieder individuell gefüllt werden können. In Bank 0 , Function-ROM Low wäre dann idealerweise eine Auswahl nach Aufruf.


    Das klingt wirklich interessant. Dazu muss ich noch einiges über die Architektur lernen, um das alles zu verstehen. Ich sagte ja, der plus/4 ist was neues für mich. Du meintest, das sei spärlich dokumentiert. Gibt es überhaupt Dokumentation dazu, in die ich mich einlesen sollte?

    Ich hatte mir das über ROM-Listing und diverse Fragmente per "learning by doing" angeeignet. Eine lesbare Zusammenfassung kenne ich nicht.

    Vielen Dank! Dann kann ich welche bestellen und mal testen. Wäre ja spannend. Und natürlich wäre das Thema interessant, etwas sinnvolles mit den ROM-Sockets zu machen. Das Thema werde ich auch weiter verfolgen.

    Im Prinzip kann man die ROMs mit x-beliebiger Software füllen, diese über einen Trampolin-Code heraus kopieren, ROM abschalten, den P/4 initialisieren und die Software starten. Wenn man es etwas größer haben möchte, könnte man die meist ungenutzten Userport-Bits noch für Banking hinzuziehen. Die wurden auch für uralte RAM und ROM-Erweiterungen verwendet. Mit zwei 27c512 kann man dann schon 128kByte in ROMs unterbringen.

    Hier wird z.B. die Low-Bank verwendet: http://cbmhardware.de/show.php?r=4&id=16 oder hier beide Bänke als externes Cartridge: https://github.com/cbmuser/gamecart_plus-4

    Die Cartridge-Version lässt sich leicht mit dem Register $ffd0 auf Function-ROM ändern. Dieses ganze Handling sieht auf den ersten Blick etwas kompliziert aus, ist aber eigentlich ein Flickwerk aus Einzelroutinen und Registern, damit das ROM letztendlich in den IRQ eingeschleift wird. Solche Sachen sind dann oft auch spärlich bis gar nicht dokumentiert. Ich hatte mich vor Jahren mal da durch gearbeitet.

    Da ich mit den Matrix-ICs so gar nicht weiterkomme, belausche ich den TCBM-Bus vom Plus/4. Wird erst mal nur eine kleine CPP-Class. Den Jobcode konnte ich schon mal fetchen. Mal sehen ob ich die DOS-Verbindung irgendwie nutzen kann.