#module
#deffunc hiratokata val
mref string, 24
mref rstr, 65
repeat
wpeek chk, string, cnt
// 終了
if chk = 0 : chk = cnt : break
// 全角の場合
if (chk & $FF > 128) & (chk & $FF < 160) | (chk & $FF > 223) {
// ひらがなの場合
if (chk & $FF = 130) & (chk >> 8 >= 159) & (chk >> 8 <= 241) {
// カタカナ1バイト目
chk++
// ひらがなとカタカナの差95だけずらし、「ム」以降は1戻す
chk -= (95 - (chk >> 8 >= 222)) << 8
}
wpoke rstr, cnt, chk
continue cnt + 2
// 半角の場合
} else {
poke rstr, cnt, chk & $FF
}
loop
poke rstr, chk // ゴミ表示を防ぐ
return
#global
sdim data, 128
font "MS 明朝", 16
data = "12345あガさダナパマヤらゎワゐヲゑンヴヵヶーーAbCdEfG"
hiratokata data
mes "元 " + data
mes "片仮名 " + refstr
stop
|