iAN sicuramente potrà risponderti in maniera più completa, é decisamente più preparato di me sui SID.
Questi sono i miei due cents.
Non conoscendo il tuo livello parto dalle cose base:
- hai verificato in che zona viene caricato il binario del SID stesso? Se va a sovrapporsi all'area dove risiede il tuo programma basic (da 2048 fino al massimo a 40959) puoi ovviamente riscontrare problemi. A tal proposito ti ricordo che, IIRC, le locazioni 45 e 46 indicano l'ultima locazione di memoria usata dal programma. Se questo é il caso puoi pensare di rilocare la routine analizzando l'assemblativo - buon divertimento! - o eventualmente spostare il puntatore di inizio basic ad una locazione che si trovi dopo il sid (l'ultima soluzione chiaramente ha senso se il sid si trova in una zona bassa della memoria).
- problematica più ostica se, invece, il player sid fa uso di locazioni in pagina 0 (0-255) usate normalmente dal basic. In questo caso é necessaria un'analisi del codice ed una modifica delle locazioni usate come variabili nel player. Tale attività può rivelarsi particolarmente incasinata perché potrebbe essere necessario usare locazioni fuori dalla 0 page: in questo caso le istruzioni che puntano a tali locazioni andrebbero ad occupare un byte in più disallineando tutto il codice.
Una soluzione che ho pensato in questo momento e potrebbe rivelarsi buona in quest'ultimo caso é la seguente: potresti scrivere una piccola routine in assembly che salvi l'intera pagina 0 diciamo a 49152 (va bene qualsiasi altra area di 256 byte libera); a seguito di questo copiare i 256 byte successivi (ancora, qualsiasi altra area di 256 byte va bene) nella pagina 0; chiamare la routine del player; risalvare la pagina 0 nell'area 49152+256 (la seconda area); ripristinare la pagina 0 prendendo i valori dalla prima area (49152). Insomma una sorta di context switch.
Se hai bisogno di una routine di questo genere posso buttartela giù tranquillamente. A sapere quali locazioni vengono modificate si potrebbe "ottimizzarla" per le necessità del sid.