Ich hätte jetzt mal vermutet, dass der SIDkick pico sich beim Lesen der Adressen ab $D400 wie ein ROM verhält, man somit mit SYS54301 ein Maschinenprogramm starten kann.
Der SID hat aber nur 5 Adressleitungen, man hat also nur 32 Byte im Adressraum zur Verfügung. Gibt es da eine Art Bankswitching, das zwischen kleinen 32 Byte-Bänken umschaltet (stelle ich mir ziemlich frickelig zu programmieren vor) oder ist in den 32 Byte ein Loader drin, der Programmdaten des Menüs vom RPi pico in den C64-Speicher lädt und von dort aus das Menü im Ganzen ausgeführt werden kann oder eine andere Lösung ?
Im SID-Adressraum verhält sich der SKpico erstmal so, wie ein SID (Read/Write Register, Werte kann man auch bei Write-Only Registern für kurze Zeit zurücklesen etc.) -- außer bei $D41D bis $D41F. Liest man diese Adressen liefert es die Bytes $4c, $00, $d4zurück (das tut erstmal nichts, diese Register sind normal nicht belegt) -- die 3 Bytes ergeben zusammen ein JMP $D400.
Bei einem SYS54301 liest die CPU diese 3 Adressen nacheinander und der SKpico erkennt das und geht in den "Transfer-Modus". Bei dem wird zwischen $D400 und $D40D on-the-fly erzeugter Code eingeblendet, der im Prinzip LDA #value STA $addr in einer Schleife ausführt. Damit wird ein PRG in den Speicher kopiert und Trampolin-Code in den Kasettenpuffer. Macht der große SIDKick genauso -- Config-Tools zum Laden von sonstwoher sind mir zu umständlich