For me (3.3.1 two days old on win32) it was as I said. If I look in .s I see:
.section .rodata.n_.Ld1,"a"
.balign 4
.Ld1$strlab:
.short 0,1
.long -1,15
.Ld1:
.ascii "xmorecharacters\000"
the codepage 0 constant followed by the unicode (1200) constant:
.section .rodata.n_.Ld2,"a"
.balign 4
.Ld2$strlab:
.short 1200,2
.long -1,15
.Ld2:
.short 120,109,111,114,101,99,104,97,114,97,99,116,101,114,115,0
.. which uses "short" to encode the string. .ld1 is passed to the test routine and .ld2 is passed to writeln.
Maybe you didn't writeln the constant so the wide version gets omitted/smartlinked out?