Moin Janko,
Danke für die Files.
Wenn ich es richtig interpretiere, ist Deine Logik so aufgebaut, daß ein Zugriff auf $BFF0-$BFFF jedes Mal ein CLK für den 74er erzeugt und A15 zum Eprom durch das Flip-Flop gesetzt oder gelöscht wird. Das heißt, bei jedem Zugriff auf $BFF0-$BFFF, egal ob lesen oder schreiben, wird das Flip-Flop neu geladen. A15 wird auf 1 gesetzt, wenn der Bereich $BFFC-$FFFF angesprochen wird. Wird jedoch $BFF0-$BFFB angesprochen, dann wird auf A15 = 0 umgeschaltet.
Das 5200er "Betriebssystem" liest jedoch VOR der Initialisierung des Cartridges den Titel und das Jahr des Moduls via $BFE8-$BFFD aus. Damit wird allein durch den Startvorgang mehrfach zwischen beiden Bänken hin- und hergeschaltet, wenn Dein Code das nicht berücksichtigt, wird es grätschen.
Ich würde es so machen wie alle anderen Bankswitching-Carts es auch machen. Der Bereich $8000-$BFFF bleibt immer statisch als "Main-Bank". Dort findet auch die Initialisierung und Umschaltung statt. Der Bereich $4000-$7FFF wird dann in drei Bänken umgeschaltet. Wenn Du dazu ein 22V10 verwendest anstelle eines 16V8, dann kann man das Ganze sehr fein ausdekodieren, so daß als "Umschalt-Adresse" z.B. $4000 allein ausreichend - man verliert nur ein Byte.
Wenn Du beim jetzigen Konzept bleiben möchtest, mußt Du den oben genannten Umstand berücksichtigen.
Achja: Entferne die Widerstände R1-R4 im finalen Release (Empfehlung). Sie werden schlicht nicht benötigt, und wenn Du sie doch haben willst, dann muß R4 ein Pull-Up sein (also gegen +5 Volt).
Bei den Gleichungen hast Du, wenn ich das richtig interpretiere mit den Adressen oben, ein Denkfehler drin, denn das wiederholte Kombinieren und Weglassen von Adress-Signalen wird der Bereich, auf den die Logik anspricht, noch viel größer. Also anstelle:
Code: Alles auswählen
S15 = (A2 & A4 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
# ( A3 & A4 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
# (A2 & A3 & A4 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI)
# ( A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI);
Schreibst Du einfach:
Code: Alles auswählen
S15 = A2 & A3 & A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI;
Analog dasgleiche bei dem CLK Signal für den Flip-Flop:
Code: Alles auswählen
CLK = A4 & A5 & A6 & A7 & A8 & A9 & A10 & A11 & A12 & A13 & !CHI;
Grüße, Jürgen