Pufff... a la próxima mejor me callo, que se ve que estoy fino fino. A ver... problema resuelto, al menos sobre un ejemplo mínimo que me he montado. Es culpa mía! Por bruto!
Para pasar de sintaxis asMSX a sjasm había, entre otras cosas, hecho un buscar y cambiar de corchetes por paréntesis. Y justamente en el código original está esta línea:
LD HL,((SPCCOMS+$DF20) % 65536)
Que en sintáxis asMSX es LD HL, nn pero en sintaxis sjasm es LD HL, (nn). Y se ve que esta línea estará implicada en procesar comandos PT3. So: perdón!
Otra cosilla, por curiosity. En el fuente asMSX hay alguna línea tal que:
.db $0704*2
Esto, obviamente, supera los 8 bits. Se supone que esto se queda con el byte de menos peso, ¿no?
EDITO: Lo de que funcionara con una BIOS y con la otra no... a saber. Igual ese error provocaba algún salto a una zona baja de memoria y en una BIOS se enredaba y en otra no.