Se puede tener musica de fondo desde BASIC, incluso en modo directo y escuchar mientras programas
La forma más sencilla con goattracker, que permite relocalizar donde se va a cargar la musica es la siguiente (siempre y cuando el SID ocupe menos de 4K)
En las opciones al grabar con F9, dejas todo por defecto menos startaddress, que cambias a $C000, y grabas como prg.
Ahora al principio del programa (lo primero que se ejecuta) pones lo siguiente (podes cambiar el numero de las lineas, pero las 2 primeras tienen que ser las primeras del programa):
10 ifa=1then30
20 a=1:load"transyltest.prg",8,1
30 fori=0to21:readp:poke828+i,p:next
40 data120,169,76,141,20,3,169,3,141,21,
3,32,0,192,88,96,32,3,192,76,49,234
100 sys828
110 print"hola":goto110
Cambiando el nombre del archivo del sid por el que vayas a usar, yo aca use el que viene como ejemplo -Transylvania.
Lo que hacen esas lineas despues es cargar una rutinita en codigo maquina que inicializa el reproductor y lo 'pega' a la rutina de interrupción del sistema, por lo que se ejecuta maas o menos 50 o 60 veces por segundo (dependiendo la máquina).
El sys lo ejecuta y queda la cancion de fondo, solo se para al hacer RUNSTOP/RESTORE. Con sys828 arranca de nuevo.
Para canciones de más de 4K hay que cargarlas en otra parte, preferentemente al final de la ram BASIC, pero ahi hay que poner un par de pokes para modificar punteros y esas cosas. (Y tambien modificar las datas para que la rutina de codigo maquina apunte a la direccion apropiada)
La rtina en codigo maquina es bien sencilla:
* = $033c
sei
lda #<irq
sta $314
lda #>irq
sta $315
jsr $c000
cli
rts
irq: jsr $c003
jmp $ea31