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.