#module
#deffunc euctosjis val, val
mref sjis, 24 : mref euc, 25
strlen len, euc
i = 0
repeat len
peek code, euc, cnt
// LF → CR + LF
if code = 10 : poke sjis, i, 13 : i++
// 2バイト・半角カナ文字
if code > 127 {
peek code.1, euc, cnt + 1 // 2バイト・半角カナ文字の下位バイト取得
if code = 142 : poke sjis, i, code.1 : i++ : continue cnt + 2 // 半角カナ文字
if code \ 2 = 0 : code.1 -= 2 : else : code.1 -= 97 : if code.1 > 125 : code.1++
poke sjis, i + 0, code + 1 / 2 + ((code >= 223) * 64) + 48
poke sjis, i + 1, code.1
i += 2
continue cnt + 2
// 1バイト文字
} else {
poke sjis, i, code
}
i++
loop
return
#global
dialog "txt", 16, "EUC形式のファイル"
if stat {
notesel buf
noteload refstr
strlen size, buf
sdim buf2, size * 2
euctosjis buf2, buf
mesbox buf2, winx, winy, 5
stop
}
|