Buenas! Gracias por los comentarios, assembler. Efectivamente, creo recordar que asMSX se comporta como tú dices. Sin embargo, parece que en sjasm no es así. Igual hay alguna forma de decirle que a partir de C000 es RAM y el resto es ROM, de forma que no te cree un fichero que lo englobe todo. Ni idea.
Supongo que la forma natural de trabajar con sjasm es usar los MAP, y así lo hacía, pero no entendía por qué al añadir el código de SapphiRe me petaba. Ahora ya lo sé, mea culpa, problema solucionado. Os cuento, por si os interesa. En la declaración de variables del replayer PT3 tenía algo parecido a esto:
MAP 0c000h
VAR1 # 3
VAR2 # 5
VARS:
VAR3 # 2
VAR4 # 3
Con lo que esperaba que VAR1=0c000h, VAR2=0c003h, VARS=0c008h, VAR3=0c008h, VAR4=0c00ah. Sin embargo, lo que obtenía era lo que esperaba salvo que VARS=0c000h.
Error de novato: el valor de VARS se asigna según el contador de direcciones general, mientras que el resto se asigna según el MAP. Solución: hacer
VARS # 0
Lo dicho, una chorrada, resultado de hacer un “buscar y cambiar” a saco para convertir el código asMSX de SapphiRe al sjasm que necesitaba.
Disculpad las molestias! :-)
En cualquier caso, los que trabajáis con sjasm, ¿usáis MAP para definir la zona de variables en RAM al programar una ROM?