最初の文字コードで判別できます。
hsp3utf.asファイルを参考にさせていただくと
125行目あたりの
poke messg,0,a
poke messg,1,0
if a>=128 {
poke messg,1,peek(mestmp,mescur)
poke messg,2,0
mescur++
}
変数aが1文字目で、128(16進数だと0x80)以上ならば2バイト文字として
あつかう形になっています。
これをUTF8に改造させていただくと
// 0〜127(0x00〜0x7F)までは1バイト文字
poke messg,0,a
poke messg,1,0
if a>=194 {
// 2バイト文字(0xC2以上は2バイト以上)
poke messg,1,peek(mestmp,mescur)
poke messg,2,0
mescur++
}
if a>=224 {
// 3バイト文字(0xE0以上は3バイト以上)
poke messg,2,peek(mestmp,mescur)
poke messg,3,0
mescur++
}
if a>=240 {
// 4バイト文字(0xF0以上は4バイト以上)
poke messg,3,peek(mestmp,mescur)
poke messg,4,0
mescur++
}
if a>=248 {
// 5バイト文字
poke messg,4,peek(mestmp,mescur)
poke messg,5,0
mescur++
}
if a>=252 {
// 6バイト文字
poke messg,5,peek(mestmp,mescur)
poke messg,6,0
mescur++
}
このような形になります。
ちなみに5バイト文字や6バイト文字はUTF8の定義上としては準備されていますが
実際に使うことはないかと思います。