前書 | 新PocketDOS概要 | 新PocketDOS日本語化 | |||||
旧PocketDOS(英) | XT-CE(英) | XT-CE(日) | 旧PocketDOS(日) | コネパク | 日本語入力(FEP) | FAQ and TIPS | 参照・参考 |
2001晩秋、読者の方からmailを頂きました。曰く、月刊ASCIIの2001年4月号に日本語入力の記事が出てて、@niftyのFHPPC/MES14/11180でも話題が出ているとのこと。がああ、不覚。早速ASCIIのバックナンバーを買いに走ったのは言うまでもありません。
DOSエミュレータに日本語入力FEPを組込むこと自体は、日本語化が成功した当初から出来ていました。しかし実際に入力が出来なかったのは、FEP起動キーコードがフックされてDOSまで届かなかったからです。私はFEP側のカスタマイズで起動キーコードをフックされないで受取れるなんらかの組合わせに変更すればいいのだろう、と思っていたのですが、この問題を解決するためにASCII誌に紹介されていた方法は、
FEPをコマンドラインで制御できるFEPCTRLを用いてWXPをON/OFFしよう。(ASCII,Vol25,#4 April 2001 p366 薮内雄実:WindowsCE Fan)
という、虚を突かれたものでした。そら、そんなtool知らなきゃ気付かんわ。
んで早速このtoolの検索にかかったわけですが、あっさり@niftyとベクターにありました。
今やDOS版日本語FEPの入手は大変困難になっています。そのためか件のASCIIの記事ではJ3100用WXPにDOS/Vバッチをあてて、などという方法が紹介されていますが、その記事はどうもWin9X以降にコンピュータ始めた人に向けて書いてあるようです。私は初めに申しましたとおり、「DOSの知識と郷愁持った人」対象にしていますので、組込むべきFEPは当然持ってるものとして、LXerの標準(JKITの高いほうに付いてたから)、WX2+を組込んでみます。
そんな素人臭いマネはプライドが許さない、というのはまあ半分冗談で、これにはれっきとした理由があります。
さて、では実際に組込んでみましょう。今度の例は少々長い前置きが必要です。いままではエミュレータが何処にインストールされていようと、エミュレータの機能により名称固定されているドライブでのお話しかしてこなかったので、誰でも共通だったのですが、今度はファイルシステムリダイレクタので割り当てたドライブを利用しますので、人によってドライブレターやディレクトリ構造が大きく異なります。私は以下の前提で話をすすめていきますので、みなさんは適宜ご自分の環境に読み替えてください。
FEPCTRLは、適当にパスを切った位置に解凍します。必要なのはFEPCTRL.COMだけです。私の環境の場合は、E:\FRというディレクトリにオンラインツールを無雑作に突っ込む習慣があるので、ここにおきます。
KKCFUNK.SYS互換ドライバは、普通ですと起動時に読込むドライバなので、A:\FREEなどconfig.sysからでも見える位置に置くものですが、今回は、FEPのドライバ群と同じ位置、私の例ではE:\WX2\におきます。
LXのフラッシュデバイスにあるJKITによるconfig.sysは、素のままだとこの様な雰囲気ではないでしょうか。
files=20
buffers=20
shell=d:\dos\command.com /p /e:512
rem add by O.S.W
device=a:\jkit\lxjex.sys
device=a:\jkit\lxfont.exe -fa:\jkit\lxfont.ini
device=a:\jkit\lxdspd.exe -fa:\jkit\lxdspd.ini
device=a:\jkit\lxansi.exe
device=a:\jkit\lxemm.exe
device=c:\jkit\lxkkc.sys
rem use only FULL SET
device=A:\wx2\wxk.sys /a1
device=A:\wx2\wx2.sys /a1 /dA:\wx2.dic
着色した最後尾4行が(rem文混じってますが)JKITのフルバージョンに付属のWX2+を組み込んでいる部分です。末尾2行を新規テキストファイルにコピーし、次の様にドライブレターを修正後、wx2.devとでも命名してe:\ドライブのルートにおきます。
device=E:\wx2\wxk.sys /a1
device=E:\wx2\wx2.sys /a1 /dE:\wx2.dic
で問題はLXKKC.SYSですね。勿論これがJKIT版のKKCFUNC.SYS互換ドライバ(dos5.0以上でFEPの組込みに必要)ですが、そもそもPocketDOSのROM-DOSでは動かないJKITからこれだけ持ってくるというのも何ですので、先に上げたものをどれかを使いましょう。LPKKCMIN.SYSまで含めて、どれでも使えることを確認しました。で、KKCFUNC.SYS互換ドライバも一緒に書込んだFEP組込みファイルがこれです。折角ですから(無駄かもしれないけど)できるだけUMBに放り込むべく悪足掻きもしておきます。
e:\wx2.dev
devicehigh=E:\wx2\lpkkcmin.sys
devicehigh=E:\wx2\wxk.sys /a1
devicehigh=E:\wx2\wx2.sys /a1 /dE:\wx2.dic
このdevファイルは、PocektDOSとXT-CE、なんでしたら元のLXやモバDOSでも共通に使えます。
config.sysに組んでしまうのが初級ですが、それには触れません。でま、定番ですがautoexec.batに組んでみます。
PocketDOSの互換OS部分であるROM-DOS6.22では、古の定番ADDDEV/DELDEVが通りますので、10年選手には簡単です。autoexec.batのできるだけ前方でadddevを解凍したディレクトリにパスを切ります。私の環境の場合はLX時代から前述のe:\FR\においてありましたんで、こんなかんじです。
path=e:\fr;%path%
そして、autoexec.batできるだけ後ろに以下の一文を加えます。
adddev e:\wx2.dev
いえ、ほんとにこれだけです。メモリ関連のエラーを出しながらも、下位に常駐します。エラーメッセージが見たくない方はwx2.devの中に記述したWXの常駐位置オプションを削除して下さい。私はEMSドライバの改良に望みを託して、あえてそのままにしています。
コマンドラインに以下の様に入力すれば、日本語入力出来るようになります。
FEPCTRL on[Retune]
以下の様に入力すれば、日本語入力は解除されます。
FEPCTRL off[Retune]
いずれの場合も、on/offは小文字で入力しなければなりません、って…あー、うざったい。なにこれ、普通だったら2キーで済むものを。こういうときはバッチ組んじゃいましょう。勿論私はそれもe:\fr\におくわけです。
FEP起動バッチ FEPON.BAT
E:\fr\FEPCTRL on
FEP停止バッチ FEPOFF.BAT
E:\fr\FEPCTRL off
deldev[Retune]
このコマンドは組込まれたのと逆順でだけドライバを外しますので、それ以上の指定は必要ありません。でも、再び日本語FEPが必要になったときは、
adddev e:\wx2.dev[Retune]
と、ドライバファイルの指定が要ります。
上の操作を分析すれば、FEPを組込んでかつ起動した時ににだけ日本語が打てるんであって、起動してない常駐FEPは単なるメモリのお荷物であるということはすぐ判ります。そこで、FEP起動・停止バッチをそれぞれ以下のようにすれば、その平時の無駄なメモリふさぎを避けることができます。もちろん、そういうマネをする際には、config.sysでもautoexec.batでもFEPを組込んではいけません、無駄に重複してしまいますので。
FEP組込起動バッチ FEPADD.BAT
adddev e:\wx2.dev
FEPCTRL on
FEP停止削除バッチ FEPDEL.BAT
FEPCTRL off
deldev
さらにさらに。そもそも日本語起動してどうするのかといえば、フツー、コマンドラインに流れ去る日本語なんか書きたいわけでなく、アプリの内部で日本語を記録したい訳です。ですから、日本語入力が必要なアプリケーションの起動バッチとして事前のFEP組込みから事後の取り外しまで全部一連に書いてしまうのが一番手間いらず、ということになります。以下に示すのはフリーウエア日本語エディタの定番の一、JEDの日本語起動バッチの例です。
JED日本語編集バッチ JEDFJ.BAT
adddev e:\wx2.dev
FEPCTRL on
jed %1 %2 %3 %4 %5 %6 %7 %8 %9
FEPCTRL off
deldev
「JED」の位置にお好みのアプリケーションの起動コマンドを書きかえれば、そのアプリ用の日本語入力バッチが出来上ります。最初からバッチファイルで起動するタイプのアプリケーションでは、そのバッチの前後をFEPADD.BATとFEPDEL.BATではさみ込むように手を加えてしまいましょう。
上級技は、確かに目論見どおりに動きはするんですが、どうもその後エミュレータが不安定になって、何かの拍子(気難しいアプリの起動や、同バッチの2度目以降の起動など)にエミュごと落ちやすくなる様な気がしなくもありません。そこで、FEP自体はautoexec.batで組込んで捨置き、次例の様にアプリとFEPの起動だけ連携させるのが実用的かもしれません。
JED日本語編集バッチ JEDJ.BAT
FEPCTRL on
jed %1 %2 %3 %4 %5 %6 %7 %8 %9
FEPCTRL off
本物のAT互換機上でも、PC-DOS7.0ではADDDEV/DELDEVが走りません。setverで騙してもだめです(自分のsetverにadddevが登録されていたのを発見して思い出しました)。代わりに(?)純正でdynaloadというほぼ同用途の外部コマンドが用意されていて、こちらが使えます。但し、どうもこのdynaload、デバイスを組むだけで外せないようです。となると、ROM-DOSの場合の「中級」、つまりautoexec.batで組み込む事しかできなさそうです。その場合の書式は、autoexec.batできるだけ後ろに以下の一文を加えます。
dynaload e:\wx2.dev
HP200LX日本語化キット ユーザーズマニュアル WXII+ Ver2.71 MIFES-mini Ver 2.31 p.47〜 付録7.起動オプション
WX2??.SYSのパラメータ
(WX2??.SYSのデバイス行およびWX2SYS.INIの OPTION= で有効です)パラメータ パラメータ指定時の解釈 パラメータ未指定時の解釈 /A{?1} 使用する拡張メモリ種類1,2,3
?1 拡張メモリ種類
1 EMS
3 EMS
5 EMS+UMB使用しない /D{?1} 辞書パス名指定
?1 辞書パス名辞書パス名 A:WX2.DIC /D*{?1} システム辞書パス名指定
?1 システム辞書パス名辞書はひとつだけ使用する -中略- /INI={?1} 環境ファイル名指定
?1 環境ファイル名環境ファイル名 WX2??と同じディレクトリのWX2SYS.INI
なんじゃそら、と気づかれた方は鋭いですが、これでいわゆる「ママ」なんです。埒があかないので、WX3のマニュアルを引っ張り出してみました。
●WX3??.SYSに付加する起動オプション
<WX3??.SYSのコマンドラインおよびWX3SYS.INIの option= で有効なもの)パラメータ パラメータ指定時の解釈 パラメータ未指定時の解釈 /A{n} 使用する拡張メモリ種類1,3,5
n=拡張メモリ種類
1 EMS
3 EMS
5 EMS & UMB使用しない /D{n} 辞書パス名指定、辞書パス名
n=辞書パス名C:WX3AI.DIC /D*{n} システム辞書パス名指定
n=システム辞書パス名辞書はひとつだけ使用する -中略- /INI={n} 環境ファイル名指定
n=環境ファイル名環境ファイル名 WX3SYS.INI -後略- 日本語フロントエンドプロセッサWXIII Ver3.0 forDOS/V ユーザーズマニュアル p.284〜 APPENDIX
●WXK.SYSに付加する起動オプション
<WXK.SYSのコマンドラインでのみ有効なもの)パラメータ パラメータ指定時の解釈 パラメータ未指定時の解釈 -前略- /A{n} 使用する拡張メモリ種類1,2,3
n=拡張メモリ種類
1 EMS
2 HMA
3 EMS+HMA
5 EMS & UMB使用しない
…これまた困ったものですが、すこしは何かが見えてきました。基本的にマニュアル作成時の手抜き事故で、またWXn??.SYSはHMAにいかれないんでこういう表記になるんですね。しかし、安全牌なUMBを単独で使うオプションが見当りませんし、別の場所ではこんな記述も。
同ユーザーズマニュアル p.9 1-2.WXIIIの特長
- ・EMS/HMA対応
- EMS拡張メモリボ−ド(Ver4.00以降)およびHMA拡張メモリボードに対応します。EMSボードを使用した場合約20KB、HMAを使用した場合は約10KB以下のユーザーズメモリで動作し、大容量のアプリケーション・ソフトウェアと組み合わせて使用できます。なお、DOS5.0でDOS=HIGHの指定をした時には、HMAは使用できません。
・拡張メモリ同ユーザーズマニュアル p.139 基本ユーティリティ WX3SET
- EMS
- EMS拡張メモリ(Ver4.00以降)を使用されている方は、「使用する」を選択してください。WXVが使用するユーザーズメモリを約20KB以下にすることができ、大容量のアプリケーション・ソフトウエアと組み合わせて使用できるようになります。
- HMA
- HMA拡張メモリを使用されている方は、「使用する」を選択してください。WXVが使用するユーザーズメモリを約10KB以下にすることができ、大容量のアプリケーション・ソフトウエアと組み合わせて使用できるようになります。 ただし、DOS5.0でDOS=HIGHの指定をしたときは、HMAを使用できませんのでご注意ください。
…やはりUMBに逃がせるとは書いてありません。また、DOSのメモリ管理の簡単なおさらいをしてみると、こんな感じです。
メモリ領域 | 概要 | 適応 |
---|---|---|
ユーザーズ | 最下位640KB | 8086以降 |
UMB | 640KBから1MBまでの384KBのシステムメモリのうち未使用領域 | 8086以降 |
EMS | 640KBから1MBまでのどこかに16もしくは64KBの窓をあけ、 別途用意したメモリ領域をバンク切り替えで利用 | 8086以降 |
XMA | プロテクトモードで利用可能な1MB超領域 | 80286以降 |
HMA | 1MB超XMA領域の最初の64KB | 80286以降 |
EMA | HMAより後ろ | 80286以降 |
つまり、CPUが80186エミュでEMSがver3.2では、やはりWXはどの道どこにも逃れようがないのでした。
戻る | 進む |