この章は、鵜川さんにより書かれた、 Linux 98 コンソールドキュメント ver 1.3.3 を、 PC9800HOWTO 用に加工し、さらに井伊が改変したものです。
現在 Linux/98 では以下の機能が動作しています。
本家と同様に使えるはずです。
PC-9800 シリーズでは、AT 互換機に比べて V-RAM が小さいので、ス クロールアップは最大で1画面分しかできません。これについては、 今後改善する予定です。
本家と同様に使えるはずです。 各文字の2バイト目まで読み出せるデバイスは、今後作る予定です。
PC-9800 シリーズでは背景色の表示ができませんので、背景色は無視 されます。
しかし、cursis ライブラリを使用したアプリケーション等では、よく 背景色をつけ、文字を黒で表示するようになっています。これではな にも表示されませんので、この時は、文字を黒に、背景を白にするよ うにしています。
Linux(98) ではコンソールで SJIS、EUC、JIS の文字コードをサポー トします。 kon 等を使う必要はありませんし、使わないでください。 SJIS、EUC はエスケープシーケンスで切り換えます。エスケープシー ケンスは次のとおりです。
EUC-JP ESC [ 9 8 ; 0 ] raw ESC [ 9 8 ; 1 ] SJIS ESC [ 9 8 ; 2 ]EUC-JP では、半角かなは使えますが、補助漢字は使えません。また、 1バイト目がJIS-X-0201 へのシングルシフト 0x8E のときは、 JIS-X-0201 のマップを使います。
SJIS では 2バイトの 98 文字も表示可能ですが、半角の 98 文字を 表示したときは、同じ文字が2個表示されます。今後改善の予定で す。
raw は本家互換です。全て1バイトの文字として扱うため、漢字は表 示できません。
また、 JIS は、一部 iso-2022-jp の仕様と重なっています。 JIS はEUC-JP、raw、SJIS のどのコードが選択されていても次のエスケ ープシーケンスのどれかで JIS コードのモードになります。
ESC $ @ ESC $ B <!-- ESC $ ( D されていても次のエスケープシーケンスのどれかで JIS コードのモードになりま す。 ESC $ @ ESC $ B ESC $ ( D これらは ... とありますが、 "ESC $ ( D" はけしといてください。よく調べると、これはハン グルか何かでした。そのうちカーネルもあわせる予定です。 鵜川 始陽, seraphim 1860, 1998.11.11 -->これらは iso-2022-jp では、それぞれ 78 年 JIS 、 83 年 JIS 、 90 年 JIS を表わしますが、 PC-9800 シリーズの漢字ロムが 78 年 JIS になっているので、上のどのエスケープシーケンスでも 78 年 JIS になります。
本家同様、 UTF-8 も使えるはずです。ただし、漢字は表示されませ ん。
これらの属性を保存、復元するエスケープシーケンスとして、
ESC [ 9 8 ; 1 0 ; 1 (保存) ESC [ 9 8 ; 1 0 ; 2 (復元)を用意しています。
コンソールは、エスケープシーケンスでない文字について、まず2 バイト日本語か、制御文字かを調べ、そうでなければ1バイトの半 角文字として処理します。本家に比べて、 JIS-X-0201 のマップ が増えています。 JIS-X-0201 のマップでは、JIS-X-0201 で定義されていない部分は
デフォルトは G0 が JIS-X-0201 のマップで G1 が VT100 のグラフ ィック文字のマップになっていて、G0 が選ばれています。
PC-9821 シリーズではコンソールで 30 行表示することができます。
この機能を使うには、
また、
SJIS で 2バイトの半角 98 文字を表示したときは、同じ文字が2 個表示されます。
PC-9821 シリーズの 25 行モードで X Window の 480 ラインサー
バを起動し、終了したあと 30 行モードになり、画面下にゴミが表
示されます。また、
kon を立ちあげると、画面に何も表示されなくなります。立ち上 げないでください。もし立ち上げてしまったときは、
exit [RETURN]と入力したあと、仮想コンソールを切り換えてください。
現在 Linux(98) では以下の機能が動作しています。
Linux(98) では、 PC-9800 シリーズのキーの、ウィンドウズキー 以外のすべてのキーが使えます。左右のシフトの区別はできませ ん。個人的なターゲットのマシンが PC-9801DA のため、今後対応 の予定もありません。
Num Lock デフォルトではありません。常に押されていない状態です。 キーマップを変えて Num Lock を作っても LED は点灯しません。
キーボードからコンソールの漢字の文字コードを切り変えること ができます。この機能を表すキーシンボルは、 0xfd?? です。?? の部分は
00 EUC-JP 01 raw 02 SJISです。それ以外の指定はできません。
デフォルトで、いわゆる半角かなのコードを入力できます。かな キーをつかいます。チルダとバッククォートが入れかわっている のは、 linux-1.0 を移植された鵜飼さんの趣味によるものです。 コンソールの文字コード切り変えキーは vf.1 〜 vf.3 に割り当 てられています。(変更、削除される恐れがあります)
注意:バージョンによっては ESC キーが ESC に割り当てられて
いないものがあります。 CTRL +
デフォルトでは、Num Lock はありません。常に押されていない 状態です。
キーマップを変更するには loadkeys の98版を使います。ただ し、CAPS と GRPH は他のキーと動作が違うので注意してくださ い。
このドキュメントは、このあたりの用語等をほどんど何も知らな いまま書いていますので、変なところがいっぱいあると思います。 また、嘘もいっぱい書いていると思いますので、気になったとこ ろがあれば指摘していただけるとありがたいです。
短かくするつもりだったのに長くなってしまいました。
bootディスクから立ち上げる(RAMディスクでインストール)と確実にキーボードが 動きます。
kernal= の所で、bootディスクと同じように パラメータを指定しましたが、 改善が見られません。
drivers/char/pc_keyb.h の 80行目
#define KBD_REPLY_RESEND 0xFE /*.....
とあるのを
#define KBD_REPLY_RESEND 0xFC /*...
^
に変更してみてください。
keyboard timeout が出た後に、 キーボードを物理的に接続し直す(一旦はずして、もう一度つなぐ) とどうなるでしょうか?
本体: PC-9801 FA /U2 CPU: MELCO EUF-EP (Am5x86) SCSI: Logitec LHA-301
ハードウエアロックだと、現在のルーチンでは、 正常に動作しない可能性があります。 # ハードウエアロックの機種で、Linux/98 を動かせるのは、 # PC-9801VX の CPU を載せ換えた場合しか思いつかなかったので、 # 全く考慮していませんでした。 で、ハードウエアロックの場合、 pc_keyb.c の中の、send_data という関数を、 何もしないで 0 を返す関数にしてください。 ただし、ハードウエアロックの場合は、 バーチャルコンソールを切り替えた場合に、 caps や カナの状態と、内部で保持している状態に 矛盾が生じる可能性があります。 投稿者:藤田さん