「C言語なんでも質問掲示板」で質問させてもらったHELPコマンドなんですが、これが残念な結果となりました。
「入力モードによって文字化けしてしまう」というバグです。
別にいいんじゃないのと思う人がいると思いますが、私は
納得いかないのです。
こちらがそのHELPコマンドのコードです。
void cmd_help(struct CONSOLE *cons)
{
cons_putstr0(cons,"DIR : 中に入っているファイル名を表示します\n");
cons_putstr0(cons,"CLS : コンソールの文字を全て消し去ります\n");
cons_putstr0(cons,"MEM : メモリの情報を表示します\n");
cons_putstr0(cons,"EXIT : コンソールを終了させます(SHIFT+F2で戻せます)\n");
cons_putstr0(cons,"START : コンソールをもうひとつ起動させアプリを実行します\n");
cons_putstr0(cons,"NCST : コンソールを起動させずにアプリを実行します\n");
cons_putstr0(cons,"LANGMODE : 全角/英数の切り替えを行います 例 langmode 0と打つと英数モードになります\n");
cons_putstr0(cons,"VER : OSのバージョンを表示します\n");
cons_putstr0(cons,"CMD : VERコマンドで出てきた文に加え、何かが出てきます\n");
cons_putstr0(cons,"HELP : さっき実行したからわかるでしょ?\n");
return;
}
consから値をとって右に書いてある文字を出力します。
実行結果:
日本語シフトJISモードの場合は正常に文字が出力されました。
問題はそれ以外の入力モードの場合です。
ENGLISH ASCII modeの場合はなんだかよくわからない文字だけ出力されて\(^o^)/
(これはどうしようもないのかな・・・と思います、これは直さないことにします。)
日本語EUCモードの場合も同じような現象が起きました。
今回はこの「日本語EUCモード」の場合でもHELPコマンドの文字出力できるようにしたいのです。
なお偉大なる(こういうとおかしいですが)「30日でできる!!自作OS入門書」によると
#include "apilib.h"
void HariMain(void)
{
static char s[9] = {0xb2, 0xdb, 0xca, 0xc6, 0xce, 0xc4, 0x0a, 0x00};
api_putstr0(s);//sの値を返す
api_end();//return 0の代わり
}//iroha.c参照
そこでなるべくコードを書かずにこの問題を解決する方法を是非教えてください。
お願いします。