C16-Plus/4: Module und Bankswitching

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

  • Es ist für die Funktion keineswegs egal sondern vielmehr essentiell, dass du entgegen den impliziten bisherigen Annahmen nun statt 16 KB nur einen 8 KB Speicher einsetzt.

    können die Laderoutinen des C16 /+4 überhaupt in den RAM oberhalb $8000 laden?

    Selbst falls sie es können, werden in deinem 8K-Modul das ja nur mit A15 und A14 (für 8K bräuchte man noch A13=low) unvollständig ausdekodiert, die oberen 8K auf die untern 8K gespiegelt. Sodass direkt nach Lade-Ende sich nur die obere Hälfte des Modulcodes im Speicher befindet, dies zum Ausgleich dafür allerdings zweimal hintereinander gespiegelt .. und die Modulkennung die ja nur im unteren Teil wäre, ist futsch.

    Nichtsdestotrotz, ab $8000 müsste bei 8KB SRAM der selbe Code wie ab $A000 zu finden sein, ist das der Fall?

    vielleicht wärs den Versuch wert, nach $4000 zu laden (also du änderst deine drangebastelte Ladeadresse im File von 8000 auf $4000), und dann manuell mit TEDMONs Copy- Befehl (oder heisst der MOVE) den Bereich 4000-5FFF nach 8000 kopieren. Durch diesen Kopiervorgang hast du unter Kontrolle dass nur 8 KB in dein Modul geschrieben werden und es wird zumindest keine Modulkennnung beschädigt.
    T <Anfangsadresse> <Endadresse> <Start Zieladresse>

    Es wäre wohl besser für diese Tests mit einem Nur-8KB-SRAM (früher wurde nur von 16 KB gesprochen) statt dieses Modulcodes einen Code zu nehmen der in jeder Hinsicht OK ist und in 8K passt.

    EDIT:
    noch 2 Anmerkungen.
    - Im freien Flug das Basic-ROM wegblenden ohne dem Betriebssystem Bescheid zu geben dürfte Probleme machen. Wo hast du deinen Umschaltcode positioniert, in der erweiterten Zeropage? und schaltest du direkt nach dem Lesezugriff wieder zurück?
    - könntest du deine Umsetzung mit dem 74LS138 und dem 74LS08 mal als Schaltplan posten? vielleicht ergeben sich hier noch Ansatzpunkte zum Debugging.

  • Einen Schaltplan habe ich nicht:

    138er:

    Pin 1 : (a0) a14
    Pi n2 : (a1) erst CAS, jetzt VCC ,... AEC stellt mein Adapter nicht zur Verfügung
    Pin 3 : (a2) R/W
    Pin 4,5 :EN1,2 : GND
    Pin 6 : EN3: A15
    Ausgang: Pin 13 O2

    Und dann AND ein 7408: Pin 1,2 und 3 wieder raus.

    Habe das Modul mal auf 8K gekürzt: keine Änderung. Die paar Codezeilen habe ich ab $1000 immer wieder kurz eingegeben. RAM kann man so einfach natürlich nicht einblenden. Dann schießt man sich den Rechner ab.
    Lesen ist Rauschen, also ständig sich ändernder Inhalt. Nach dem Reset: nichts, Startbildschirm.

    Mehr mache ich jetzt auch nicht. Das wird nichts.

    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. |

  • Hm? Das ist ein alter Rechner aus den 80ern, da sollte man zum Rechner passende Hardware nehmen und wenn das SRAM sein sollte, dann ist das eben so.


    Vielleicht kann man auch einen Umweg gehen. Ich habe mal $fd20 sauber dekodiert und da sieht es gleich viel entspannender aus. Hängt im Moment nur ein 7474 Flipflop dran.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Mir reichen schon 4Bit für SPI. Ist aber vieles aus dem Gedächtnis und bedarf sicher etwas Nachbesserung: Bitte melde dich an, um diesen Link zu sehen. Mit 32 GPIOs könnte man auch problemlos ein Flash programmieren.

    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. |

  • Einen Schaltplan habe ich nicht:
    (..)
    Lesen ist Rauschen, also ständig sich ändernder Inhalt. Nach dem Reset: nichts, Startbildschirm.

    Was meintest du genau mit "Lesen" : Speicherinhalt mit TEDMON anzeigen?
    oder

    Code
    Print Peek(32768)


    oder - ?

    Und bitte versteh mich nicht falsch, wenn du einfach Reset drückst ohne den Jumper umzustecken, finden evtl. während RESET RAM-Schreibzugriffe statt die das Modul mitbetreffen; den Jumper umstecken ohne den Rechner aus- und einzuschalten könnte hingegen die Elektronik gefährden (worauf der C16 ja empfindlich sein soll); Aus- und Einschalten um den Jumper umzustecken schont zwar die Hardware , löscht aber den frisch geladenen Inhalt im Modul-RAM wieder - jedenfalls solange keine Pufferbatterie mit dem SRAM verbunden ist - - - - ein Teufelskreis sozusagen.

  • Ein 7474 Flipflop dürfte gutmütiger auf fehlende Stützkondensatoren reagieren als ein CMOS-SRAM.

  • Ich hatte immer kurz in den Tedmon geschaut, nach Umschalten per vorher genannten ASM-Zeilen. Umgeschaltet habe ich auf dem Steckboard während des Betriebs, so bange bin ich nicht.
    Wenn Du herausfinden möchtest, ob und wie es funktioniert, wirst Du es aufbauen müssen.

    Stützkondensatoren ? - Du meinst sicher 100nF-Kerkos zum Filtern von hochfrequenten Störsignalen ? - Das habe ich nur mal so aus dem Ärmel fallen lassen. Ist weder vollständig noch eine endgültige Version.

    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. |