C16-Plus/4: Module und Bankswitching

Es gibt 86 Antworten in diesem Thema, welches 15.483 mal aufgerufen wurde. Der letzte Beitrag (25. Oktober 2015 um 18:58) ist von cbmhardware.

  • Wenn da nach jedem Byte, erst wieder am Flash ein Bitmuster gelöscht werden muss, habe ich ohne Lesen, so oder so verloren. :/

    hallo, ich wollte dich nicht entmutigen oder demotivieren mit dem Hinweis aufs Datenblatt. Ich glaube, die Stelle ist so zu lesen, dass Schreibzugriffe ein bestimmtes Format einhalten; an anderer Stelle steht dann, dass man nach jedem geschriebenen Byte einen Lesezugriff tätigen soll / kann, bevor die Adresse um eins weitergezählt und beim Schreiben weitergemacht wird. Von daher wäre es vielleicht ganz gut, wenn OE auch im Programmiermodus nähere Bekanntschaft mit den Bankingsignalen vom DIP-Switch (Pins 9..12 von SW1 bzw. Pin 1 vom Jumper) machen würde und dafür das über die Gatter geführte R/W Signal ein bisschen mehr Abstand zu OE gewinnen könnte ..

    Wenn du eh ein selbstgeschriebenes (!) und offenbar bewährtes Flash-Schreibprogramm besitzt, ist schon so viel Vorarbeit auf dem Weg zum Ziel geleistet, dass es echt schade wäre.

    Zu den DIPs: ich sah nur dass drei Kontakte mit einem blauen Balken irgendwie "Zusammengefasst" sind, kenne diese Notation nicht, aber jetzt wo du schreibst die machen die 16K-Umschaltung "innerhalb" des Flash-Chips, ist es mir klar.

  • Wenn man von einem Port lesen muss, das aber nicht kann, braucht man sich nichts vor zumachen, das geht dann nicht. :) Ist nicht weiter tragisch, das kann auch ein 128KByte SRAM werden, das dann nur eine etwas andere Behandlung braucht. Dafür hat man dann den Software-Aufwand sogar eingespart.

    Das ist Pin-kompatibel und als DIL-Käfer da: Bitte melde dich an, um diesen Link zu sehen. , damit geht es dann erst mal weiter.

    Für ein richtiges Cartridge würde ich aus Platzgründen dann doch lieber eine kompaktere PLCC-Version verbauen.

    Diese blaue Linie im Schaltplan ist ein zusammengefasster Bus. Da kann man z.B. Daten- und Adressleitungen zusammenfassen und diesen Bus dann anderer Stelle wieder weiterverwenden. Beim Routing der Platine tauchen dann alle Verbindungen auf.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • EDIT (leider zu spät) :

    nachdem ich mein Posting oben geschrieben hatte, fiel mir ein, dass es ja vollkommen reichen würde, auch beim Beschreiben des Flash mit deinem Flasher-Programm
    den Jumper 1 auf "Cartridge-Mode" gesteckt zu belassen.

    EDIT: Fast Ohne jede weitere Hardware-Änderung an deiner obigen Schaltung!
    Du würdest Jumper 1 einfach dauernd auf der unteren Stellung belassen, und schon kann das Flasher-Programm lesen.

    Der Effekt des Jumpers ist ja allein auf OE gerichtet, und solange der C16 C1Low und so weiter erzeugt, fühlt sich der Flash-Baustein lesend angesprochen und alles ist paletti.

    (Abgesehen von dem Unsicherheitsfaktor entlang der R/W Leitung der schon mehrmals erwähnt wurde.)
    Nun müsste nur noch dafür gesorgt werden, dass bei Schreibzugriffen OE auf High bleibt.

  • Man muss wohl die passende Banking-Leitung verwenden. Das reicht dann aber nicht, da die CBM-Kennung nicht vorhanden ist, es dementsprechend nicht eingeblendet wird. Das geht aber mit ein paar Zeilen Assembler.
    Lesen geht aber auch dann nicht. Und ich vermute so langsam, dass ich mit A15 auch noch alle Schreibzugriffe der CPU (Kernal) über $8000 im SRAM landen. Bisher habe ich es nichts ins passend SRAM hinein bekommen. Hatte es mit dem BIN vom Jack Attack Modul versucht.
    Ins RAM schauen mit diesem eingebauten Monitor geht auch wohl nicht, da sieht man dann das Basic-ROM. Das ist Konstruktion im Blindflug an einer total vermurksten Banking-Kiste. :)

    Viel Spaß macht das nicht. Ich werde es mal an Adresse $4000 versuchen, da liegt nicht so viel Kram aufeinander.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Auf $4000 liegt immer RAM, also erzeugt TED dazu immer ein _CAS. Damit siehst du beim Auslesen den Inhalt des DRAM und nicht den Inhalt des SRAM.

    Es könnte sinnvoll sein, sich folgende Erweiterung zu installieren. Geht am einfachstem in einem Plus/4, da man hier die internen Software-ROMs damit ersetzen kann:

    Bitte melde dich an, um diesen Link zu sehen.

    Damit kannst du im Monitor die gewünschte Bank angeben.

  • Diesen ungarischen Monitor mit dem 1551-Speeder habe ich noch irgendwo auf Modul. Bringt die langsame 1551 auf angemessene Geschwindigkeit und der Monitor ist auch sehr gut.

    Ich werde es dabei belassen. Da ist kein zufriedenstellendes Ergebnis in einem vertretbaren Aufwand möglich. Der Rechner hat nach Erscheinen wirklich sein bestmögliches Ergebnis erzielt: den Total-Flop.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Das hier besprochene zum Modulzugriff und Decodierung der Signale CE, OE und WE hab ich in der letzten Zeit gedanklich nachvoll- u. in die Skizze einbezogen.
    Das Ergebnis sieht etwa so aus:

    [imgintern]Bitte melde dich an, um diesen Link zu sehen.[/imgintern]

    Man könnte die R/W-Leitung noch entlasten, indem man stattdessen wie von Gerrit vorgeschlagen, CAS einbezieht.
    Und nun kritisiert mal schön :wink:

  • Ich habe es schon wieder weggeräumt. Aber hier gibt es Anleitung zum internen SRAM-Einbau: Bitte melde dich an, um diesen Link zu sehen.
    sram.zip

    SRAM ist heute eigentlich nicht mehr zeitgemäß. Wenn man so etwas anfängt, dann sollte es schon Flash sein. Und ohne einen Krauteinbau. Da sehe ich so keine wirklich praktikable Möglichkeit.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • mein Vorschlag sollte eigentlich mit Flash kompatibel sein, steht zumindest in der Skizze ..

  • Das wird so auch nicht funktionieren. Wenn Du Lesen möchtest, musst Du erst mal das ROM einschalten. Bei Default-Konfiguration liest Du je nach Adresse: RAM oder ROMs (Basic & Kernal). I/O natürlich auch.

    Also

    Code
    ldx #$02
    sta $ffd5,x
    stx $fb
    rts

    Danach ist das ROM dann ab $8000 da. Nun hat C1LOW=0 und nach Deinem obigen Schema: C1LOW=0 NAND 1(Pullup) = _CE:1 , der Chip ist nicht selektiert.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Das rechte Gatter ist kein NAND sondern ein AND.

  • Und was ist das für ein Ungetüm oben drüber ? ;)

    Damit geht das lesbar: Bitte melde dich an, um diesen Link zu sehen.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Ein NAND-Gatter mit je 2 nichtinvertierenden und 2 invertierenden Eingängen.

    Gibts so zwar nicht fertig zu kaufen, aber kann man sich aus verfügbaren Logikgattern leicht selbst zusammensetzen. Insgesamt kommt man mit ca. 5 NAND-Einzelgattern hin.

    Eagle u./od. KiCad installier ich mir demnächst wenn ich mehr Zeit habe :smile:

  • Diesen ungarischen Monitor mit dem 1551-Speeder habe ich noch irgendwo auf Modul. Bringt die langsame 1551 auf angemessene Geschwindigkeit und der Monitor ist auch sehr gut.

    In der aktuellen Version ist der 1551-Speeder anscheinend nicht mehr drin.

  • Ein NAND-Gatter mit je 2 nichtinvertierenden und 2 invertierenden Eingängen.

    Gibts so zwar nicht fertig zu kaufen, aber kann man sich aus verfügbaren Logikgattern leicht selbst zusammensetzen. Insgesamt kommt man mit ca. 5 NAND-Einzelgattern hin.

    Eagle u./od. KiCad installier ich mir demnächst wenn ich mehr Zeit habe :smile:

    Tja, "Versuch macht kluch". Ich nehme mal kurz ein 8K SRAM, 74138 und 7408 und klatsche das mal auf ein Steckboard. Für die Leitungen habe ich ein Modulport-Adapter und 8K SRAM wegen weniger Leitungen.

    Aus dem "Ungetüm" soll dann bei A15=1, A14=0, R/W=0 und AEC=1 am Ende dann Low herauskommen ?

    Ich fresse einen Besen, wenn das so klappt. :)

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Ich kann es machen wie ich will: ich lese nur Rauschen. Nach dem Reset passiert auch nichts. Habe mehrfach mit verschiedenem Banking "Jack-Attack.bin" geladen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Ich will nicht hoffen, dass ich mich irgendwo versteckt habe. Es sieht aber nicht danach aus. Die gleichen Ergebnisse hatte ich gestern auch.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |

  • Das ging ja schnell.


    Fragen:

    - kann der eingebaute Maschinenmonitor TEDMON überhaupt Modulspeicher anzeigen? oder - meine Erinnerung ist hier ungenau - vielmehr nur eingebautes Basic/Kernel und bestenfalls mit Umstellen eines Flags (bei $7xx o.ä.) den Ram darunter?

    Den Code (die Datei) kenne ich nicht.

    - Ist der Code relokatibel bzw. ist es auf den Adressbereich ausgelegt in dem es laufen soll?
    - passt der Code in 8 KB oder braucht es mehr, z.b. 16 KB? Falls letzteres, überschreibt die obere Hälfte die untere Hälfte. Falls es Modulcode mit Kennung ist, wird diese dadurch zerstört.
    - ist die Datei 8192 oder 8194 oder 16384 oder 16386 Bytes groß?

  • An das Binary vom Jack-Attack-Modul habe ich natürlich eine Ladeadresse $8000 angebaut. Mit oben schon mal genannten Codezeilen kann man das Modul einblenden: es muss da allerdings sta$fdd0,x und nicht $fdd5,x heißen.

    Das Modul hat natürlich 16K, aber es sollten ja zumindest nach dem Laden die ersten 8K da sein. Das müsste bei Reset schon für ordentlich Kirmes reichen. :)

    Hatte auch alles vorher im xplus4 vom Vice getestet. Da kann man im externen Monitor auf RAM umschalten: "bank ram". Da war es dann passend geladen.

    If we're evil or divine - we're the last in line. - Ronnie James Dio (1984) -
    Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen. |