こちらは内部処理が全てSHIFT-JISですが、正常に動きます。
強制SHIFT-JISモードをオンに設定して実行してください。
// SHIFT-JIS版(強制SJISモード)
/* SHIFT-JIS 全文字コード表示プログラム
// テキスト画面がスクロールできないのでページ切り替え
font("Migu 1M")
int fzenhan:// YES=
width(64,,fzenhan)
print "fzenhan=";fzenhan
cls()
if isLocalizeJapan() then {
setFunctionKey(0,"次へ",&h0d)
setFunctionKey(1,"中断",&h1b)
print "半角文字"
} else {
setFunctionKey(0,"Next",&h0d)
setFunctionKey(1,"Break",&h1b)
print "Half-Width Character"
}
print_code0(fzenhan)
//
displayFunctionKey(YES,0,1)
//
while YES
if print_code(&h8100,&h9fff) then break
if print_code(&he000,&hefff) then break
print_head()
break
endwhile
//
// ファンクションキー表示は個数を変えても自動的に前の表示は消えないので、ユーザーが消す必要がある(そうしないと表示が重なる)
displayFunctionKey(NO,0,1)
if isLocalizeJapan() then {
setFunctionKey(0,"終了",&h0d)
} else {
setFunctionKey(0,"End",&h0d)
}
displayFunctionKey(YES,0,0)
int ky
repeat
ky=inkey()
until ky<>0
end
//--------------------------------
func print_head()
if fzenhan then {
print "-code-:-+0-+1-+2-+3-+4-+5-+6-+7-+8-+9-+A-+B-+C-+D-+E-+F-"
} else {
print "-code-:-0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F-"
}
endfunc
func print_skip()
print " : "
endfunc
func str hex4$(h;int)
return (right$("0000"+hex$(h),4))
endfunc
func str hex2$(h;int)
return (right$("00"+hex$(h),2))
endfunc
func printChr(h;int,l;int)
print chr$((h shl 16)or l);
endfunc
func int print_code(st;int,ed;int)
/* 全角文字表示
int i,li,hi
int j
for i=st to ed
hi=i / 256
li=i mod 256
if li=0 then {
print_head()
int ky
repeat
ky=inkey()
until ky<>0
if ky=&h1b then return (YES)
cls()
if isLocalizeJapan() then {
print "全角文字"
} else {
print "Double-Width character"
}
print_head()
}
if li<&h40 then continue:/* 下位8ビットが<$40の文字はない
/* アドレス表示
print " ";hex4$(i);" :";
for j=0 to 16-1
print " ";
int c=(i+j) and &hff
if c<&h40 or c=&h7f or c>=&hfd then { :/* 未定義文字
if fzenhan then {
print "**";
} else {
print "*";
}
} else {
c=(i+j)
print chr$(c); :/* 途中で桁上がりを起こさないことを前提にした処理
}
next
print
i=i+16-1:/* 次のnext +1されるから
next
return (NO)
endfunc
func print_code0(fzenhan;int)
/* 半角文字表示
int li
int j,c
print_head()
for li=&h20 to &he0-1
/* 途中表示しないエリア
if li=&h80 then print_skip()
if li>=&h80 and li<=&h9f then continue
/* アドレス表示
print " ";hex2$(li);" :";
/* 文字表示
for j=0 to 16-1
print " ";
c=li+j
if c=&h7f or c=&ha0 then c='*'
print chr$(c);
if fzenhan then print " ";:/* 全角=半角*2のフォントの時は後ろにスペースを入れる
next
print
li=li+16-1:/* 次のnext +1されるから
next
endfunc
Zipファイル :XBetc.zip
0 件のコメント:
コメントを投稿